Eu tenho um Microsoft Mobile Keyboard, que é conectado via Bluetooth. No meu laptop um xUbuntu 16.04 está sendo executado.
As teclas F1 a F12 do Teclado Móvel do Sculpt funcionam como teclas de função Reproduzir / Pausar , Mudo ... Para usar as teclas F1 para F12 conforme pretendido, é necessário pressionar as teclas Fn , que estão à direita. Isto é bastante desconfortável se você quiser pressionar ALT + F4 .... Eu gostaria de mudar permanentemente para as teclas Fx (ou bloquear a tecla Fn ). Adicionalmente, eu gostaria de trocar as chaves PageUp e PageDown contra Home e End .
Use o AutoHotKey conforme descrito em
A resposta se aplica a outro teclado
Deve ser possível alterar ou alternar as chaves com as ferramentas de linha de comando xkbcomp
ou setxkbmap
, conforme descrito aqui:
Com base nessas perguntas e respostas, usei xev
para encontrar os nomes das chaves (identificadores de XKB) das chaves em questão. Eu queria criar o seguinte mapeamento:
# F1 to F5 (F5 probably does not work)
I172 -> FK01
MUTE -> FK02
VOL- -> FK03
VOL+ -> FK04
FIND -> FK05
# F11 and F12
FK22 -> FK11
FK23 -> FK12
# switch Page Up and Page Down with Home and End
PGUP -> HOME
HOME -> PGUP
PGDN -> END
END -> PGDN
Assim, criei o código apropriado:
xkb_symbols "remote" {
key <I172> {
type= "CTRL+ALT",
symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ]
};
key <MUTE> {
type= "CTRL+ALT",
symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]
};
key <VOL-> {
type= "CTRL+ALT",
symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ]
};
key <VOL+> {
type= "CTRL+ALT",
symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ]
};
key <FIND> {
type= "CTRL+ALT",
symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ]
};
key <FK22> {
type= "CTRL+ALT",
symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ]
};
key <FK23> {
type= "CTRL+ALT",
symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ]
};
key <PGDN> { [ End ] };
key <END> { [ Next ] };
key <PGUP> { [ Home ] };
key <HOME> { [ Prior ] };
};
E adicionou-o à definição de mapa de chaves existente com xkbcomp
e adicionou +custom(remote)
à variável xkb_symbols
do mapeamento de chave do dispositivo respectivo do dispositivo. Não funcionou.
Eu acho que eles talvez não funcionem porque o teclado é reconhecido como ponteiro e não como teclado. A saída xinput list
diz:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Mouse id=11 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=14 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=15 [slave pointer (2)]
⎜ ↳ Microsoft Sculpt Mobile Keyboard id=17 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ Laptop_Integrated_Webcam_E4HD id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
↳ Dell WMI hotkeys id=16 [slave keyboard (3)]
Eu li sobre alguns mouses que foram reconhecidos como teclado e não como ponteiro. Modificando o código Linux Kernel + recompilando, foi uma das soluções. Eu não quero recompilar o Kernel apenas para que meu teclado funcione corretamente ....
Tags keyboard xinput linux ubuntu-16.04