我使用了一个平铺窗口管理器(xMonad ),由于这个原因,我需要一个作为窗口管理的“控制键”的键。每当我使用带有Windows/Super/Mod4键的键盘时,我都会使用左边的Windows键作为该键,而我的右侧Windows键则充当Compose/Multi_key。
然而,我也有几个(非常旧的)键盘没有任何Windows键(即它们没有winkeyless),而且我没有任何可以(舒适地)用作‘WM控制键’的键。在过去,由于xMonad允许这样做,我使用Control+Alt作为我的“WM控制键(组合)”,但正如我在一段时间后注意到的那样,这会干扰(一些) Emacs (移动命令),因此这不再是一个选项。因此,我认为我可以通过以下方式使用我的逃逸密钥:
AFAIK,按住逃逸并不能正常地做任何事情,所以我认为这样做可能是个好主意。然后,我试图通过使用xmodmap来实现这一点:
clear Mod4
add Mod4 = Super_L Escape正如我所期望的: Super_L仍然扮演着超级角色,而且现在Escape是一个额外的超级。下一步应该是使用xcape来获取(一些)旧的逃逸关键行为。
我得到了什么(xmodmap的输出):
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d), Hyper_L (0xcf)
mod3 Scroll_Lock (0x4e), Mode_switch (0xcb)
mod4 Escape (0x9), y (0x34), Super_L (0x85), Super_L (0xce)
mod5 ISO_Level3_Shift (0x5c) 我不明白的是:
y突然也被设置为Mod4?xcape。这是xmodmap中的一个bug,还是我使用xmodmap不正确?我怀疑是后者,但有人能帮我实现我想做的事吗?
更多信息(希望不是无关紧要):
xkb、xdotool等)的解决方案持开放态度。de密钥映射/布局的另一个变体实现的;参见下面localectl的输出)。在任何更改(即我当前的情况)之前,xmodmap输出:
xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d), Hyper_L (0xcf)
mod3 Scroll_Lock (0x4e), Mode_switch (0xcb)
mod4 Super_L (0x85), Super_L (0xce)
mod5 ISO_Level3_Shift (0x5c) 我目前的.Xmodmap是:
add Mod3 = Scroll_Locklocalectl说:
System Locale: LANG=de_DE.UTF-8
LC_COLLATE=C
VC Keymap: de-latin1-nodeadkeys
X11 Layout: de,de
X11 Model: pc105
X11 Variant: nodeadkeys,neo
X11 Options: compose:rwin,grp:ctrls_toggle发布于 2020-06-04 13:59:41
我用西开普来做这个。在Xmodmap中将键映射到Super_L,并在XMonad启动时运行xcape -e 'Super_L=Escape'。
https://unix.stackexchange.com/questions/435142
复制相似问题