-
/* Inicializa a captura de eventos de teclado */
void InitKBD(WINDOW *w);
/* Verifica se existe alguma tecla disponível */
int WCheckKBD(WINDOW *w);
/* Pega a próxima tecla e devolve o código X.
* Veja em $INC/X11/keysymdef.h */
KeyCoDe WGetKey(WINDOW *w);
/* Devolve o KeySym da última tecla lida */
KeySym WLastKeySym();
-
IMPORTANTE: note que há uma imprecisão no comentário
que antecede a função WGetKey, o arquivo X11/keysymdef.h
define
o KeySym de cada tecla que é diferente do KeyCode
(o
KeySym é portável de uma arquitetura para outra
mas o KeyCode não é). Assim, se você quiser
o KeySym terá que primeiro chamar a função
WGetKey()
e depois obter o KeySym através da função
WLastKeySym().
-
No meu sistema, o arquivo /usr/X11R6/include/X11/keysymdef.h define
o seguinte:
#define XK_Left 0xFF51 /* Move left, left arrow */
#define XK_Up 0xFF52 /* Move up, up arrow
*/
#define XK_Right 0xFF53 /* Move right, right arrow */
#define XK_Down 0xFF54 /* Move down, down arrow */
#define XK_j 0x06a
#define XK_k 0x06b
Pode ser uma boa dar duas opções para o usuário,
e.g., além de usar as flechas, ele poderia também usar as
teclas 'i', 'j', 'k' e 'k' para jogar.
-
Se por algum motivo o método acima não funcionar na sua máquina, execute
o programa xev. O xev é um programa que
abre uma janela do X e mostra todos os eventos que aquela janela
recebe. Se você apertar uma tecla com a janela selecionada, o xev
mostra uma série de informações incluindo o KeyCode
e o KeySym.
-
Em último caso (desespero total :-) você pode escrever um
programinha que entra num laço que tudo o que ele faz é pegar
caracteres do teclado e imprimir o seu código. Mas acho que não
precisaremos chegar a este ponto :-).