【问题标题】:How to send a key press event to X for a key that isn't on the keyboard?对于不在键盘上的键,如何将按键事件发送到 X?
【发布时间】:2012-02-15 19:58:17
【问题描述】:

我想向 X 发送一个合成按键事件。对于大多数使用XSendEvent 发送KeyPress 事件的键来说,这一切似乎都可以正常工作。不幸的是,我无法让它为实际上不在我键盘上的键工作 - 在这种情况下是英镑符号 £(我有一个美国键盘)。

问题似乎是XKeyEvent 结构需要一个keycode 而我只有一个KeySym 来表示这个标志。 XKeysymToKeycode 返回 0,因为它没有密钥。

有谁知道我如何做到这一点?可能我在这里需要一些完全不同的方法 - 任何建议都值得赞赏!

【问题讨论】:

    标签: keyboard key x11


    【解决方案1】:

    @Peter,您正在寻找正确的路线。部分挑战在于KeySyms 的集合远大于keycode 的大小。您可以通过在合成事件之前修改键盘映射来解决此问题。

    看看libfakekey:http://git.yoctoproject.org/cgit/cgit.cgi/libfakekey/tree/src/libfakekey.c

    尤其是:fakekey_press_keysym 函数,它接受 KeySym 而不仅仅是代码。

    【讨论】:

    • 谢谢大家 - 这似乎确实有效,修改键盘映射似乎可以解决问题。
    【解决方案2】:

    看看xdotool

    【讨论】:

    • 感谢您的建议 - 我不知道这一点,听起来它应该可以工作,尽管到目前为止它也没有。我想知道我的 X 安装是否有些微妙的地方不太对劲......
    • 你可以尝试用一个空的 Xorg.conf 来启动 X(如果你还没有这样做的话)。
    猜你喜欢
    • 2013-03-12
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    相关资源
    最近更新 更多