détection de la séquence Ctrl-q
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):
Code:
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 j'appuie sur la touche 'a', j'obtiens 97 (le code ASCII du a minuscule)
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