将键盘快捷键(复制、粘贴等)重新映射到 Alt 键而不是 Ctrl 键

将键盘快捷键(复制、粘贴等)重新映射到 Alt 键而不是 Ctrl 键

有趣的是,这几乎是不可能做到的。将 Alt 键重新映射为另一个 Ctrl 键并不是解决方案,因为您会失去 Alt 键的功能(其中一些功能是必不可少的,例如Alt+Tab)。

那么,如何获得类似于 MacOS 的行为,其中 cmd 键用作键盘快捷键(但也用于在窗口之间切换cmd+Tab)?

我知道在将 Alt 键重新映射为 Ctrl 键后,我可以指定Ctrl+Tab在窗口之间切换。但这样一来,我Ctrl+Tab在某些应用程序中就失去了真正的功能,这些功能也很重要,比如在 Chrome 中切换标签。基本上,我的 Ctrl 和 Alt 键会变成同一个键,并且不可能为这两个修饰键设置两组不同的快捷键。

对我来说,一个好的解决方案可能是Alt+C, Alt+V, Alt+X, etc.在窗口管理级别捕获并向Ctrl+C or Ctrl+V or Ctrl+X etc.焦点窗口发送一个。在 Windows 上,这可以通过 AutoHotKey 实现。在 Linux 上,我听说过一个名为 AutoKey 的应用程序,但与 AutoHotKey 不同,您必须使用 GUI 来设置快捷方式。由于我将手动编写几乎所有 Alt 组合,因此我不希望 GUI 应用程序这样做。我应该能够通过编写文本文件来配置它。

是否可以使用 Gnome 或 Xmonad 实现这一点?

答案1

您可以使用键帽

这是我的.Xmodmap文件,我有一个苹果键盘。

! Swap Alt and Cmd keys.
keycode 37 =    Control_L
keycode 133 =   Alt_L Meta_L
keycode 64 =    Super_L
keycode 108 =   Super_R
keycode 134 =   ISO_Level3_Shift Multi_key
keycode 105 =   Control_R       Multi_key
clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
add    Shift   = Shift_L Shift_R
add    Lock    = Caps_Lock
add    Control = Control_L Control_R
add    Mod1    = Alt_L 0x007D
add    Mod2    = Num_Lock
add    Mod4    = Super_L Super_R
add    Mod5    = Mode_switch ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift

! Configure '=' key on numpad as '='.
keycode 0x7D =  equal

答案2

你应该能够使用工具additionalKeysXMonad.Util.EZConfig模块。只需安装 xdotool,然后在您的~/.xmonad/xmonad.hs配置文件中,您可以像这样配置附加密钥:

import XMonad.Util.EZConfig

...

main = xmonad $ defaultConfig { ... }
                 `additionalKeys`
                 [ ((mod1Mask, xK_c), spawn "xdotool key alt+c")
                 , ((mod1Mask, xK_v), spawn "xdotool key alt+v")
                 , ((mod1Mask, xK_x), spawn "xdotool key alt+x")
                 ]

相关内容