Page 1 sur 1

[Résolu] (MapVirtualKey_() International (AZERTY)

Publié : dim. 24/mars/2019 17:17
par falsam
Bonjour

Ce code renvoie le code ASCII de Q

Code : Tout sélectionner

Debug Chr(MapVirtualKey_(#PB_Key_A, 1))
Comment puis obtenir la bonne valeur ?

Précision : Je ne souhaite pas avoir une solution utilisant la bibliothèque KeyBoard car je ne suis pas dans un contexte 2d ou 3d

Merci d'avance

■ Meilleure solution (Window uniquement)
https://www.purebasic.fr/french/viewtop ... 95#p203295

Re: MapVirtualKey_() International (AZERTY)

Publié : lun. 25/mars/2019 5:06
par Ollivier
Tu peux faire un tableau de traduction avec GetKeyNameText_()

Le 1er param sert d'entrée

*Buffer = AllocateMemory(32)
Param1 = ((Entree & $FF) << 16) | $1000000
Param2 = *Buffer
Param3 = 16

ou bien traduire directement.


Le plus "rapide" c'est plusieurs tableau de 256 cellules :

Tableau1 : résultats temps réels clavier et boutons souris avec bit de bascule (GetAsyncKeyboard() ).
Tableau2 : valeurs équivalentes en local
Tableau3 : horloges individuelles (dans le cas des frappes de texte)
Tableau4 : méthodes/fonctions à appeler si non 0 (programmation des touches)

Re: MapVirtualKey_() International (AZERTY)

Publié : mar. 26/mars/2019 19:24
par TazNormand
Salut Falsounet,

Ton problème vient, je pense, du fait que PB considère le clavier comme étant par défaut en QWERTY. En utilisant MapVirtualKeyEx_() à la place de MapVirtualKey_(), tu peux forcer le code "langage" :

Code : Tout sélectionner

Debug Hex(GetKeyboardLayout_(0),#PB_Word)
kbdLyt=GetKeyboardLayout_(0)
Debug Chr(MapVirtualKey_(#PB_Key_A, 1))
Debug Chr(MapVirtualKeyEx_(#PB_Key_A, 1,kbdLyt))
Debug ""
Debug "QWERTY forcé"
Debug Chr(MapVirtualKeyEx_(#PB_Key_A, 1,$0409))
Debug Chr(MapVirtualKeyEx_(#PB_Key_Z, 1,$0409))
Debug Chr(MapVirtualKeyEx_(#PB_Key_Q, 1,$0409))
Debug Chr(MapVirtualKeyEx_(#PB_Key_S, 1,$0409))
Debug Chr(MapVirtualKeyEx_(#PB_Key_W, 1,$0409))
Debug ""
Debug "AZERTY (par défaut sur mon clavier)"
Debug Chr(MapVirtualKeyEx_(#PB_Key_A, 1, kbdLyt))
Debug Chr(MapVirtualKeyEx_(#PB_Key_Z, 1, kbdLyt))
Debug Chr(MapVirtualKeyEx_(#PB_Key_Q, 1, kbdLyt))
Debug Chr(MapVirtualKeyEx_(#PB_Key_S, 1, kbdLyt))
Debug Chr(MapVirtualKeyEx_(#PB_Key_W, 1, kbdLyt))

Code : Tout sélectionner

40C
Q
Q

QWERTY forcé
A
Z
Q
S
W

AZERTY (par défaut sur mon clavier)
Q
W
A
S
Z
Les codes Layout Clavier de Microsoft son visibles sur ce lien

Re: MapVirtualKey_() International (AZERTY)

Publié : mer. 27/mars/2019 9:11
par Micoute
falsam a écrit :Bonjour

Ce code renvoie le code ASCII de Q

Code : Tout sélectionner

Debug Chr(MapVirtualKey_(#PB_Key_A, 1))
Comment puis obtenir la bonne valeur ?

Précision : Je ne souhaite pas avoir une solution utilisant la bibliothèque KeyBoard

Merci d'avance
il suffit d'utiliser le code ascii renvoyé, c'est à dire pour cette touche

Code : Tout sélectionner

Debug Chr(MapVirtualKey_(#PB_Key_Q, 1))

Re: MapVirtualKey_() International (AZERTY)

Publié : mer. 27/mars/2019 11:30
par falsam
Merci Tazou c'est la meilleure solution pour window.
Ollivier a écrit :Le plus "rapide" c'est plusieurs tableau de 256 cellules
Ollivier merci. Pour une solution multiplate-forme ca serait idéal.

Micoute on est d'accord que tu es hors sujet ^^

Re: [Résolu] (MapVirtualKey_() International (AZERTY)

Publié : mer. 27/mars/2019 14:40
par Micoute
J'ai juste voulu aider.

Re: MapVirtualKey_() International (AZERTY)

Publié : ven. 29/mars/2019 4:29
par Ollivier
Falsam a écrit :
Ollivier a écrit :Le plus "rapide" c'est plusieurs tableau de 256 cellules
Ollivier merci. Pour une solution multiplate-forme ca serait idéal.
Je ne sais pas. Une solution qui n'exclut ni une frappe correcte de traitement de texte ni une acquisition directe de touche, oui. Une solution multi-plateforme, c'est moins sûr...