xbindkeys em um teclado?

xbindkeys em um teclado?

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 evdevpega 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 xbindkeyspara 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.

informação relacionada