IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

message WM_KEYUP et caractère.


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut message WM_KEYUP et caractère.
    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)

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Regarde ToAscii(Ex) ou ToUnicode(Ex).

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Regarde ToAscii(Ex) ou ToUnicode(Ex).
    ca ne marchera pas. Ce que j'ai est uniquement le virtual key code. Autant pour les claviers utilisant notre alphabet, je peux m'en sortir, autant pour des claviers ne l'utilisant pas, c'est inutile. Je pourrais juste utiliser tolower(), ou bien faire juste une petite addition pour obtenir le bon caractère, mais c'est un mauvais hack.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Citation Envoyé par dd'Oursse Voir le message
    ca ne marchera pas.
    Merci pour la confiance

    Citation Envoyé par dd'Oursse Voir le message
    Ce que j'ai est uniquement le virtual key code.
    Et c'est tout ce qu'il te faut !

    Citation Envoyé par dd'Oursse Voir le message
    Autant pour les claviers utilisant notre alphabet, je peux m'en sortir, autant pour des claviers ne l'utilisant pas, c'est inutile.
    Pourtant quand tu lis "Unicode", ça devrait faire tilt!

    La fonction attend le VK et tu l'as, le ScanCode que tu peux facilement déterminer par MapVirtualKey et l'état actuel de toutes les touches que tu récupères par GetKeyboardState. Ça me semble suffisant

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    La fonction attend le VK et tu l'as, le ScanCode que tu peux facilement déterminer par MapVirtualKey et l'état actuel de toutes les touches que tu récupères par GetKeyboardState. Ça me semble suffisant
    alors, j'aimerais avoir des explications : MapVirtualKey(wparam, MAPVK_VK_TO_CHAR) me renvoie le keycode et non le scancode (pour la touche 'a', MapVirtualKey() me renvoie 'A'). Donc je ne vois pas en quoi ça m'aide.

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut


    MAPVK_VK_TO_VSC : The uCode parameter is a virtual-key code and is translated into a scan code.
    C'est une façon de faire, mais tu peux aussi le récupérer directement depuis WM_KEYUP - LParam

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2013, 23h33
  2. Messages d'erreurs + caractères accentués
    Par bamak dans le forum Zend_Form
    Réponses: 3
    Dernier message: 08/04/2011, 17h55
  3. [Lazarus] [0.9.26/Linux] Message avec un caractère accentué
    Par ovni76 dans le forum Lazarus
    Réponses: 9
    Dernier message: 24/01/2009, 19h31
  4. Réponses: 13
    Dernier message: 24/05/2006, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo