xmodmap / 核心协议映射中的锁存组 (XChangeKeyboardMapping())

xmodmap / 核心协议映射中的锁存组 (XChangeKeyboardMapping())

这个问题可能应该去回顾计算,因为人们应该使用 XKB,但我真的很好奇他们是如何做到的闩锁使用 xmodmap / 进行组切换XChangeKeyboardMapping()

我阅读了 xmodmap man 和 X11 lib 文档,似乎要拥有英语和俄语键盘布局,您需要将键符号映射到某些键码(例如[code_for_letter_l] --> XK_l XK_L XK_Cyrillic_de XK_Cyrillic_DE),然后将某些键码映射到 MODE_SWITCH。

按下此代码和 L 会给出俄语字母“Д”。

但我怎样才能锁住它呢?有 Lock 修饰符,但它只能与 XK_Caps_Lock 键符号(以及我不理解的 ShiftLock)一起使用。

给 MODE_SWITCH 添加锁没有任何影响。

使用 Linux 控制台键盘映射,我可以向 AltGr 添加组,然后向 AltGr_Lock 添加一些键代码以使其锁定。它有效。但在 X 中我该怎么做呢?

我检查了几个西里尔文和其他非拉丁布局的 modmap(古代发行版有很多),在所有情况下,人们要么使用大写锁定,要么根本没有锁/闩锁。

因此,我想到在 XKB 之前(1996 年之前?)不可能使用“CTRL+Shift”之类的键切换布局,但这听起来很荒谬。
我对吗?

答案1

首先这叫做因为闩锁表示键只会影响下一个键。

在核心协议中锁定组的方法,但 XKB 扩展根据以下内容添加了一些密钥ISO/IEC 9995

XKB,附录 C。新的 KeySyms:ISO NEXT GROUP keysymdefs.h

#define XK_ISO_Next_Group 0xfe08

所以,我添加keycode 133 = ISO_Next_Group_Lock~/.xmodmap而不是 Win 键切换我的组

相关内容