2

我希望能够将字符串转换为键码以使用 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 键盘上相同字母的键码是否不同?

谢谢你

4

2 回答 2

6

我发现这段代码正是我想要的。

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

于 2009-12-24T12:01:54.627 回答
4

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

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

一个粗略的解决方案是运行xmodmap -pke并解析输出。

于 2009-12-24T11:47:37.590 回答