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

Ere*_*kin 7 gnome keyboard shortcut-keys xmodmap xmonad

有趣的是,事实证明这几乎是不可能的。重新映射 Alt 键以充当另一个 Ctrl 键不是解决方案,因为您失去了 Alt 键功能(其中一些是必不可少的,例如Alt+Tab)。

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

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

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

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

gia*_*nni 3

您可以使用XKeyCaps

这是我的.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
Run Code Online (Sandbox Code Playgroud)


Rau*_*uri 2

您应该能够使用xdotoolXMonad.Util.EZConfigadditionalKeys模块来实现此目的。只需安装 xdotool,然后在您的配置文件中您可以像这样配置 extraKeys:~/.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")
                 ]
Run Code Online (Sandbox Code Playgroud)