como obter o controle deslizante de zoom do Microsoft Natural Ergonomic Keyboard 4000 (e outros botões) para funcionar?

21

Eu uso um Microsoft Natural Ergonomic Keyboard 4000 no Ubuntu 10.10. As teclas multimídia (Volume, Play / Pause) funcionam, o botão Mail and Calculator também.

Agora eu adoraria usar o controle deslizante de zoom, se fosse possível, eu gostaria de usar a rolagem de página com isso. Existe alguma maneira de permitir isso?

    
por Martin Ueding 01.04.2011 / 22:47

5 respostas

18

Crie o arquivo /etc/udev/rules.d/98-ms-ergo.rules com o seguinte conteúdo:

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"

Isso mapeará a tecla de zoom para alternar page-up / page-down sem alterar os arquivos instalados em /lib/udev .

Uma vez adicionado, basta desconectar e reconectar o teclado para que ele comece a funcionar.

    
por Kees Cook 16.04.2013 / 18:55
9

No Xubuntu 13.10 (talvez no Ubuntu 13.10 também), o mesmo pode ser feito da seguinte forma:

Editar mapeamentos de teclas em /lib/udev/hwdb.d/60-keyboard.hwdb :

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

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

Executar sudo udevadm hwdb --update

Reinicie.

    
por Konstantin K. 04.11.2013 / 09:34
3

O problema é que O driverevdev ignora códigos de tecla > 255 .
A solução, graças a Marco Chiappero :

1) you have to define all the remappings that you need (in the form of 
"scancode keycode" list) and place them in a file under "/lib/udev/keymaps/" 
(for example I created logitech-lx710-cordless there). You can find the 
scancodes using evtest ("sudo evtest /dev/input/eventX", where X is your 
keyboard device. Be careful, sometimes these extra keys are exposed through 
a different device or your mouse interface: eg. event3 --> kbd, event4 --> 
mouse & extra keys). Here some sample output:

Event: time 1294153475.909379, type 4 (Misc), code 4 (ScanCode), value c1028
"c1028" is the scancode value you're going to place in your keymap file, then 
pick up a number from input.h as described earlier and convert it to 
hexadecimal. Then write the remap pair in your file, maybe with a descriptive 
comment, like this:

0xC1028 0x9a # rotate button

Iterate for every key > 255.

2) you have to tell udev to apply this remapping file everytime it encounters 
your keyboard, so edit the "/lib/udev/rules.d/95-keymap.rules" file adding 
the udev rule that matches your HW. Please don't ask me to define a rule for 
you. 
NOTE: you can immediately apply your keymap file by yourself typing 
"sudo /lib/udev/keymap /dev/input/eventX /lib/udev/keymaps/$YOUR_FILE" and 
verify it with evtest once again.

Now, you can use the Gnome shortcuts editor to see that the keys are now 
usable inside X and create new shortcuts. However it might happen that no 
keysym is assigned to that keycode (so you'll see 0xXY instead of XF86Foo). 
You can see current mappings through xmodmap -pke, save the output into a 
file and edit it if you need (a full keysym code list is available in
"/usr/lib/X11/XKeysymDB").
Once you added the keysyms to those keys you remapped, you can save this file
as ~/.Xmodmap (or as /etc/X11/Xmodmap if you wish to apply to every user).
    
por desgua 02.04.2011 / 03:54
3

Para configurar o teclado ergonômico da Microsoft 4000 , precisamos criar um arquivo de configuração que contenha a declaração do teclado e os registros para mapear as chaves.

Para isso, existem três tipos de informações que precisamos determinar:

  • Tipo de teclado
  • A chave scancode , que é a chave real no teclado
  • A chave name para atribuir a funcionalidade desejada à chave selecionada

Primeiro, encontre o tipo de teclado:

No terminal, execute o seguinte comando:

lsusb 

a saída determina o tipo de teclado:

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

Aparece após ID . Nesse caso, é 045e:00db

Segundo, localize o scancode e o nome da chave.

Para determiná-los, usamos o programa evtest , que registra as informações do evento de um dispositivo específico no terminal:

evtest

Se você não tiver o programa, instale-o executando o seguinte comando:

sudo apt-get install evtest

Ao executar o programa evtest , obtemos a seguinte saída:

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]:

A saída é praticamente autoexplicativa, insira o número apropriado para o teclado, que aqui é o número 3 , em seguida, pressione enter:

Ao fazer isso, você terá muitas informações no terminal e terminará nas seguintes linhas:

... 

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 ------------

Agora, com todas as teclas pressionadas no teclado, as informações principais são copiadas. Por exemplo, a tecla barra ao lado do deslocamento para a direita mostra:

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 ------------

A primeira linha do log contém as informações sobre a chave real no teclado, como scancode , que vem depois do valor. Neste caso, é 70038

A segunda linha contém a funcionalidade atribuída , como o nome da chave. Neste caso, é SLASH . Examine as outras chaves para encontrar seus nomes apropriados.

Então, em poucas palavras:

  • Nosso tipo de teclado é: 045e: 00db
  • O scancode da tecla Slash é: 70038
  • O nome da chave para atribuição é SLASH

Após reunir as informações necessárias, criamos o arquivo de configuração:

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

Pressione i para ativar o modo de inserção e digite o seguinte:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Salve e saia pressionando escape , em seguida, digite :wq e pressione Enter.

Em seguida, execute os dois comandos a seguir para que a configuração entre em vigor:

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

Finalmente, desligue o teclado e volte a ligá-lo.

Algumas notas sobre o arquivo de configuração:

  • O formato do arquivo deve ser exatamente como mostrado, o espaço antes registros de mapeamento são críticos.
  • Em vez de sudoedit você pode usar qualquer outro editor de texto, lembre-se de seguir o formato exato do arquivo, conforme explicado acima.
  • Existem dois caracteres adicionados ao tipo de teclado: v e p , que representam fornecedor e produto. Eles são importantes também.
  • O tipo de teclado é escrito em maiúsculas no arquivo de configuração. Nosso tipo de teclado era 045e: 00db mas na configuração nós inserimos v045Ep00DB *
  • O scancode da chave vem logo após KEYBOARD_KEY_
  • O nome da chave aparece em minúsculas no arquivo de configuração
  • Você pode personalizar praticamente todas as teclas do teclado seguindo este tutorial.
por varDumper 26.08.2016 / 14:24
-1

Na minha máquina, as teclas extras (HomePage, Search, Calc, etc.) e a entrada de zoom foram enviadas por / dev / input / event5, enquanto as chaves comuns foram enviadas por / dev / input / event4. O valor da chave de zoom está de acordo com o do queueoverflow.

    
por niclas 20.02.2012 / 09:25