char到python中的keycode

时间:2009-12-24 10:55:57

标签: python linux keycode

我希望能够将字符串转换为keycode以使用Xlib编写它(以模拟linux上的用户操作)。键码不是ascii,而是你在

上使用xev时获得的代码
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

例如'a'的键码是24

我可以很容易地检测出该字母是否为upercase,然后组合ALT +小写字母(字母),但我不知道如何获取密钥代码。

一个解决方案是成为每个组合的列表(a = 24,b = 56,c = 54,...)但如果有一个函数会更好。

我正在使用azerty键盘。 qwerty键盘上同一个字母的键码是否不同?

谢谢

2 个答案:

答案 0 :(得分:6)

我发现this code正在做我想要的事情。

它使用函数display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))

答案 1 :(得分:3)

键码不仅取决于键盘硬件,还取决于用户对键盘布局的偏好 - 例如,用户可以在qwerty键盘上使用dvorak布局。

最好的解决方案可能是使用python-xlib根据用户的键盘首选项查找信息。我不知道如何做到这一点的细节。

原始解决方案是运行xmodmap -pke并解析输出。