Je voudrais récupérer le caractère associé à un WM_KEYUP. Par exemple si
je relache la touche correspondant à la lettre A, je voudrais récupérer
le caractère 'a' (97) et non la keycode 'A' (65). Pas de problème avec
WM_KEYDOWN car TranslateMessage() envoie WM_CHAR et je récupère
correctement le caractère.
J'ai fais pas mal de recherches sur google et j'ai vu plusieurs posts où
la fonction MapVirtualKey() est utilisée. J'ai essayé donc de l'utiliser
aussi, sans succès : j'ai toujours le keycode qui est retourné, et non le
caractère.
J'ai aussi essayé d'appeler TranslateMessage() dans le callback du KEYUP,
mais pareil, sans succès (toujours le keycode).
Donc je voudrais savoir si c'est possible, et si oui, comment (si c'est
avec MapVirtualKey(), comment l'utiliser correctement)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent
"Vincent Torri" a écrit dans le message de news:
Je voudrais récupérer le caractère associé à un WM_KEYUP. Par exemple si je relache la touche correspondant à la lettre A, je voudrais récupérer le caractère 'a' (97) et non la keycode 'A' (65). Pas de problème avec WM_KEYDOWN car TranslateMessage() envoie WM_CHAR et je récupère correctement le caractère. J'ai fais pas mal de recherches sur google et j'ai vu plusieurs posts où la fonction MapVirtualKey() est utilisée. J'ai essayé donc de l'utiliser aussi, sans succès : j'ai toujours le keycode qui est retourné, et non le caractère. J'ai aussi essayé d'appeler TranslateMessage() dans le callback du KEYUP, mais pareil, sans succès (toujours le keycode). Donc je voudrais savoir si c'est possible, et si oui, comment (si c'est avec MapVirtualKey(), comment l'utiliser correctement)
Faut tester si Caps Lock ou Shift est pressé pour faire la difference, vu que le lParam est identique
"Vincent Torri" <vincent.torri@gmail.com> a écrit dans le message de news:
Xns9FAABB7E08A71vincenttorrigmailcom@94.75.214.90...
Je voudrais récupérer le caractère associé à un WM_KEYUP. Par exemple si
je relache la touche correspondant à la lettre A, je voudrais récupérer
le caractère 'a' (97) et non la keycode 'A' (65). Pas de problème avec
WM_KEYDOWN car TranslateMessage() envoie WM_CHAR et je récupère
correctement le caractère.
J'ai fais pas mal de recherches sur google et j'ai vu plusieurs posts où
la fonction MapVirtualKey() est utilisée. J'ai essayé donc de l'utiliser
aussi, sans succès : j'ai toujours le keycode qui est retourné, et non le
caractère.
J'ai aussi essayé d'appeler TranslateMessage() dans le callback du KEYUP,
mais pareil, sans succès (toujours le keycode).
Donc je voudrais savoir si c'est possible, et si oui, comment (si c'est
avec MapVirtualKey(), comment l'utiliser correctement)
Faut tester si Caps Lock ou Shift est pressé pour faire la difference, vu
que le lParam est identique
Je voudrais récupérer le caractère associé à un WM_KEYUP. Par exemple si je relache la touche correspondant à la lettre A, je voudrais récupérer le caractère 'a' (97) et non la keycode 'A' (65). Pas de problème avec WM_KEYDOWN car TranslateMessage() envoie WM_CHAR et je récupère correctement le caractère. J'ai fais pas mal de recherches sur google et j'ai vu plusieurs posts où la fonction MapVirtualKey() est utilisée. J'ai essayé donc de l'utiliser aussi, sans succès : j'ai toujours le keycode qui est retourné, et non le caractère. J'ai aussi essayé d'appeler TranslateMessage() dans le callback du KEYUP, mais pareil, sans succès (toujours le keycode). Donc je voudrais savoir si c'est possible, et si oui, comment (si c'est avec MapVirtualKey(), comment l'utiliser correctement)
Faut tester si Caps Lock ou Shift est pressé pour faire la difference, vu que le lParam est identique
Vincent Torri
"Laurent" wrote in news:jau3a9$3ge$:
"Vincent Torri" a écrit dans le message de news:
Je voudrais récupérer le caractère associé à un WM_KEYUP. Par exemple si je relache la touche correspondant à la lettre A, je voudrais récupérer le caractère 'a' (97) et non la keycode 'A' (65). Pas de problème avec WM_KEYDOWN car TranslateMessage() envoie WM_CHAR et je récupère correctement le caractère. J'ai fais pas mal de recherches sur google et j'ai vu plusieurs posts où la fonction MapVirtualKey() est utilisée. J'ai essayé donc de l'utiliser aussi, sans succès : j'ai toujours le keycode qui est retourné, et non le caractère. J'ai aussi essayé d'appeler TranslateMessage() dans le callback du KEYUP, mais pareil, sans succès (toujours le keycode). Donc je voudrais savoir si c'est possible, et si oui, comment (si c'est avec MapVirtualKey(), comment l'utiliser correctement)
Faut tester si Caps Lock ou Shift est pressé pour faire la difference, vu que le lParam est identique
Ca sera bon pour les caractères alphabétiques uniquement, et pour des claviers européens, mais pour tout le reste (caractères accentués, calviers japonais ou corréens, etc...), ça ne marchera pas. L'exemple avec 'a' était donner juste pour illustrer le problème.
Ce que je me demande est : comment, avec juste le keycode, récupérer la valeur "caractère" de la touche. Il me semble qu'il faudrait utiliser TranslateMessage() pour justement "traduire" ce keycode. Mais comme je l'ai dit, je n'ai pas réussi à l'utiliser correctement (i.e. la fonction ne traduit rien si je lui passe un MSG remplis avec les données renvoyée par la procédure des messages)
"Laurent" <petrus@beykj.fr> wrote in news:jau3a9$3ge$1@dont-email.me:
"Vincent Torri" <vincent.torri@gmail.com> a écrit dans le message de
news: Xns9FAABB7E08A71vincenttorrigmailcom@94.75.214.90...
Je voudrais récupérer le caractère associé à un WM_KEYUP. Par exemple
si je relache la touche correspondant à la lettre A, je voudrais
récupérer le caractère 'a' (97) et non la keycode 'A' (65). Pas de
problème avec WM_KEYDOWN car TranslateMessage() envoie WM_CHAR et je
récupère correctement le caractère.
J'ai fais pas mal de recherches sur google et j'ai vu plusieurs posts
où la fonction MapVirtualKey() est utilisée. J'ai essayé donc de
l'utiliser aussi, sans succès : j'ai toujours le keycode qui est
retourné, et non le caractère. J'ai aussi essayé d'appeler
TranslateMessage() dans le callback du KEYUP, mais pareil, sans
succès (toujours le keycode). Donc je voudrais savoir si c'est
possible, et si oui, comment (si c'est avec MapVirtualKey(), comment
l'utiliser correctement)
Faut tester si Caps Lock ou Shift est pressé pour faire la difference,
vu que le lParam est identique
Ca sera bon pour les caractères alphabétiques uniquement, et pour des
claviers européens, mais pour tout le reste (caractères accentués,
calviers japonais ou corréens, etc...), ça ne marchera pas. L'exemple
avec 'a' était donner juste pour illustrer le problème.
Ce que je me demande est : comment, avec juste le keycode, récupérer la
valeur "caractère" de la touche. Il me semble qu'il faudrait utiliser
TranslateMessage() pour justement "traduire" ce keycode. Mais comme je
l'ai dit, je n'ai pas réussi à l'utiliser correctement (i.e. la fonction
ne traduit rien si je lui passe un MSG remplis avec les données renvoyée
par la procédure des messages)
Je voudrais récupérer le caractère associé à un WM_KEYUP. Par exemple si je relache la touche correspondant à la lettre A, je voudrais récupérer le caractère 'a' (97) et non la keycode 'A' (65). Pas de problème avec WM_KEYDOWN car TranslateMessage() envoie WM_CHAR et je récupère correctement le caractère. J'ai fais pas mal de recherches sur google et j'ai vu plusieurs posts où la fonction MapVirtualKey() est utilisée. J'ai essayé donc de l'utiliser aussi, sans succès : j'ai toujours le keycode qui est retourné, et non le caractère. J'ai aussi essayé d'appeler TranslateMessage() dans le callback du KEYUP, mais pareil, sans succès (toujours le keycode). Donc je voudrais savoir si c'est possible, et si oui, comment (si c'est avec MapVirtualKey(), comment l'utiliser correctement)
Faut tester si Caps Lock ou Shift est pressé pour faire la difference, vu que le lParam est identique
Ca sera bon pour les caractères alphabétiques uniquement, et pour des claviers européens, mais pour tout le reste (caractères accentués, calviers japonais ou corréens, etc...), ça ne marchera pas. L'exemple avec 'a' était donner juste pour illustrer le problème.
Ce que je me demande est : comment, avec juste le keycode, récupérer la valeur "caractère" de la touche. Il me semble qu'il faudrait utiliser TranslateMessage() pour justement "traduire" ce keycode. Mais comme je l'ai dit, je n'ai pas réussi à l'utiliser correctement (i.e. la fonction ne traduit rien si je lui passe un MSG remplis avec les données renvoyée par la procédure des messages)
Laurent
"Vincent Torri" a écrit dans le message de news:
Ce que je me demande est : comment, avec juste le keycode, récupérer la valeur "caractère" de la touche. Il me semble qu'il faudrait utiliser TranslateMessage() pour justement "traduire" ce keycode. Mais comme je l'ai dit, je n'ai pas réussi à l'utiliser correctement (i.e. la fonction ne traduit rien si je lui passe un MSG remplis avec les données renvoyée par la procédure des messages)
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment jamais..
"Vincent Torri" <vincent.torri@gmail.com> a écrit dans le message de news:
Xns9FAAEF6584929vincenttorrigmailcom@94.75.214.90...
Ce que je me demande est : comment, avec juste le keycode, récupérer la
valeur "caractère" de la touche. Il me semble qu'il faudrait utiliser
TranslateMessage() pour justement "traduire" ce keycode. Mais comme je
l'ai dit, je n'ai pas réussi à l'utiliser correctement (i.e. la fonction
ne traduit rien si je lui passe un MSG remplis avec les données renvoyée
par la procédure des messages)
MapVirtualKey() definit ce qu'on veut selon uMapType
Mais pas dans WM_KEYUP vu que lParam ne change pas
(et TranslateMessage() ne s'appelle jamais là non plus)
WM_KEYUP ne se traite d'ailleurs quasiment jamais..
Ce que je me demande est : comment, avec juste le keycode, récupérer la valeur "caractère" de la touche. Il me semble qu'il faudrait utiliser TranslateMessage() pour justement "traduire" ce keycode. Mais comme je l'ai dit, je n'ai pas réussi à l'utiliser correctement (i.e. la fonction ne traduit rien si je lui passe un MSG remplis avec les données renvoyée par la procédure des messages)
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment jamais..
torri
On Mon, 28 Nov 2011 09:01:31 +0100, Laurent wrote:
"Vincent Torri" a écrit dans le message de news:
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment jamais..
C'est gênant.
Déjà, je justifie ma question : je participe au développement d'un ensemble de bibliothèques écrites pour unix (donc Xorg est utilisé pour la gestion du clavier), et je porte ces bibliothèques sous Windows (donc j'essaie autant que faire se peut d'avoir le même comportement sous Windows). Or X permet, pour le keyup, d'avoir le caractère, exactement comme pour le keydown. Or sous windows, je ne peux apparemment n'avoir que le virtual key code, ce qui est bien dommage vu ce que je veux faire.
Peut-être que si je mets en cache la valeur lors du keydown, je peux la récupérer lors du keyup.
On Mon, 28 Nov 2011 09:01:31 +0100, Laurent wrote:
"Vincent Torri" <vincent.torri@gmail.com> a écrit dans le message de
news: Xns9FAAEF6584929vincenttorrigmailcom@94.75.214.90...
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans
WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne
s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment
jamais..
C'est gênant.
Déjà, je justifie ma question : je participe au développement d'un
ensemble de bibliothèques écrites pour unix (donc Xorg est utilisé pour
la gestion du clavier), et je porte ces bibliothèques sous Windows (donc
j'essaie autant que faire se peut d'avoir le même comportement sous
Windows). Or X permet, pour le keyup, d'avoir le caractère, exactement
comme pour le keydown. Or sous windows, je ne peux apparemment n'avoir
que le virtual key code, ce qui est bien dommage vu ce que je veux faire.
Peut-être que si je mets en cache la valeur lors du keydown, je peux la
récupérer lors du keyup.
On Mon, 28 Nov 2011 09:01:31 +0100, Laurent wrote:
"Vincent Torri" a écrit dans le message de news:
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment jamais..
C'est gênant.
Déjà, je justifie ma question : je participe au développement d'un ensemble de bibliothèques écrites pour unix (donc Xorg est utilisé pour la gestion du clavier), et je porte ces bibliothèques sous Windows (donc j'essaie autant que faire se peut d'avoir le même comportement sous Windows). Or X permet, pour le keyup, d'avoir le caractère, exactement comme pour le keydown. Or sous windows, je ne peux apparemment n'avoir que le virtual key code, ce qui est bien dommage vu ce que je veux faire.
Peut-être que si je mets en cache la valeur lors du keydown, je peux la récupérer lors du keyup.
torri
On Mon, 28 Nov 2011 09:01:31 +0100, Laurent wrote:
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment jamais..
apparemment, un truc comme ceci fonctionne (sans la gestion des erreurs) :
On Mon, 28 Nov 2011 09:01:31 +0100, Laurent wrote:
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans
WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne
s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment
jamais..
apparemment, un truc comme ceci fonctionne (sans la gestion des erreurs) :
On Mon, 28 Nov 2011 09:01:31 +0100, Laurent wrote:
MapVirtualKey() definit ce qu'on veut selon uMapType Mais pas dans WM_KEYUP vu que lParam ne change pas (et TranslateMessage() ne s'appelle jamais là non plus) WM_KEYUP ne se traite d'ailleurs quasiment jamais..
apparemment, un truc comme ceci fonctionne (sans la gestion des erreurs) :