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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top