Xorg 组合键不会丢失宝贵的密钥/旁路模式?

Xorg 组合键不会丢失宝贵的密钥/旁路模式?

我想设置一个组合键,但 KDE 系统设置中(以及通过 /usr/share/X11/xkb/rules)可用的唯一选项是:

compose:ralt         Right Alt
compose:lwin         Left Win
compose:rwin         Right Win
compose:menu         Menu
compose:lctrl        Left Ctrl
compose:rctrl        Right Ctrl
compose:caps         Caps Lock
compose:102          Less-than/Greater-than

但是这些都不让我满意;“compose:caps”可能还可以,但是它已经映射到 ctrl 了。

是否有一个选项可以设置某些键(例如,某些额外的功能键),或者以某种方式获取键本身?(例如ralt,如果我可以轻松获取键(AltGr)的原始行为,那就可以了)

我希望有像 Shift-AltGr 这样的功能来触发撰写模式。

我想我可以添加一条额外的规则,就像为/用...完成的那样compose:102。102 指的是什么?(它不是通过转储的东西xev)。

还有一个选项lv3:ralt_switch_multikey(右 Alt,Shift+右 Alt 键是 Multi_Key),但这并没有按预期工作(见http://bugs.kde.org/246472)。

答案1

lv3:ralt_switch_multikey是我所寻找的:

# But here it is: /usr/share/X11/xkb/rules/xorg.lst
# Anyway... what this is doing:
# lvl3:ralt_switch_multikey
#   right alt = AltGr = choose third shift level
#   shift + right alt = compose key aka Multi_Key

(通过http://ndim.fedorapeople.org/stuff/radeonhd/xorg.conf

我已通过 KDE 系统设置 (键盘 => 高级) 进行了此项设置,因此在我的 中有以下内容~/.kde/share/config/kxkbrc

Options=ctrl:nocaps,lv3:ralt_switch_multikey

答案2

另一种方法是使用xmodmap。将以下内容添加到您的~/.Xmodmap

keycode 134 = ISO_Level3_Shift Multi_key

这是区分大小写的。我的键盘上的右 alt 键 ( AltGr) 恰好有键码 134。如果这不起作用,则可能的解释是您的键盘对该键使用了不同的数字。要找出答案,请运行xev,按下您要使用的任何键,然后查找显示“键码 XXX”的部分。

当然,您可以使用任意键来实现此目的;例如,

keycode 38 = a Multi_key

会使该a键在 Shift 键时(仅)充当撰写键。无法输入大写字母 As 显然是一个缺点,所以也许你想做点别的 ☺

我使用 Shift+Shift 有一个技巧:

keysym Shift_L = Shift_L Multi_key
keysym Shift_R = Shift_R Multi_key

这样,左 Shift 键就充当了左 Shift 键,右 Shift 键就充当了右 Shift 键——只不过,如果你按住 Shift 键,则每个 Shift 键都充当了Compose。下面是一些场景来说明:

如果您按下左移键,按下右移键,释放右移键,然后释放左移键 — 那么您将获得与按下物理Compose键相同的效果(如果我没记错的话,旧 Sun 键盘有这些键)。因此具体来说:

  • ShiftShift++生成一个笑脸,☺ (至少对我:来说))~/.XCompose
  • ShiftShift++a生成aå 字符“å”。

如果按下左移位键,按下右移位键,然后以相反的顺序释放两个移位键,您将获得与上述相同的效果。

如果你按下左移键并再次释放(中间没有右移键),你会得到两个键盘事件:

  • 活动KeyPressShift_L
  • 活动KeyReleaseMulti_key

这是因为当您释放左 Shift 键时,Shift 键会被按住(左 Shift 键 -_-),因此该键会被视为Multi_key其唯一作用。这并没有给我带来任何明显的问题,但也许某些旧的、有缺陷的应用程序可能会因KeyPressvs.KeyRelease不匹配而卡住。

还要注意,单次按键、修饰键和状态切换键(例如aShiftCaps Lock)之间的交互非常有趣。如果您想将同一个键用作 Caps Lock 键和(按住 Shift 时)组合键,您可能会得到奇怪的效果。我似乎记得您会得到所有适用的效果,这可能不是您想要的,但请随意尝试一下。

相关内容