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

29

Tentei usar este tutorial para fazer a alternância de rolagem funcionar no 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 keymapferramenta. Mas noto que udevversões maiores ( disponíveis para o Debian, por exemplo ) incluem essa ferramenta.

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

Dmitry Belaventsev
fonte
Deseja resolver esse problema usando o udev ou está bem com alternativas? Eu ficaria um pouco relutante em instalar pacotes debian udev descompactados no ubuntu.
jobin 29/05
quaisquer alternativas são bem-vindas =) #
687 Dmitry Belaventsev
Será que isso ajuda?
jobin 29/05
O que o keymaputilitário não enviado mais faz?
matt,
Atualizei meu tutorial (ao qual você vinculou) para incluir a resposta abaixo. Obrigado :-)
Terence Eden

Respostas:

27

Se você olhar, /lib/udev/rules.d/60-keyboard.rulesverá que tudo foi mexido. Isso é apenas parte da fusão do udev com o systemd que ocorreu.

Todas as regras de hardware são compiladas em um banco de dados de hardware binário. Eles seguem um formato realmente estranho. As regras existentes para teclados fornecidos com o udev estão em /lib/udev/hwdb.d/60-keyboard.hwdb. Veja isso, mas não o edite (as atualizações provavelmente o substituirão).

Para adicionar suas regras personalizadas, criaremos um novo arquivo /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, para que você possa precisar ajustar com base no seu teclado. Observe lsusbe verifique se o vendor:productcódigo acima (as v####p####) está correto. Não funcionará se eles não corresponderem.

Quando terminar de editar, recompile o hwdbque o udev usa:

sudo udevadm hwdb --update

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

Oli
fonte
Obrigado pela resposta! hwdb.ddir está vazio, rules.dcontém apenas três arquivos ( 70-persistent-cd.rules, 70-persistent-net.rules, README). Então, você quis dizer que devo criar um novo arquivo? Ou devo ter alguns para editar?
Dmitry Belaventsev
Sim, você deve criar um novo arquivo. As regras de teclado existentes estão em/lib/udev/hwdb.d/60-keyboard.hwdb mas as edições serão perdidas após as atualizações do udev.
Oli
2
infelizmente, não faz o botão de destino funcionar
Dmitry Belaventsev
1
@matt, você pode colocar vários aliases aqui
user.dz
1
Em vez de conectar | desconectar, pode-se usar udevadm trigger /dev/input/by-id/usb-Microsoft-*para acionar a atualização
Alexandr Priymak
37

Ubuntu 15.10 : Não obtive sucesso com respostas anteriores.

Usei com sucesso uma abordagem semelhante à anterior - as instruções foram mencionadas em /lib/udev/hwdb.d/60-keyboard.hwdb.

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

# Microsoft Natural Ergonomic Keyboard 4000 - remapear o zoom in / out para subir / descer a página
evdev: input: b0003v045Ep00DB *
 KEYBOARD_KEY_c022d = pageup
 KEYBOARD_KEY_c022e = pagedown

depois disso eu corri

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

e reconectou o teclado e funcionou.

Para o modelo 7000, use evdev:input:b003v045Ep071D*

Adam Chýlek
fonte
9
Esta é a resposta correta para o Ubuntu 16.04
Greg Dan
2
Obrigado. De fato, parece que as keyboard:definições não funcionam mais no Ubuntu 1604 e precisam estar evdev:. Existe até um mapeamento padrão /lib/udev/hwdb.d/60-keyboard.hwdbpara o modelo 4000 que os mapeia para zoomin/ zoomout- no entanto, o X ignora completamente os eventos (o xev não mostra nada), portanto você ainda precisa de uma alteração na configuração como esta.
Wump
2
Os b0003olhares como específico-bus-lo de (por isso só pode funcionar em algumas portas USB). Se algo como b*v045Ep071D*funciona, isso pode ser melhor.
Oli
3
Obrigado, está funcionando no Ubuntu 16.04 (em evdev:input:XXXvez de keyboard:usb:YYY). Você também pode usar mapeamento diferente em vez de pageup/ pagedown. Por exemplo, estou usando scrollupe scrolldownpara fazer rolagem real.
Martin Grůber
1
Também funciona no Kubuntu 17.10
OOPMan
7

A solução original postada por Oli não funcionou para mim, mas funciona depois que alterei os números das chaves "0c022d"e "0c022e"para "c022d"e "c022e". Estou usando um modelo 4000, então não posso verificar se a mesma alteração é necessária para o modelo 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, reconecte o teclado.

user261903
fonte
Obrigado. Estranhamente, eu precisava executar essa alteração também agora, e também era necessária uma reinicialização depois de tudo (não apenas a reconfiguração).
Matt
funcionou para mim no Ubuntu 15.04. Obrigado!
Pierre
Isso funcionou para mim no Debian Jessie 8.5.
Nicolás
Quero comprar um teclado econômico e estou curioso para saber se ele funciona com 16.04 LTS? Ou não há um problema como esse lá.
Arpad Horvath
4

Adicionando à resposta de Oli, se você quiser a rolagem de linhas como em um mouse, você pode modificar pageup / pagedown para cima / baixo em sua regra personalizada. Gostar:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down
r11
fonte
A propósito: Para cima / para baixo é o padrão em 18.04.
LinuxLuigi
1

A solução legal está aqui , e só posso acrescentar que você pode mapear as chaves para chaves X não utilizadas 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
...

Os nomes adequados a serem usados ​​em vez de katakanapodem ser encontrados aqui .

Após a reinicialização ;-), você pode testar se as chaves zoomine zoomoutsão mapeadas com sucesso e também para descobrir um nome adequado das chaves (para usar no rc.xmlOpenBox 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 do gerenciador de janelas OpenBox, usei algo como isto:

$ 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>
...
dmitry_romanov
fonte