
Eu tenho a configuração atual:
- Um teclado PS2
- Um teclado USB
Então eu uso isso:
xinput --create-master SecondKeyboard
xinput --reattach "Keyboard Id" "Master Id"
para separá-los.
Achei que poderia apenas criar um layout customizado e voilá, um teclado para escrita e outro para atalhos, então descobri que o xkb não permite criar layouts que clicam em múltiplas teclas (como pressionar capslocke fazer ctrl+ alt+ f4).
Então meu pensamento foi: fazer com que os xbindkeys rodem apenas em um dos teclados, já que eles têm IDs diferentes. Posso fazer isso acontecer?
Responder1
Breve resumo dos vários níveis envolvidos:
Seu teclado gera códigos de digitalização. Eles são mapeados pelas camadas de entrada do kernel para eventos de código-chave no /dev/input/eventX
. O driver X evdev
pega esses eventos e os traduz em keysyms. Então a extensão XInput disponibiliza todos os eventos dos escravos do teclado virtual como eventos X normais, enquanto os outros eventos estão disponíveis apenas como eventos XInput.
Então você tem as seguintes opções:
1) Configure um scancode personalizado para mapeamento de código-chave. Esses mapeamentos são por dispositivo, então isso é realmente possível, mas isso é feito através de um IOCTL, e parece não haver ferramentas prontas para isso além dohwdbem udev
. Você pode então usar os novos keycides em xkb
. Ambos os teclados são mantidos como teclados principais.
2) Estenda xbindkeys
para entender os eventos XInput, para que você possa usá-lo para vincular eventos de um teclado não principal. Isto exigirá programação, mas deverá ser comparativamente simples. Nesse caso, desacople um teclado do teclado principal como já fez.