Je souhaite détecter la séquence de touches Ctrl-q (ou tout autre lettre de l'alphabet que 'q'), et ceci indépendamment de la disposition du clavier (français, anglais, etc...), et ceci quand on presse une touche, ou bien quand on la relâche.
Déjà, pour des raisons techniques qui sont propres au but que je me suis fixé, je n'utilise pas le message WM_CHAR, mais uniquement WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP et WM_SYSKEYUP.
j'utilise ce code (msg->window_param est le wParam du message):
Si j'appuie sur la touche 'a', j'obtiens 97 (le code ASCII du a minuscule)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 BYTE kbd_state[256]; WORD b[2]; GetKeyboardState(kbd_state); res = ToAscii(msg->window_param, MapVirtualKey(msg->window_param, 2), kbd_state, b, 0); if (res ==1) printf("%d\n", (char)b[0]);
Si je lance Shift+a, j'obtiens 65 (le code ASCII du a majuscule)
si je lance Ctrl+a, j'obtiens 1 (2 si c'est b, etc... 26 si c'est z) donc la position de la lettre dans l'alphabet)
pourquoi n'obtiens-je pas 97 ?
merci
Partager