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.
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]:
xinput
corresponde a /dev/input/event5
, que tem todas as chaves normais, exceto algumas das chaves de mídia. /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. /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?
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.
eu tive o mesmo problema, finalmente, depois de desinstalar o pacote xf86-input-joystick problema resolvido link