2010-05-09 14 views
3

J'ai remarqué une différence entre les codes-clés que donne vkCode en C++ et ceux que nous offre KeyEvent de Java. (Bien sûr, les caractères normaux ont le même code (0 => 48 exactement comme l'ASCII) mais ils diffèrent dans les autres touches). Existe-t-il un moyen de les «traduire» de l'un à l'autre (quelle est la logique derrière chacun d'eux?) Ou suis-je censé utiliser des charges de commutateurs et de FI pour cela? Si ça aide, mon application est moitié en C++ et moitié en JAVA à cause des Native Hooks que C++ nous donne et elle obtient les keycodes des touches que l'utilisateur appuie et ensuite le java va les utiliser.Différence entre le code-clé du clavier C++ et le code-clé JAVA KeyEvent

Merci d'avance.

+0

Standard C++ n'a aucune notion de tout ce qu'on appelle "vkCode" - peut-être pensez-vous à une bibliothèque spécifique à la plate-forme? Si oui, veuillez dire lequel. –

+0

Eh bien, en quelque sorte. J'utilise windows.h et le vkCode est d'ici: ((KBDLLHOOKSTRUCT *) lparam) -> vkCode // Suppose que lparam est le paramètre LPARAM dont les hooks ont besoin. – Auxiliary

Répondre

3

ou suis-je censé utiliser des charges de commutateurs et FI

Vous pouvez probablement les mettre dans un lookup table, qui est, mettre les Java keycodes dans un grand tableau, donc il vous suffit de faire javaKeyCode = keyLut[cppScanCode].

Une liste de codes de balayage peut être trouvée here, et le VK_KEYCODES peut bien sûr être trouvé dans the API docs for KeyEvent.

Java est conçu pour être indépendant de la plate-forme, donc en appuyant sur la touche de gauche par exemple, donnera toujours VK_LEFT, peu importe le code de balayage. Je ne suis pas entièrement sûr, mais je suppose que le C++ - scancode dépend du matériel.

+0

Merci. Je pense que c'est mon seul espoir. Je n'ai jamais utilisé le Lut auparavant et l'EDI Netbeans me dit que ça vient de Java.Awt.Image. Est-ce la bonne? – Auxiliary

+0

Non non, les tables de recherche n'a rien à voir avec l'API. C'est simplement un moyen d'encoder des fonctions simples en tableaux. – aioobe