我希望能够将字符串转换为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键盘上同一个字母的键码是否不同?
谢谢
答案 0 :(得分:6)
我发现this code正在做我想要的事情。
它使用函数display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))
答案 1 :(得分:3)
键码不仅取决于键盘硬件,还取决于用户对键盘布局的偏好 - 例如,用户可以在qwerty键盘上使用dvorak布局。
最好的解决方案可能是使用python-xlib根据用户的键盘首选项查找信息。我不知道如何做到这一点的细节。
原始解决方案是运行xmodmap -pke
并解析输出。