python 中的 char 到 keycode

发布于 2024-08-16 04:36:58 字数 616 浏览 4 评论 0原文

我希望能够将字符串转换为键码以使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦毁影碎の 2024-08-23 04:36:58

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

它使用函数 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))

你好,陌生人 2024-08-23 04:36:58

键码不仅取决于键盘硬件,还取决于用户对键盘布局的偏好 - 例如,用户可能在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文