Переназначение сочетаний клавиш (копировать, вставить и т. д.) на клавишу Alt вместо Ctrl

Переназначение сочетаний клавиш (копировать, вставить и т. д.) на клавишу Alt вместо Ctrl

Интересно, что, как оказалось, это сделать практически невозможно. Переназначение клавиши 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 для установки сочетаний клавиш нужно использовать GUI. Поскольку я буду писать почти все комбинации Alt вручную, я не хочу, чтобы это делало приложение GUI. Я должен иметь возможность настроить его, написав текстовый файл.

Можно ли добиться этого с помощью Gnome или Xmonad?

решение1

Вы можете использовать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

решение2

Вы должны уметь пользоватьсяxdotoolи additionalKeysизXMonad.Util.EZConfigмодуль для этого. Просто установите xdotool, а затем в вашем ~/.xmonad/xmonad.hsконфигурационном файле вы можете настроить additionalKeys следующим образом:

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")
                 ]

Связанный контент