代码之家  ›  专栏  ›  技术社区  ›  Martin Trigaux

python中的字符到键代码

  •  2
  • Martin Trigaux  · 技术社区  · 14 年前

    我想能够将一个字符串转换成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

    我可以很容易地检测出字母是否为upercase,然后组合成alt+小写(letter),但我不知道如何获取键代码。

    一种解决方案是列出每种组合(a=24,b=56,c=54,…),但如果有一个函数的话会更好。

    我用的是阿塞拜疆键盘。QWERTY键盘上相同字母的键码不同吗?

    谢谢您

    2 回复  |  直到 14 年前
        1
  •  6
  •   Martin Trigaux    14 年前

    我找到了 this code 这正是我想要的。

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

        2
  •  3
  •   unutbu    14 年前

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

    最好的解决方案可能是使用python xlib根据用户的键盘偏好找出信息。我不知道怎么做的细节。

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