Интересно, оказывается, что это почти невозможно сделать. Переназначение клавиши Alt для поведения другой клавиши Ctrl не является решением, потому что вы теряете функциональность клавиши Alt (некоторые из которых являются важными, например Alt+Tab
).
Так как же я могу получить поведение, подобное MacOS, где клавиша cmd используется для сочетаний клавиш (но также и для переключения между окнами с помощью cmd+Tab
)?
Я знаю, что могу назначить Ctrl+Tab
для переключения между окнами после того, как я переназначаю клавишу Alt как клавишу Ctrl. Но затем я теряю реальную функциональность 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, вы должны использовать графический интерфейс для установки ярлыков. Поскольку я буду писать практически все комбинации Alt вручную, я не хочу, чтобы приложение с графическим интерфейсом делало это. Я должен быть в состоянии настроить его, написав текстовый файл.
Возможно ли достичь этого с помощью Gnome или Xmonad?
Для этого вы можете использовать xdotool и additionalKeys
из модуля XMonad.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")
]
Вы можете использовать XKeyCaps .
Это мой файл .Xmodmap
, у меня есть клавиатура Apple.
! 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