método XKB
O XKB pode não ser a melhor maneira de alterar o comportamento deste dispositivo, mas deve ser possível em ambientes X tradicionais. Contextos XKB mais recentes, como Wayland ou kmscon
, podem não fornecer a granularidade necessária para configurar layouts XKB separados em dispositivos arbitrários. Também não funcionará sob o console tradicional.
A aplicação de um udev hwdb
override para que essa alteração funcione sob todos eles.
Em ambientes X tradicionais, o setxkbmap
usa uma bandeira -device
e xkbcomp
usa -i
:
Use xinput -list
para encontrar os números de identificação do dispositivo.
Para provar isso, use o setxkbmap ... -print
para gerar um layout básico, salve-o em um arquivo e carregue-o com xkbcomp filename.xkb $DISPLAY
. Talvez seja necessário desativar os daemons de configurações de teclado do GNOME / KDE durante o teste.
$ setxkbmap -layout us -option '' -print > f2toctrl.xkb
Edite o arquivo f2toctrl.xkb
- estamos apenas alterando a linha xkb_symbols
:
// generated with 'setxkbmap -print' and modified
// load: xkbcomp -i DeviceID# filename $DISPLAY
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols {
include "pc+us+inet(evdev)"
// existing key definition (see 'xkbcomp $DISPLAY - | grep -A 3 FK02')
// key <FK02> {
// type= "CTRL+ALT",
// symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]
// };
// patterned after ctrl:nocaps option
// see /usr/share/X11/xkb/symbols/ctrl
replace key <FK02> { [ Control_L, Control_L ] };
modifier_map Control { <FK02>, <LCTL> };
};
xkb_geometry { include "pc(pc105)" };
};
Agora carregue-o (substitua N
pelo ID do dispositivo que você encontrou em xinput -list
):
$ xkbcomp -i N f2toctrl.xkb $DISPLAY
Você pode verificar suas alterações com xkbcomp -i N $DISPLAY - | less
e testar o botão fisicamente em vários aplicativos para garantir que ele seja reconhecido.
Para ambientes X normais (não DE), o comando loading pode ser adicionado a ~/.xinitrc
ou outros scripts de inicialização do gerenciador de janelas. Você precisaria adicionar essa substituição ao banco de dados XKB do sistema para uso com a maioria dos compositores Wayland e DEs como GNOME / KDE, mas nesses contextos eu não tenho certeza de como você aplicaria a substituição apenas ao dispositivo de pedal. Se isso fosse viável, eu criaria /usr/share/X11/xkb/symbols/pedal
para manter a substituição Ctrl
demonstrada acima (e potencialmente outras substituições úteis para o dispositivo).
Um arquivo de layout muito simplista pode ter esta aparência:
// /usr/share/X11/xkb/symbols/pedal
// convert F2 key operation to Ctrl
default partial modifier_keys
xkb_symbols "basic" {
name[Group1]= "USB Pedal as Ctrl";
replace key <FK02> { [ Control_L, Control_L ] };
modifier_map Control { <FK02>, <LCTL> };
};