python 中的 char 到 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
我可以轻松检测到该字母是否为大写,然后组合 ALT+小写(字母),但我不这样做不知道如何获取密钥代码。
一种解决方案是列出每个组合(a = 24,b = 56,c = 54,...),但如果有一个函数会更好。
我正在使用 azerty 键盘。 qwerty 键盘上相同字母的键码是否不同?
谢谢
I want to be able to translate a string to keycode to write it with Xlib (to simulate user action on linux). The keycode are not the ascii but the code you get when you do use xev on
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
for exemple the keycode for 'a' is 24
I can easly detect if the letter is upercase and then make a combination ALT+lowercase(letter) but I don't know how to get the keycode.
One solution would be to be a list of every combination (a=24, b=56, c=54,...) but would be better if there is a function.
I'm using an azerty keyboard. Is the keycode for the same letter different on an qwerty keyboard ?
thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我发现 这段代码 正是我想要的。
它使用函数
display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))
I've found this code which is doing exactly what I wanted.
It uses the function
display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))
键码不仅取决于键盘硬件,还取决于用户对键盘布局的偏好 - 例如,用户可能在 qwerty 键盘上使用 dvorak 布局。
最好的解决方案可能是使用 python-xlib 根据用户的键盘首选项查找信息。我不知道如何做到这一点的细节。
一个粗略的解决方案是运行 xmodmap -pke 并解析输出。
The keycodes depend not only on the keyboard hardware, but also on the user's preference for keyboard layout -- a user may use a dvorak layout on a qwerty keyboard, for example.
The best solution would probably be to use python-xlib to find out the information per the user's keyboard preferences. I don't know the details on how to do that.
A crude solution would be to run
xmodmap -pke
and parse the output.