char en python code touche
Question
Je veux être capable de traduire une chaîne à l'écrire code touche avec Xlib (pour simuler l'action de l'utilisateur sur Linux). Le code d'activation ne sont pas les ascii mais le code que vous obtenez lorsque vous utilisez xev sur
linuxKeyPress event, serial 33, synthetic NO, window 0x6400001,
root 0x13c, subw 0x0, time 51212100, (259,9), root:(262,81),
state 0x0, keycode 24 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
pour exemple le mot de code pour 'a' est 24
Je peux easly détecter si la lettre est upercase puis faire une combinaison ALT + minuscule (lettre) mais je ne sais pas comment obtenir le code d'activation.
Une solution serait d'être une liste de toutes les combinaisons (a = 24, b = 56, c = 54, ...), mais serait mieux s'il y a une fonction.
J'utilise un clavier AZERTY. Le code d'activation pour la même lettre différente sur un clavier qwerty?
Merci
La solution
Je l'ai trouvé ce code qui est en train de faire exactement ce que je voulais.
Il utilise la fonction display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))
Autres conseils
Les keycodes dépendent non seulement sur le matériel du clavier, mais aussi sur la préférence de l'utilisateur pour la mise en page du clavier -. Un utilisateur peut utiliser une mise en page de Dvořák sur un clavier qwerty, par exemple
La meilleure solution serait probablement d'utiliser python-xlib pour trouver les informations selon les préférences du clavier de l'utilisateur. Je ne connais pas les détails sur la façon de le faire.
Une solution brute serait d'exécuter xmodmap -pke
et analyser la sortie.