xmodmap
устарел; так что на самом деле это должно быть сделано с помощью xkb
инструментов.
Кажется, что нужный вам подкачка не включен по умолчанию в файлы X11; поэтому вы должны написать это сами.
Страница http://madduck.net/docs/extending-xkb/ помогла мне понять и найти способ сделать это.
Создайте файл, в ~/.xkb/keymap/mykbd
который вы поместите вывод setxkbmap
, это будет ваше базовое определение клавиатуры; например:
setxkbmap -print > ~/.xkb/keymap/mykbd
затем создайте файл символов, чтобы определить обмен ключами, поместите его, например, в ~/.xkb/symbols/myswap
там поставьте следующие строки:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
затем отредактируйте ~/.xkb/keymap/mykbd
файл и измените xkb_symbols
строку, чтобы добавить
+myswap(swap_l_shift_ctrl)
наконец, вы можете загрузить его xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(вы не можете использовать «~» для -I
параметра). Вероятно, он выдаст много предупреждений о неопределенных символах для некоторых редких ключей, но вы можете их игнорировать (например, перенаправить ошибку в dave:) 2> /dev/null
.
Если вы хотите иметь возможность легко переключаться между нормальным и вашим инвертированным сочетанием Ctrl / Shift; просто создайте под ~/.xkb/keymap/
другим файлом, без дополнительной опции «myswap», и загрузите его с помощью xkbcomp
. Вы можете сделать два небольших скрипта для их загрузки.
xkbcomp $DISPLAY some.dump
после и перед вызовом IBus и выполните различие двух дампов (это полное определение клавиатуры); вы, вероятно, увидите различия.setxkbmap -option caps:escape
работает. IBus запомнил поменявшиеся клавиши Esc и Caps_Lock, но не поменял местами левые клавиши Shift и Left Control.Я столкнулся с некоторыми проблемами, связанными
LALT
сControl_L
использованием решения Pablo , похоже, вам также необходимо установитьmodifier_map
параметры.Я скопировал шаблон из
/usr/share/X11/xkb/symbols/altwin
- ищитеxkb_symbols "ctrl_alt_win"
- и изменил его, чтобы установить следующие изменения:Окончательный
~/.xkb/symbols/myswap
файл был:Я также добавил
-w0
вxkbcomp
команду, чтобы избежать каких-либо предупреждений при открытии новой оболочки.** Много переключаясь между Mac и Linux, мне нравится иметь две управляющие клавиши в Linux, чтобы приблизить клавиатуру Mac к моей мышечной памяти.
источник