Haga que el control deslizante de zoom del Microsoft Ergonomic Keyboard 4000 y 7000 se desplace hacia arriba y hacia abajo, en 14.04 (Trusty)


29

Traté de usar este tutorial para hacer que el interruptor de desplazamiento funcione en mi Microsoft Natural Ergonomic Keyboard 4000. Pero me enfrento al siguiente error:

sudo: /lib/udev/keymap: command not found

Tengo la versión de udev 204-5ubuntu20.2(la versión que se encuentra en Trusty)

Noté que esta versión no incluye la keymapherramienta. Pero me doy cuenta de que las udevversiones más grandes ( que están disponibles para Debian, por ejemplo ) incluyen esta herramienta.

¿Podría alguien explicarme esta diferencia? =) ¿Y qué debo hacer en este caso: instalar el paquete del repositorio de Debian?


¿Desea resolver este problema utilizando udev o está bien con las alternativas? Sería un poco reacio a instalar paquetes udev debian sin empaquetar en ubuntu.
trabajoin

cualquier alternativa es bienvenida =)
Dmitry Belaventsev

¿ Esto ayuda?
trabajoin

¿Qué hace la keymaputilidad que ya no se envía de todos modos?
mate

He actualizado mi tutorial (al que se ha vinculado) para incluir la respuesta a continuación. Gracias :-)
Terence Eden el

Respuestas:


27

Si miras /lib/udev/rules.d/60-keyboard.rules, verás que todo ha sido complicado. Esto es solo parte de la fusión de udev en systemd que ha continuado.

Todas las reglas de hardware se compilan en una base de datos de hardware binario. Estos siguen un formato realmente extraño. Las reglas existentes para teclados que se envían con udev viven en /lib/udev/hwdb.d/60-keyboard.hwdb. Mire eso pero no lo edite (las actualizaciones probablemente lo sobrescribirán).

Para agregar sus reglas personalizadas, crearemos un nuevo archivo /etc/udev/hwdb.d/ejecutándolo sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb. Todo lo que necesita hacer es pegar lo siguiente:

Si está utilizando el modelo 4000:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Si está utilizando el modelo 7000:

keyboard:usb:v045Ep071D*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Esto está adaptado del tutorial que publicaste, por lo que es posible que necesites modificarlo según tu teclado. Mire lsusby asegúrese de que el vendor:productcódigo anterior (as v####p####) sea correcto. No funcionará si no coinciden.

Una vez que haya terminado de editar, vuelva a compilar el hwdbque usa udev:

sudo udevadm hwdb --update

Y luego es posible que deba volver a enchufarlo. Si es un teclado PS / 2, es posible que deba reiniciar. En algunos casos, también necesita reiniciar.


Gracias por la respuesta! hwdb.ddir está vacía, rules.dsólo contiene 3 archivos ( 70-persistent-cd.rules, 70-persistent-net.rules, README). Entonces, ¿quisiste decir que debo crear un nuevo archivo? ¿O debo tener algunos para editar?
Dmitry Belaventsev

Sí, deberías estar creando un nuevo archivo. Las reglas de teclado existentes están establecidas, /lib/udev/hwdb.d/60-keyboard.hwdbpero las modificaciones se perderán después de las actualizaciones de udev.
Oli

2
desafortunadamente, no hace que el botón de destino funcione
Dmitry Belaventsev

1
@matt, puede poner varios alias como aquí
user.dz

1
En lugar de enchufar | desenchufar se puede usar udevadm trigger /dev/input/by-id/usb-Microsoft-*para activar la actualización
Alexandr Priymak

37

Ubuntu 15.10 : no tuve éxito con las respuestas anteriores.

He utilizado con éxito un enfoque similar a los anteriores: se mencionaron instrucciones en /lib/udev/hwdb.d/60-keyboard.hwdb.

He creado un nuevo archivo hwdb usando sudo nano /etc/udev/hwdb.d/70-keyboard.hwdb :

# Microsoft Natural Ergonomic Keyboard 4000 - reasignar acercar / alejar a la página arriba / abajo
evdev: input: b0003v045Ep00DB *
 KEYBOARD_KEY_c022d = pageup
 KEYBOARD_KEY_c022e = pagedown

después de eso he corrido

sudo udevadm hwdb --update
sudo udevadm control --reload

y volvió a enchufar el teclado y funcionó.

Para el uso del modelo 7000 evdev:input:b003v045Ep071D*


99
Esta es la respuesta correcta para Ubuntu 16.04
Greg Dan

2
Gracias. De hecho, parece que las keyboard:definiciones ya no funcionan en Ubuntu 1604 y debe serlo evdev:. Incluso hay una asignación predeterminada /lib/udev/hwdb.d/60-keyboard.hwdbpara el modelo 4000 que los asigna a zoomin/ zoomout; sin embargo, X ignora por completo los eventos (xev no muestra nada), por lo que aún necesita un cambio de configuración como este.
wump

2
Los b0003Parece que es por bus específico (por lo que sólo podría funcionar en algunos puertos USB). Si algo así b*v045Ep071D*funciona, eso podría ser mejor.
Oli

3
Gracias, está funcionando en Ubuntu 16.04 (en evdev:input:XXXlugar de keyboard:usb:YYY). También puede usar una asignación diferente en lugar de pageup/ pagedown. Por ejemplo, estoy usando scrollupy scrolldownpara hacer desplazamiento real.
Martin Grůber

1
También funciona en Kubuntu 17.10
OOPMan

7

La solución original publicada por Oli no funcionó para mí, pero funciona después de que cambié los números clave "0c022d"y "0c022e"a "c022d"y "c022e". Estoy usando un modelo 4000, por lo que no puedo verificar si se necesita el mismo cambio para el modelo 7000.

Para repetir la respuesta de Oli, esto es lo que hice: crear un nuevo archivo ejecutando sudo nano /etc/udev/hwdb.d/61-keyboard-local.hwdb. Pegue las siguientes líneas en el archivo (para el modelo 4000):

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Después de editar el archivo, recompile el hwdb que usa udev:

sudo udevadm hwdb --update

Luego vuelva a enchufar el teclado.


Gracias. Por extraño que parezca, también necesitaba realizar este cambio ahora, y también se requirió un reinicio después de todo (no solo volver a enchufar).
mate

funcionó para mí en Ubuntu 15.04. ¡Gracias!
Pierre

Esto funcionó para mí en Debian Jessie 8.5.
Nicolás

Quiero comprar un teclado económico, y tengo curiosidad, ¿funciona con 16.04 LTS? O no hay un problema como este allí.
Arpad Horvath

4

Agregando a la respuesta de Oli, si desea un desplazamiento de línea como el de un mouse, puede modificar pageup / pagedown a up / down en su regla personalizada. Me gusta:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down

Por cierto: Arriba / Abajo está predeterminado en 18.04.
LinuxLuigi

1

Una buena solución está aquí , y solo puedo agregar que puede asignar las teclas a teclas X no utilizadas de esa manera:

$ cat /lib/udev/rules.d/95-keymap.rules
...
ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d katakana 0xc022e katakanahiragana
...

Los nombres adecuados para usar en lugar de katakanase pueden encontrar aquí .

Después de reiniciar ;-) puede probar eso zoominy las zoomoutclaves se asignan con éxito, y también para encontrar los nombres correctos de las claves (para usar en rc.xmlOpenBox WM, por ejemplo) usando xev:

$ xev
...
KeyRelease event, serial 46, synthetic NO, window 0x3c00001,
    root 0x291, subw 0x0, time 1492891, (-261,-61), root:(573,380),
    state 0x0, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
...

Ahora puede conectar nuevas claves a acciones completamente arbitrarias. En mi caso del administrador de ventanas OpenBox, utilicé algo como esto:

$ cat <whatever>/rc.xml
...
<keybind key="Katakana">
  <action name="Execute">
    <command>volume_up.sh</command>
  </action>
</keybind>
<keybind key="Hiragana_Katakana">
  <action name="Execute">
    <command>volume_down.sh</command>
  </action>
</keybind>
...
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.