Usando códigos de tecla X sem teclado ou vários teclados?

2

No meu laptop, eu estou usando o QJoypad para mapear alguns botões em teclas pressionadas, para que eu possa jogar alguns jogos retrô com os botões de arcade. Qjoypad cria algo assim:

Joystick 1 {
    Axis 1: +key 116, -key 111
    Axis 4: +key 113, -key 114
    Button 1: key 65
}

Esses números são códigos-chave do X, que podem ser encontrados com o programa xev . De aqui :

An X server uses a two-level encoding of keys, which includes the X key code and the keysym. An X key code is a one-byte value. The assignment of key codes to keys depends on the X server implementation and the physical keyboard. As a result, an X application normally cannot use key codes directly. Instead, the key codes are mapped into keysyms that have names like space, escape, x and 2.

No entanto, estou me sentindo confuso aqui.

  • E se eu tivesse dois teclados no meu sistema?

  • E se eu não tiver teclado (por exemplo, com um Raspberry Pi)?

Neste tutorial , o cara usa Qjoypad com o Raspberry Pi e um teclado externo. Se o teclado fosse removido, as coisas ainda funcionariam? Como os códigos-chave do X seriam gerados então?

    
por BlueMoon93 18.09.2017 / 11:07

1 resposta

0

As ações do teclado no X funcionam enviando mensagens para aplicativos que contêm o código de teclas (pense: número da posição da tecla no teclado) e o keysym (pense: número para o símbolo real, por exemplo a ou Digite ). A infra-estrutura X não se importa de onde tal evento vem, você pode sintetizá-lo a partir de outro aplicativo QJoypad ou anexar qualquer número de teclados para gerar tais eventos.

Na verdade, se você olhar para a árvore de dispositivos com xinput , verá vários dispositivos conectados ao "teclado virtual central", e todos eles podem gerar eventos importantes (alguns deles serão "energia" botão "principais eventos).

Então: não importa se você tem zero, dois ou cem teclados em seu sistema, simplesmente funciona.

No entanto, você precisa do keysym e do keycode. Existem rotinas para encontrar o conjunto de chaves correspondente a um código de acesso (e vice-versa), por isso espero que QJoypad as utilize.

    
por 18.09.2017 / 13:29