Faça o controle deslizante de zoom do Microsoft Natural Ergonomic Keyboard 4000 e 7000 para cima e para baixo, em 14.04 (Trusty)

26

Eu tentei usar este tutorial fazer com que o interruptor de rolagem funcione no meu Microsoft Natural Ergonomic Keyboard 4000. Mas enfrento o seguinte erro:

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

Eu tenho a versão udev 204-5ubuntu20.2 (a versão encontrada em Trusty)

Notei que esta versão não inclui a ferramenta keymap . Mas percebo que grandes udev versões ( disponíveis para o Debian, por exemplo ) inclua esta ferramenta.

Alguém poderia explicar essa diferença para mim? =) E o que devo fazer neste caso - instalar o pacote do repositório Debian?

    
por dizpers 25.05.2014 / 09:28

5 respostas

25

Se você olhar para /lib/udev/rules.d/60-keyboard.rules , verá que tudo foi alterado. Isso é apenas parte da fusão do udev no systemd que já passou.

Todas as regras de hardware são compiladas em um banco de dados de hardware binário. Estes seguem um formato muito estranho. As regras existentes para teclados que acompanham o udev residem em /lib/udev/hwdb.d/60-keyboard.hwdb . Olhe para isso, mas não o edite (as atualizações provavelmente irão sobrescrevê-lo).

Para adicionar suas regras personalizadas, criaremos um novo arquivo em /etc/udev/hwdb.d/ executando sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb . Tudo o que você precisa fazer é colar o seguinte -

Se você estiver usando o modelo 4000:

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

Se você estiver usando o modelo 7000:

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

Isso é adaptado do tutorial que você postou, então você pode precisar ajustar com base no seu teclado. Veja lsusb e certifique-se de que o código vendor:product acima (como v####p#### ) esteja correto. Não funcionará se eles não corresponderem.

Quando terminar de editar, recompile o hwdb que o udev usa:

sudo udevadm hwdb --update

E então você pode precisar se conectar novamente. Se for um teclado PS / 2, talvez seja necessário reinicializar. Em alguns casos, você também precisa reiniciar.

    
por Oli 29.05.2014 / 10:28
33

Ubuntu 15.10 : Eu não tive sucesso com as respostas anteriores.

Eu usei com sucesso uma abordagem semelhante às anteriores - as instruções foram mencionadas em /lib/udev/hwdb.d/60-keyboard.hwdb .

Eu criei o novo arquivo hwdb usando sudo nano /etc/udev/hwdb.d/70-keyboard.hwdb contendo:

# Microsoft Natural Ergonomic Keyboard 4000 - remap zoom in/out to page up/down
evdev:input:b0003v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

depois disso eu corri

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

e reconfigurou o teclado e funcionou.

Para uso do modelo 7000 evdev:input:b003v045Ep071D*

    
por Adam Chýlek 26.11.2015 / 12:21
7

A solução original publicado por Oli não funcionou para mim, mas ele funciona depois que mudou os números-chave "0c022d" e "0c022e" para "c022d" e "c022e" . Eu estou usando um modelo 4000, por isso não posso verificar se o mesmo a mudança é necessária para o modelo de 7000.

Para repetir a resposta de Oli, aqui está o que eu fiz: crie um novo arquivo executando sudo nano /etc/udev/hwdb.d/61-keyboard-local.hwdb . Cole as seguintes linhas no arquivo (para o modelo 4000):

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

Após editar o arquivo, recompile o hwdb que o udev usa:

sudo udevadm hwdb --update

Em seguida, volte a colocar o teclado.

    
por user261903 30.04.2015 / 00:21
3

Adicionando a resposta de Oli, Se você quiser que a rolagem de linha seja semelhante a um mouse, é possível modificar o pageup / pagedown para cima / baixo em sua regra personalizada. Como:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down
    
por r11 27.05.2016 / 04:16
1

A boa solução é aqui , e só posso acrescentar que você pode mapear as chaves para chaves X não usadas assim:

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

Nomes próprios para usar em vez de katakana podem ser encontrados aqui .

Após a reinicialização ;-) você pode testar que zoomin e zoomout chaves são mapeadas com sucesso, e também descobrir os nomes próprios das chaves (para usar em rc.xml para OpenBox WM, por exemplo) 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
...

Agora você pode conectar novas chaves a ações completamente arbitrárias. No meu caso de gerenciador de janelas OpenBox eu usei algo assim:

$ 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>
...
    
por dmitry_romanov 15.07.2016 / 19:34