dep*_*ted 38 keyboard special-characters xmodmap
玩xmodmap
我遇到了一个我没有听说过的修饰键:Mode_switch
。它似乎与插入特殊字符有关。
我将它分配给一个键,但它似乎没有效果。它是做什么用的?它与ISO_Level3_Shift
(Alt Gr) 不同吗?
Gil*_*il' 35
Mode_switch
是AltGr在许多键盘布局上调用的键的旧式(XKB 之前)名称。它类似于Shift,当您按下与字符对应的键时,如果同时按下Shift或,您将得到不同的字符AltGr。与Shift
,Mod_switch
不是 X11 意义上的修饰符,因为它通常适用于字符,而不是功能键,因此应用程序只需执行字符查找即可获得所需的效果。
ISO_Level3_Shift
是此密钥的 XKB 版本。一般来说,XKB 要复杂得多,可以做一些额外的花哨的事情。XKB 的机制更通用,因为它允许键盘布局变化,其中哪些键受哪些修饰符的影响,它概括了粘性(CapsLock-style)和同时按下(Shift-style)修饰符等。
Ale*_*ies 17
这个答案并不意味着与@Gilles 的答案相矛盾,而是要描述xkb输入处理的另一个方面,我认为他的答案中“缺乏照明”。
您可以同时使用ISO_Level3_Shift
(ALT-GR)和Mode_switch
在同一时间用不同的结果。它需要一些配置,但您可以同时拥有它们,并使用它们为每个物理键盘键生成6 个不同的键!
例如,您可以配置Tab为Mode_switch
当与xcape 一起持有时?和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"
Run Code Online (Sandbox Code Playgroud)
例如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'
Run Code Online (Sandbox Code Playgroud)
Mode_shift
in Xkb 是组或布局的 shift 键。如果您有一个包含多个组的布局,您可以按住此键访问下一个组。如果您有多个布局,您可以按住此键在布局之间切换 (†1)。
所以,Mode_shift
是什么群体Shift(或Shift_L
和
Shift_R
,使用keysym的名字)是水平的。
如果我们认为它Mode_shift
有一个名为ISO_Group_Shift
(†2)的别名,这可能会变得更加清楚。还有被称为ISO_Group_Latch
和 的键
ISO_Group_Lock
分别对应于
ISO_Level2_Latch
(latch shift) 和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
钥匙的意义
Mode_switch
是AltGr在许多键盘布局上调用的键的旧式(XKB 之前)名称。
这让我怀疑“AltGr”可能代表“替代/替代组”,因为Mode_switch
用于转换组。然而,事实证明这是错误的。根据该
对维基百科页面AltGr键“的AltGr”似乎来自IBM键盘,并在他们的手册它说,它是“交替图形”的缩写。这是有道理的,因为使用键盘来绘制“图形”(文本用户界面中使用的框绘图字符)似乎很可能出现在对在多个脚本之间快速切换的良好支持之前。