Ответы:
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 к моей мышечной памяти.