我想设置一个组合键,但 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å 字符“å”。
如果按下左移位键,按下右移位键,然后以相反的顺序释放两个移位键,您将获得与上述相同的效果。
如果你按下左移键并再次释放(中间没有右移键),你会得到两个键盘事件:
- 活动
KeyPress
Shift_L
- 活动
KeyRelease
Multi_key
这是因为当您释放左 Shift 键时,Shift 键会被按住(左 Shift 键 -_-),因此该键会被视为Multi_key
其唯一作用。这并没有给我带来任何明显的问题,但也许某些旧的、有缺陷的应用程序可能会因KeyPress
vs.KeyRelease
不匹配而卡住。
还要注意,单次按键、修饰键和状态切换键(例如a、Shift和Caps Lock)之间的交互非常有趣。如果您想将同一个键用作 Caps Lock 键和(按住 Shift 时)组合键,您可能会得到奇怪的效果。我似乎记得您会得到所有适用的效果,这可能不是您想要的,但请随意尝试一下。