c - X11 KeySyms : Switch mode, KeySym 组和 XK_ISO_Level3_Shift

标签 c x11 xlib xorg

我正在为一个项目使用 Xlib,我正在尝试获取与按下的键相关的 KeySym。

我已经获得了与按下的键、键盘修改器和键盘指示器相关的 KeyCode。我指的是 this page了解如何检索正确的 key ,但它必须已过时或其他原因,因为我的 X 的行为并不像该页面所说的那样。

我有一些问题:

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

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

  3. 在许多欧洲布局中,AltGr 键绑定(bind)到 KeySym XS_ISO_Level3_Shift,它不属于任何键盘修饰符(即,shiftlock controlmod1mod2mod3mod4mod5)。当按下这样的 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/

相关文章:

c - 当用户输入数字以外的任何内容时,如何输出错误?

x11 - X11/Xlib 的全局热键

c++ - 如何全局捕获 X11 中的每一次鼠标点击?

使用 Xlib 关闭应用程序窗口

c - PIC C编译器RS232传输代码

c - 以下代码有什么问题?我收到段错误

c - Gtk : get usable area of each monitor (excluding panels)

python - 在 Python 中使用 GTK 和 Xlib

linux - xkb 是 xlib 标准的一部分吗?

c - 取数组地址时指针运算结果不同