Ответы:
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файл был:
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
Я также добавил -w0в xkbcompкоманду, чтобы избежать каких-либо предупреждений при открытии новой оболочки.
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** Много переключаясь между Mac и Linux, мне нравится иметь две управляющие клавиши в Linux, чтобы приблизить клавиатуру Mac к моей мышечной памяти.