Python中字符转键码

2 投票
2 回答
3992 浏览
提问于 2025-04-15 17:20

我想把一个字符串转换成键码,这样我就可以用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))

撰写回答