Problemas de chave de mídia com o teclado da Microsoft

3

Tenho um teclado de mídia sem fio Microsoft All-in-One (n9z-00001) que se comporta de maneira estranha com a minha distribuição atual, o Arch Linux. ( Linux 3.19.3-3-ARCH #1 SMP PREEMPT Wed Apr 8 14:10:00 CEST 2015 x86_64 GNU/Linux )

$ lsusb | grep -i micro
Bus 001 Device 008: ID 045e:0800 Microsoft Corp. 

E é isso que o xinput gera. Note que existem dois teclados para este dispositivo, um com o peculiar (keys)

$  xinput list | grep -i micro
⎜   ↳ Microsoft Microsoft® Nano Transceiver v2.0    id=12   [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v2.0    id=11   [slave  pointer  (2)]
    ↳ Microsoft Microsoft® Nano Transceiver v2.0 (keys) id=10   [slave  keyboard (3)]
    ↳ Microsoft Microsoft® Nano Transceiver v2.0    id=9    [slave  keyboard (3)]

Eu posso ouvir as chaves diretamente com evtest . Embora seja o mesmo teclado

$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Lid Switch
/dev/input/event1:  Power Button
/dev/input/event2:  Video Bus
/dev/input/event3:  Video Bus
/dev/input/event4:  AT Translated Set 2 keyboard
/dev/input/event5:  Microsoft Microsoft® Nano Transceiver v2.0
/dev/input/event6:  Microsoft Microsoft® Nano Transceiver v2.0
/dev/input/event7:  Microsoft Microsoft® Nano Transceiver v2.0
/dev/input/event8:  ThinkPad Extra Buttons
/dev/input/event9:  HDA Digital PCBeep
/dev/input/event10: HDA Intel PCH Mic
/dev/input/event11: HDA Intel PCH Headphone
/dev/input/event12: HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event13: HDA Intel HDMI HDMI/DP,pcm=7
/dev/input/event14: HDA Intel HDMI HDMI/DP,pcm=8
/dev/input/event15: SynPS/2 Synaptics TouchPad
/dev/input/event16: Integrated Camera
/dev/input/event17: Logitech M705
/dev/input/event18: TPPS/2 IBM TrackPoint
/dev/input/event19: daskeyboard
/dev/input/event20: daskeyboard
Select the device event number [0-20]: 
  • O ID do dispositivo 9 de xinput corresponde a /dev/input/event5 , que tem todas as chaves normais, exceto algumas das chaves de mídia.
  • id 10 corresponde a /dev/input/event7 e tem as chaves de mídia em F1-F4 e 6 outras chaves relacionadas ao controle de volume e a outras coisas da microsoft.
  • Acredito que /dev/input/event6 corresponda ao touchpad no teclado.

O problema está nas teclas de função. As chaves de mídia colocadas em que F1-F5 deve ser atribuídas ao dispositivo " (keys) ", enquanto F6-F12 são atribuídas ao outro. Eu quero mapear as teclas de mídia de volta para as teclas de função para que eu não tenha que pressionar Fn todas as vezes.

Problema 1: As chaves de mídia (chaves que são canalizadas através do dispositivo de entrada 10, o (keys) one) não são registradas por xev . Eles geram saída com showkey --scancodes e evtest , mas eles não são selecionados pelo X. Como resolver isso?

Problema 2: As chaves de mídia que funcionam através do dispositivo de entrada 9 enviam múltiplos scancodes e o AFAIK não há como remapear várias chaves com hwdb , como mostrado em aqui . A seguir, os scancodes enviados pela chave de mídia em F7

Event: time 1430059493.552417, -------------- EV_SYN ------------
Event: time 1430059493.560416, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1430059493.560416, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
Event: time 1430059493.560416, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
Event: time 1430059493.560416, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0
Event: time 1430059493.560416, -------------- EV_SYN ------------

Não tenho ideia de como vincular vários códigos de verificação a um único evento. agora X está detectando todas as chaves individuais e as mapeia para os respectivos eventos. Por exemplo, de acordo com a saída acima, a chave de mídia em F7 envia Ctrl+Alt+Scanner . Como posso fazer isso, pois o googling me deixou sem resultados?

    
por osolmaz 26.04.2015 / 17:01

2 respostas

1

Em vez de remapear as teclas, você pode pressionar Fn + CapsLock que bloqueia os botões F para os botões F em vez de multimídia e vice-versa se você pressioná-lo novamente.

    
por 23.02.2016 / 18:28
0

eu tive o mesmo problema, finalmente, depois de desinstalar o pacote xf86-input-joystick problema resolvido link

    
por 14.01.2017 / 11:38