【问题标题】:X11 KeySyms: Switch mode, KeySym groups and XK_ISO_Level3_ShiftX11 KeySyms:切换模式、KeySym 组和 XK_ISO_Level3_Shift
【发布时间】:2023-03-14 04:45:01
【问题描述】:

我正在将 Xlib 用于一个项目,并且我正在尝试获取与按下的键相关的 KeySym。

我得到了与按下的键、键盘修饰符和键盘指示器相关的 KeyCode。我指的是this page 以了解如何检索正确的密钥,但它必须是过时的或什么的,因为我的 X 不像那个页面说的那样。

我有一些问题:

  1. 什么是模式开关?如何查看我的模式开关是什么键以及如何设置它? (通过 Xlib 函数或通过命令,都是一样的)。

  2. 该页面显示与 KeyCode 关联的前 4 个 KeySym(通过 XGetKeyboardMapping 找到,或通过 xmodmap -pk 命令显示)分为两组。 MODE SWITCH 在组之间切换,组内的第一个或第二个 KeySym 是根据修饰符(即 shift 键)或指示符(即 caps lock)选择的。但是在我的 X 上,我可以看到,如果按下 shift,我会切换到第三个 KeySym,而不是第二个。

  3. 在许多欧洲布局中,AltGr 键绑定到 KeySym XS_ISO_Level3_Shift,它不属于任何键盘修饰符(即 shiftlockcontrolmod1、@987654329 @、mod3mod4mod5)。当按下这样的XS_ISO_Level3_Shift 时,将选择与 KeyCode 关联的第五个 KeySym。为什么?我在哪里可以找到有关此 XS_ISO_Level3_Shift 和其他实际使用但未在 Xlib 手册中记录的键符的信息?

【问题讨论】:

  • 然后是 XKeyboard 扩展。我不能确定它们可能的一切都可以用更基本的 xlib 可能性来描述。如果您的实现使用它们,也许这就是您感到困惑的原因(xdpyinfo | grep XKEYBOARD 知道是否是这种情况)。每次我看到那个,我开始感到困惑,然后明白了。但我从来没有达到我记得那个混乱的基本逻辑的状态。
  • 你的系统有xev吗?这通常是解决问题的快速简单的方法。

标签: c x11 xlib xorg


【解决方案1】:

看起来您正在阅读的页面早于 Xkb - 我猜内容至少有 10-15 年的历史。

见:http://www.xfree86.org/current/XKBproto.pdf

“xmodmap -pm”会显示模式切换等修饰键。

我相信,有了 Xkb,基本上一切的行为都是可配置的。例如,开始查看 /usr/share/X11/xkb/。我对此知之甚少,但希望查看 Xkb 而不是旧文档可以让您找到正确的方向。

【讨论】:

    【解决方案2】:

    Tronche 的手册不完整。我在以下位置找到了有关键盘功能的更多信息:
    1.xlib.pdf
    2.xlib html manual at static.cray-cyber.org。该文档是隐藏的并且有点损坏。链接以小写字母输入,但实际文档为大写字母。在浏览器中更正网址后,它是可读的。

    我猜PDF是完整的。我不知道 [2] 是否也完整,但例如第 16.2 章(对不起,我无法提供链接,因为我的链接限制已超出)比 Tronche 的文档中的要长得多。

    我是了解 xlib 的初学者,这就是我今天设法用谷歌搜索出来的。

    【讨论】:

    • 插入第 16.2 章链接:link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2018-07-07
    • 2015-08-03
    • 2020-01-17
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多