【问题标题】:Portable keycodes in X11?X11 中的便携式键码?
【发布时间】:2010-08-25 07:01:08
【问题描述】:

我想获得与映射无关的键码,但文档说 XKeyEvent 结构中的“键码”取决于硬件和驱动程序,我不能依赖它。如何在 Windows 中获取一些便携式密钥代码,例如 VK_*?

【问题讨论】:

    标签: x11 keyboard-events xlib keyboard-layout


    【解决方案1】:

    您需要关键符号,而不是关键代码。 参见 XKeycodeToKeysym() 和 /usr/include/X11/keysymdef.h

    要严格正确(尤其是国际化),您需要一大堆代码,类似于http://git.gnome.org/browse/gtk+/tree/gdk/x11/gdkkeys-x11.c 但是,如果您使用原始 Xlib 而不是工具包,您可能不关心这种事情(如果您从事多年工作),并且 XKeycodeToKeysym() 对于美国键盘来说已经足够好了。

    【讨论】:

    • 但是如果用户将键盘布局更改为非美国的布局怎么办?
    • 是的,就是这样。我错误地使用了 XLookupString() 而不是 XKeycodeToKeysym()。
    • 如果您关心国际键盘和语言,那么使用工具包而不是 Xlib 是唯一明智的做法,真的。我链接到的 gtk 文件为您提供了键盘部分,但省略了输入法,相当于 GtkAccelGroup(使加速器与国际键盘一起使用),显示/渲染任意 unicode,双向文本编辑等。我不知道如何简要总结 gdkkeys-x11.c... 我的意思是,这并不容易。我实现了该文件的第一个版本,但我不记得很多了。只需 XKeycodeToKeysym() 就可以满足多种用途。
    猜你喜欢
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2011-02-20
    • 2016-06-20
    • 2011-03-06
    • 2013-11-24
    相关资源
    最近更新 更多