如何使用 xmodmap 使用 shift 和 alt 修饰符重新映射键?

use*_*014 11 keyboard-layout xmodmap

我想为代码为 94 的键设置以下行为:

1) 默认情况下它是 '<'

2) 换档时它是 '>'

3) 用 alt 是 '|'

我只能通过使用命令(名称来自xev)来获得默认和转移行为:

xmodmap -e "keycode 94 = less greater"
Run Code Online (Sandbox Code Playgroud)

我对所有行为尝试了三件事:

1)

xmodmap -e "keycode 94 mod1 = less greater bar"
Run Code Online (Sandbox Code Playgroud)

2)

xmodmap -e "keycode 94 shift mod1 = less greater bar"
Run Code Online (Sandbox Code Playgroud)

3)

xmodmap -e "keycode 94 = less greater"
xmodmap -e "add mod1 = less bar"
Run Code Online (Sandbox Code Playgroud)

前两个添加了默认使用 '<' 和 '|' 的效果 与班次。我不完全确定第三个做了什么。

我也得到了与 1) 和 2) 相同的行为(shift 是相关的,alt 什么都不做)来自命令:

xmodmap -e "keycode 94 mod1 = less bar"
Run Code Online (Sandbox Code Playgroud)

我的信息主要基于此答案(尤其是奖金部分)。

如何根据修饰符将单个键映射为具有不同的默认值、移位和行为?

小智 8

刚刚发现,启发式!看看以下内容:

xmodmap -e "keycode 38 = a A aacute Aacute ae AE ae"
Run Code Online (Sandbox Code Playgroud)

基本上是

  1. 一个:正常的
  2. A:移位+一个
  3. á: altgr + a
  4. Á:shift + altgr + a
  5. æ: [一些修饰符组合] + a
  6. Æ: shift + [一些修饰符组合] + a
  7. 乙:???

因此,只需使用您想要的表示重新配置密钥。例如,我将 period + altgr 重新分配给 interpunct(虽然有点权宜):

xmodmap -e "keycode 60 = period greater 0x00b7 0x00b7 0x00b7 0x00b7"    
Run Code Online (Sandbox Code Playgroud)