Je porte sous Windows un framework et je bute sur la partie clavier. En gros, je dois renvoyer une chaîne de caractères quand les touches Shift (gauche et droite), Ctrl (gauche et droite), Alt et AltGr sont pressées ou relachées.
Le problème vient de AltGr, qui est en fait Ctrl (gauche) + Alt et je n'arrive pas à différencier la touche Ctrl gauche quand elle est utilisée toute seule de la touche Ctrl gauche quand elle est lancée par l'appuie de AltGr.
Voilà les détails.
Dans ma boucle de messages:
La fonction _ecore_win32_event_handle_key_press() appelle le code suivant pour la touche Ctrl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 case WM_KEYDOWN: _ecore_win32_event_handle_key_press(data, 1); return 0;
Remarque: comme j'utilise quasiment le même code pour la pression ou le relachement d'une touche, j'utilise la variable 'is_down' pour savoir dans quel cas je suis. C'est juste technique et n'a rien à voir avec mon problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 switch (key) { case VK_CONTROL: { SHORT res; res = GetKeyState(VK_LCONTROL); if (res & 0x8000) { _ecore_win32_key_mask |= ECORE_WIN32_KEY_MASK_LCONTROL; kn = "Control_L"; ks = "Control_L"; kc = ""; break; } res = GetKeyState(VK_RCONTROL); if (res & 0x8000) { _ecore_win32_key_mask |= ECORE_WIN32_KEY_MASK_RCONTROL; kn = "Control_R"; ks = "Control_R"; kc = ""; break; } break; } }
Donc 'key' est le keycode. Cette valeur, ainsi que la veaeur renvoyée par GetKeyState() est exactement la même, que j'appuie sur Ctrl gauche ou AltGr.
J'ai lu la doc de MSDN, cherché sur Google et fait des tests dans tous les sens depuis 2 jours, sans rien trouver. Comme ça me paraît étrange que ce soit si difficile de différencier ces 2 Ctrl gauche, je dois passer à côté de quelque chose de simple.
Donc si quelqu'un a une idée pour résoudre le problème...
merci
Partager