我正在为一个项目使用 Xlib,我正在尝试获取与按下的键相关的 KeySym。
我已经获得了与按下的键、键盘修改器和键盘指示器相关的 KeyCode。我指的是 this page了解如何检索正确的 key ,但它必须已过时或其他原因,因为我的 X 的行为并不像该页面所说的那样。
我有一些问题:
什么是模式切换?我怎样才能看到我的模式开关是哪个键以及如何设置它? (通过 Xlib 函数或通过命令,都是一样的)。
该页面表示与 KeyCode 关联的前 4 个 KeySyms(通过
XGetKeyboardMapping
找到,或通过xmodmap -pk
命令显示)分为两组. MODE SWITCH 在组之间切换,并且在组内根据修饰符(即 shift 键)或指示器(即大写锁定)选择第一个或第二个 KeySym。但是在我的 X 上我可以看到,如果按下 shift,我会切换到第三个 KeySym,而不是第二个。在许多欧洲布局中,AltGr 键绑定(bind)到 KeySym
XS_ISO_Level3_Shift
,它不属于任何键盘修饰符(即,shift
、lock
、control
、mod1
、mod2
、mod3
、mod4
和mod5
)。当按下这样的XS_ISO_Level3_Shift
时,将选择与 KeyCode 关联的第五个 KeySym。为什么?我在哪里可以找到有关此XS_ISO_Level3_Shift
以及实际使用但未记录在 Xlib 手册中的其他键符号的一些信息?
最佳答案
看起来您正在阅读的页面早于 Xkb - 我猜该内容至少有 10-15 年的历史。
参见:http://www.xfree86.org/current/XKBproto.pdf
“xmodmap -pm”会显示模式切换等修改键。
我相信,有了 Xkb,基本上所有的行为都是可配置的。例如,开始查看/usr/share/X11/xkb/。我对此了解不多,但希望查看 Xkb 而不是旧文档会让您指向正确的方向。
关于c - X11 KeySyms : Switch mode, KeySym 组和 XK_ISO_Level3_Shift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135735/