xbindkeys em um teclado?

1

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.

Eu achei que poderia criar um layout personalizado e voilá, um teclado para escrever e outro para atalhos, então descobri que o xkb não permite criar layouts que clicam em múltiplos botões (como em pressionar o capslock e ele faz ctrl alt f4 ).

Então, meu pensamento era que os xbindkeys fossem executados apenas em um dos teclados, já que eles têm ids diferentes. Posso fazer isso acontecer?

    
por hiperbolt 30.04.2017 / 22:55

1 resposta

1

Resumo rápido dos vários níveis envolvidos:

Seu teclado gera códigos de verificação. Eles são mapeados pelas camadas de entrada do kernel para eventos keycode em /dev/input/eventX . O driver X evdev pega esses eventos e os converte em keyyms. Em seguida, a extensão XInput torna todos os eventos de escravos do teclado virtual disponíveis 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 customizado para o mapeamento de código de tecla. Esses mapeamentos são por dispositivo, portanto, isso é realmente possível, mas isso é feito por meio de um IOCTL, e parece não haver ferramentas prontas para ele, a não ser o hwdb em 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 ligar eventos de um teclado não núcleo. Isso precisará de programação, mas deve ser relativamente simples. Neste caso, desacople um teclado do teclado central como você já fez.

    
por 01.05.2017 / 15:40