【发布时间】:2023-03-14 04:45:01
【问题描述】:
我正在将 Xlib 用于一个项目,并且我正在尝试获取与按下的键相关的 KeySym。
我得到了与按下的键、键盘修饰符和键盘指示器相关的 KeyCode。我指的是this page 以了解如何检索正确的密钥,但它必须是过时的或什么的,因为我的 X 不像那个页面说的那样。
我有一些问题:
什么是模式开关?如何查看我的模式开关是什么键以及如何设置它? (通过 Xlib 函数或通过命令,都是一样的)。
该页面显示与 KeyCode 关联的前 4 个 KeySym(通过
XGetKeyboardMapping找到,或通过xmodmap -pk命令显示)分为两组。 MODE SWITCH 在组之间切换,组内的第一个或第二个 KeySym 是根据修饰符(即 shift 键)或指示符(即 caps lock)选择的。但是在我的 X 上,我可以看到,如果按下 shift,我会切换到第三个 KeySym,而不是第二个。在许多欧洲布局中,AltGr 键绑定到 KeySym
XS_ISO_Level3_Shift,它不属于任何键盘修饰符(即shift、lock、control、mod1、@987654329 @、mod3、mod4和mod5)。当按下这样的XS_ISO_Level3_Shift时,将选择与 KeyCode 关联的第五个 KeySym。为什么?我在哪里可以找到有关此XS_ISO_Level3_Shift和其他实际使用但未在 Xlib 手册中记录的键符的信息?
【问题讨论】:
-
然后是 XKeyboard 扩展。我不能确定它们可能的一切都可以用更基本的 xlib 可能性来描述。如果您的实现使用它们,也许这就是您感到困惑的原因(
xdpyinfo | grep XKEYBOARD知道是否是这种情况)。每次我看到那个,我开始感到困惑,然后明白了。但我从来没有达到我记得那个混乱的基本逻辑的状态。 -
你的系统有
xev吗?这通常是解决问题的快速简单的方法。