¿Cómo hacer que funcione el deslizador de zoom del Microsoft Natural Ergonomic Keyboard 4000 (y otros botones)?

21

Yo uso un Microsoft Natural Ergonomic Keyboard 4000 en Ubuntu 10.10. Las teclas multimedia (Volumen, Reproducir / Pausa) funcionan, el botón Correo y Calculadora también.

Ahora me encantaría usar el control deslizante de zoom, si fuera posible me gustaría usar el desplazamiento de página con eso. ¿Hay alguna forma de habilitar eso?

Martin Ueding
fuente
2
Ver askubuntu.com/questions/471802/… . Las respuestas anteriores aquí pueden ser obsoletas.
mate

Respuestas:

18

Cree el archivo /etc/udev/rules.d/98-ms-ergo.rulescon los siguientes contenidos:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

Esto asignará la tecla de zoom a página arriba / página abajo sin cambiar los archivos instalados /lib/udev.

Una vez agregado, solo necesita desconectar y volver a conectar su teclado para que comience a funcionar.

Kees Cook
fuente
Esto funcionó para mí sin problemas usando Fedora 19.
Rubens Mariuzzo
Para Microsoft Ergonomic 7000, el modelo parece ser 071d (según lo obtenido por lsusb) en lugar de 00db, por lo que si alguien intenta esto para 7000, probablemente deberían reemplazar 00db con 071d en el archivo anterior. De todos modos, en mi caso (Ubuntu 14.04), eso no funciona, tal vez esté relacionado con el hecho de evtestque el control deslizante de zoom no activa ningún evento, a diferencia de la mayoría de las otras teclas del teclado Ergonomic 7000 que sí lo hacen. No estoy seguro de eso como el botón de Web / Inicio no muestra ninguna salida en evtestcualquiera de los dos - a pesar de Ubuntu hace recogerlo.
mate
1
Tampoco puedo hacer que el 4000 funcione en 14.04. No ver eventos en xev.
Michael
Probé esto el 14.10, y no funcionó.
Rubens Mariuzzo
@Cocoabean xevtampoco funciona para mí. Lo que hace es evtest /dev/input/event3. Si event3no tiene ninguna reacción a esta clave, pruebe con otros eventos ( event[0..9]).
Nicolás
9

En Xubuntu 13.10 (quizás también en Ubuntu 13.10), se puede hacer lo mismo de la siguiente manera:

Editar asignaciones clave en /lib/udev/hwdb.d/60-keyboard.hwdb:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

correr sudo udevadm hwdb --update

Reiniciar.

Konstantin K.
fuente
1
Trabajó el 14.04 para mí
Amir Uval
Mi 60-keyboard.hwdb tenía una entrada existente para MNEK4K, con teclado: usb: b0003v045Ep00DB *. Cambiar las acciones no funcionó. Agregar una nueva entrada con esas acciones funcionó.
Alrek
Funcionó de maravilla el 16.04. Utilicé "arriba" y "abajo" (en lugar de "pageup" y "pagedown") para obtener un desplazamiento más suave al navegar por las páginas web. ¡Muchas gracias!
Pierre
Puede asignar katakanay katakanahiragana(o cualquier otro código clave no utilizado desde hal.freedesktop.org/quirk/quirk-keymap-list.txt ) en lugar de alias a las claves existentes. De esta manera, puede reconocer y usar las teclas en combinación con modificadores para alternar volumen, idioma, tamaño, etc. (configure su administrador de ventanas para disfrutar de dos nuevas súper teclas).
dmitry_romanov
4

Para configurar el teclado ergonómico 4000 de Microsoft, debemos crear un archivo de configuración que contenga la declaración del teclado y los registros para asignar las teclas.

Para hacerlo, hay tres tipos de información que debemos determinar:

  • Tipo de teclado
  • La tecla scancodeque es la tecla real en el teclado.
  • La tecla namepara asignar la funcionalidad deseada a la tecla seleccionada

Primero encuentre el tipo de teclado:

En la terminal ejecuta el siguiente comando:

lsusb 

la salida determina el tipo de teclado:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

Aparece después ID. En este caso lo es045e:00db

En segundo lugar, busque el código de escaneo y el nombre de la clave.

Para determinarlos, utilizamos el evtestprograma que cierra la información del evento de un dispositivo específico en la terminal:

evtest

Si no tiene el programa, instálelo ejecutando el siguiente comando:

sudo apt-get install evtest

Al ejecutar el evtestprograma obtenemos el siguiente resultado:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

La salida se explica por sí misma, inserte el número apropiado para el teclado, que aquí es el número y 3luego presione enter:

Al hacerlo, generará mucha información en el terminal y terminará en las siguientes líneas:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

Ahora, con cada pulsación de tecla en el teclado, descarga la información de la tecla. Por ejemplo, la tecla Slash al lado del Mayúsculas derecha muestra:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

La primera línea del registro contiene la información sobre la tecla real en el teclado, como la scancodeque viene después del valor. En este caso es 70038

La segunda línea contiene la información de funcionalidad asignada, como el nombre de la clave. En este caso es SLASH . Examine las otras claves para encontrar sus nombres apropiados.

En pocas palabras:

  • Nuestro tipo de teclado es: 045e: 00dB
  • El código de escaneo de la tecla Slash es: 70038
  • El nombre de la clave para asignar es SLASH

Después de recopilar la información necesaria, creamos el archivo de configuración:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

Presione ipara activar el modo Insertar y escriba lo siguiente:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Guarde y salga presionando y escapeluego escribiendo :wqy presione enter.

Luego ejecute los siguientes dos comandos para que la configuración surta efecto:

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

Finalmente desconecte el teclado y vuelva a enchufarlo.

Algunas notas sobre el archivo de configuración:

  • El formato del archivo debe ser exactamente como se muestra, el espacio antes de mapear los registros es crítico.
  • En lugar de sudoeditque pueda usar cualquier otro editor de texto, solo recuerde seguir el formato exacto del archivo como se explicó anteriormente.
  • Hay dos caracteres agregados al tipo de teclado: vy pque representan proveedor y producto. También son importantes.
  • El tipo de teclado se escribe en mayúscula en el archivo de configuración. Nuestro tipo de teclado era 045e: 00db pero en la configuración insertamos v045Ep00DB *
  • El código de escaneo de la clave viene justo después KEYBOARD_KEY_
  • El nombre de la clave aparece en minúsculas en el archivo de configuración
  • Puede personalizar prácticamente todas las teclas de su teclado siguiendo este tutorial.
varDumper
fuente
3

El problema es que el controlador evdev ignora los códigos de clave> 255 .
La solución, gracias a Marco Chiappero :

1) debe definir todas las reasignaciones que necesita (en forma de 
lista "scancode keycode") y colóquelos en un archivo bajo "/ lib / udev / keymaps /" 
(por ejemplo, creé logitech-lx710-cordless allí). Puedes encontrar el
scancodes usando evtest ("sudo evtest / dev / input / eventX", donde X es su 
dispositivo de teclado Tenga cuidado, a veces estas teclas adicionales se exponen a través de
un dispositivo diferente o la interfaz de su mouse: ej. evento3 -> kbd, evento4 ->
mouse y teclas adicionales). Aquí algunos resultados de muestra:

Evento: hora 1294153475.909379, tipo 4 (Misc), código 4 (ScanCode), valor c1028
"c1028" es el valor del código de escaneo que va a colocar en su archivo de mapa de teclas, luego 
tome un número de input.h como se describió anteriormente y conviértalo a 
hexadecimal Luego escriba el par de remape en su archivo, tal vez con un descriptivo
comentario, como este:

0xC1028 0x9a # botón de rotación

Iterar para cada tecla> 255.

2) tienes que decirle a udev que aplique este archivo de reasignación cada vez que se encuentre 
su teclado, edite el archivo "/lib/udev/rules.d/95-keymap.rules" agregando 
la regla de udev que coincide con tu HW. Por favor no me pidas que defina una regla para
tú. 
NOTA: puede aplicar inmediatamente su archivo de mapa de teclas escribiendo usted mismo 
"sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE" y 
verifíquelo con evtest una vez más.

Ahora, puede usar el editor de accesos directos de Gnome para ver que las teclas están ahora 
utilizable dentro de X y crea nuevos atajos. Sin embargo, puede suceder que no
keysym se asigna a ese código clave (por lo que verá 0xXY en lugar de XF86Foo). 
Puede ver las asignaciones actuales a través de xmodmap -pke, guarde la salida en un 
archívelo y edítelo si lo necesita (una lista completa de códigos de claves está disponible en
"/ usr / lib / X11 / XKeysymDB").
Una vez que haya agregado los keyyms a esas teclas que reasignó, puede guardar este archivo
como ~ / .Xmodmap (o como / etc / X11 / Xmodmap si desea aplicar a todos los usuarios).
desgua
fuente
Me imagino que los botones que quiero son c022d y c022e, pero no puedo encontrar la entrada. H.
Martin Ueding
Como lo entiendo (pero no puedo prueba porque no tengo este hardware) que realmente no necesita input.h, sólo tiene que editar este archivo: /lib/udev/rules.d/95-keymap.rules. (Puede estar aquí en launchpad, puede encontrar personas con el mismo hardware, por lo tanto, más capaces de ayudar a bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 ). ¿Has editado el archivo que mencioné anteriormente?
desgua
1
Esta es una respuesta demasiado técnica y desorganizada para la mayoría de las personas. Algunas brechas serias: no hay ayuda para determinar el / dev / input / eventX apropiado, pasos poco claros mezclados con información contextual y solicitudes para no pedir instrucciones para crear mapas de teclas.
Alain O'Dea
1
evtest ni siquiera está instalado por defecto, lo que lo hace aún peor.
Alain O'Dea
A través de prueba y error, descubrí que mi teclado es / dev / input / event3 y evtest no recoge ningún evento del control deslizante de zoom.
Alain O'Dea
0

En mi máquina, se enviaron teclas adicionales (HomePage, Search, Calc, etc.) y entrada de zoom a través de / dev / input / event5, mientras que las teclas normales se enviaron a través de / dev / input / event4. El valor de la clave de zoom está de acuerdo con el flujo de cola.

niclas
fuente