Python中字符转键码
我想把一个字符串转换成键码,这样我就可以用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。
我可以很容易地判断字母是否是大写,然后组合成ALT+小写字母,但我不知道怎么获取键码。
一个解决办法是列出每个字母的组合(比如a=24,b=56,c=54,...),但如果有一个函数可以直接获取就更好了。
我使用的是azerty键盘。请问同一个字母在qwerty键盘上的键码会不同吗?
谢谢!
2 个回答
4
按键代码不仅和键盘的硬件有关,还和用户选择的键盘布局有关。比如,有些人可能在使用QWERTY键盘的情况下,选择了Dvorak布局。
最好的办法可能是使用python-xlib这个库,来根据用户的键盘偏好获取相关信息。不过我不太清楚具体怎么操作。
一个简单粗暴的办法是运行 xmodmap -pke
命令,然后分析它的输出结果。
6
我找到了这段代码,它正好实现了我想要的功能。
这段代码使用了一个函数,叫做 display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))
。