和谁玩xmodmap
我遇到了一个我从未听说过的修饰键:Mode_switch
。这似乎与插入特殊字符有关。
我把它分配给一个键,但似乎没有效果。它是做什么用的?它有什么不同吗ISO_Level3_Shift
(替代语)?
答案1
Mode_switch
AltGr是在许多键盘布局上调用的键的旧式(XKB 之前)名称。它与 类似Shift,因为当您按下与某个字符对应的键时,如果同时按下Shift或 ,您会得到一个不同的字符。AltGr与 不同的是Shift
,Mod_switch
它不是 X11 意义上的修饰符,因为它通常适用于字符,而不是功能键,因此应用程序只需执行字符查找即可获得所需的效果。
ISO_Level3_Shift
是该密钥的 XKB 版本。一般来说,XKB 要复杂得多,并且可以做一些额外的花哨的事情。 XKB 的机制更加通用,因为它允许键盘布局发生变化,其中哪些键受哪些修饰符影响,它概括了粘滞(CapsLock-style)和同时按下(Shift-style)修饰符等。
答案2
这个答案并不是要与@Gilles的答案相矛盾,而是要描述另一个方面xkb我觉得他的回答中的输入处理“未得到充分说明”。
您可以同时使用ISO_Level3_Shift
(Alt-Gr) 和Mode_switch
结果不同。它需要一些配置,但您可以同时拥有它们,并使用它们来生成6每个物理键盘键都有不同的键!
例如,您可以将其配置Tab为Mode_switch
持有时X角 ⌂和xmodmap,那么例如键盘上标记为“H”的键可以产生以下字符/键:
h
H
← (Cursor)
← (Symbol)
┘
┐
with H
with ShiftH
with AltGrH
with AltGrShiftH
with TabH
with TabShiftH
所以,回到你的问题:IL3S
和Mode_switch
可以配置为表示不同的东西,所以你可以有光标键和约 200 个有用字符来自(重音)语言、方框图和技术字符集35键3 个字母行中的一个。
为了完成上述任务:
# Initial Setup
xmodmap -e 'keycode 23 = Mode_switch ISO_Left_Tab Tab ISO_Left_Tab Tab ISO_Left_Tab'
xmodmap -e 'keycode any = Tab'
xcape -e "Mode_switch=Tab"
例如H:
xmodmap -pke | grep 'h H'
# Make note of the keycode, note the 8 columns after the `=`,
# then edit and feed back into xmodmap with:
xmodmap -e 'keycode 43 = h H lowrightcorner uprightcorner Left leftarrow h H'
答案3
Mode_shift
Xkb 中的 是组或布局的 Shift 键。如果您的布局包含多个组,则可以按住此键访问下一组。如果您有多个布局,则可以按住此键在布局之间切换 (†1)。
Mode_shift
分组也是如此(Shift或者Shift_L
和
Shift_R
,使用键盘符号名称)就是关卡。
如果我们考虑Mode_shift
有一个名为ISO_Group_Shift
(†2) 的别名,这可能会变得更加清楚。还有称为
ISO_Group_Latch
和 的键,分别ISO_Group_Lock
对应于
ISO_Level2_Latch
(锁存器移位)和Shift_Lock
(†3)。
不同的脚本还有许多别名:
kana_switch
Arabic_switch
Greek_switch
Hebrew_switch
Hangul_switch
†1:这是基于我对Xkb“组”和“布局”的理解。就使用这样的键在它们之间进行选择而言,它们似乎受到相同的对待。
†2:我将此基于以下keysymdef.h
文件这个 Git 存储库
修订版 ab8666661fc6(“添加 XF86XK_AudioPreset”,2017 年 5 月 10 日)。在安装时,您可能会在 中找到该文件
/usr/include/X11/keysymdef.h
。
†3:还有一把钥匙ISO_Lock
,一种通用锁钥匙。
AltGr
钥匙的含义
吉尔斯提到他的回答与密钥的连接 AltGr:
Mode_switch
AltGr是在许多键盘布局上调用的键的旧式(XKB 之前)名称。
这让我怀疑“AltGr”可能代表“替代/替代组”,因为Mode_switch
用于转移组。然而事实证明这是错误的。根据
AltGr关于钥匙的维基百科页面,“AltGr”似乎来自IBM键盘,在他们的手册中说它是“Alternate Graphics”的缩写。这是有道理的,因为使用键盘绘制“图形”(文本用户界面中使用的框画字符)似乎早在对多个脚本之间快速切换的良好支持之前就出现了。