Mode_switch 修饰符有什么用?

dep*_*ted 38 keyboard special-characters xmodmap

xmodmap我遇到了一个我没有听说过的修饰键:Mode_switch。它似乎与插入特殊字符有关。

我将它分配给一个键,但它似乎没有效果。它是做什么用的?它与ISO_Level3_Shift(Alt Gr) 不同吗?

Gil*_*il' 35

Mode_switchAltGr在许多键盘布局上调用的键的旧式(XKB 之前)名称。它类似于Shift,当您按下与字符对应的键时,如果同时按下Shift或,您将得到不同的字符AltGr。与Shift,Mod_switch不是 X11 意义上的修饰符,因为它通常适用于字符,而不是功能键,因此应用程序只需执行字符查找即可获得所需的效果。

ISO_Level3_Shift是此密钥的 XKB 版本。一般来说,XKB 要复杂得多,可以做一些额外的花哨的事情。XKB 的机制更通用,因为它允许键盘布局变化,其中哪些键受哪些修饰符的影响,它概括了粘性(CapsLock-style)和同时按下(Shift-style)修饰符等。

  • 粘滞键不是“CapsLock”风格的。粘键称为“闩锁”,锁键称为锁。在按下下一个非修饰符后释放粘滞键,同时锁定键有效,直到再次按下它们。 (6认同)
  • 很高兴知道“ISO_Level3_Shift”可以“粘性”地起作用,我一直在寻找该功能:http://unix.stackexchange.com/questions/39014/switch-between-numbers-and-symbols-on-大写锁定 (2认同)

Ale*_*ies 17

这个答案并不意味着与@Gilles 的答案相矛盾,而是要描述输入处理的另一个方面,我认为他的答案中“缺乏照明”。

您可以同时使用ISO_Level3_Shift(ALT-GR)和Mode_switch在同一时间用不同的结果。它需要一些配置,但您可以同时拥有它们,并使用它们为每个物理键盘键生成6 个不同的键!

例如,您可以配置TabMode_switch当与 一起,然后例如键盘上标有“H”的键可以产生以下字符/键:

h
H
? (Cursor)
? (Symbol)
?
?
with H
with ShiftH
with AltGrH
with AltGrShiftH
with TabH
with TabShiftH

因此,要绕回来你的问题:IL3SMode_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)


Gui*_*ern 6

Mode_shiftin Xkb 是组或布局的 shift 键。如果您有一个包含多个组的布局,您可以按住此键访问下一个组。如果您有多个布局,您可以按住此键在布局之间切换 (†1)。

所以,Mode_shift是什么群体Shift(或Shift_LShift_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钥匙的意义

吉尔斯在他的回答中提到AltGr密钥的联系:

Mode_switchAltGr在许多键盘布局上调用的键的旧式(XKB 之前)名称。

这让我怀疑“AltGr”可能代表“替代/替代组”,因为Mode_switch用于转换组。然而,事实证明这是错误的。根据该 对维基百科页面AltGr“的AltGr”似乎来自IBM键盘,并在他们的手册它说,它是“交替图形”的缩写。这是有道理的,因为使用键盘来绘制“图形”(文本用户界面中使用的框绘图字符)似乎很可能出现在对在多个脚本之间快速切换的良好支持之前。