Odpowiedzi:
xmodmap
jest przestarzały; tak więc należy to zrobić za pomocą xkb
narzędzi.
Wydaje się, że pożądana zamiana nie jest domyślnie dołączona do plików X11; więc musisz to napisać sam.
Strona http://madduck.net/docs/extending-xkb/ pomogła mi zrozumieć i znaleźć sposób na zrobienie tego.
Utwórz plik, w ~/.xkb/keymap/mykbd
którym umieścisz wyjście setxkbmap
, będzie to podstawowa definicja klawiatury; na przykład:
setxkbmap -print > ~/.xkb/keymap/mykbd
następnie utwórz plik symboli, aby zdefiniować zamianę klawiszy, umieść go na przykład w ~/.xkb/symbols/myswap
tam, wstaw następujące linie:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
następnie edytuj ~/.xkb/keymap/mykbd
plik i zmień xkb_symbols
wiersz, aby dodać
+myswap(swap_l_shift_ctrl)
wreszcie możesz go załadować xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(nie możesz użyć „~” dla -I
parametru). Prawdopodobnie wypluje wiele ostrzeżeń o niezdefiniowanych symbolach niektórych rzadkich kluczy, ale możesz je zignorować (np. Błąd przekierowania do dave:) 2> /dev/null
.
Jeśli chcesz mieć możliwość łatwego przełączania między normalnym a odwróconym klawiszem Ctrl / Shift; po prostu utwórz pod ~/.xkb/keymap/
innym plikiem, bez dodatkowej opcji „myswap” i załaduj go xkbcomp
. Możesz utworzyć dwa małe skrypty, aby je załadować.
xkbcomp $DISPLAY some.dump
po i przed wywołaniem IBus i wykonaj różnicę między dwoma zrzutami (są to kompletne definicje klawiatury); prawdopodobnie zobaczysz różnice.
setxkbmap -option caps:escape
działa. IBus zapamiętał zamienione klawisze Esc i Caps_Lock, ale nie działa to na zamienione lewe klawisze Shift i lewe klawisze Control.
Natknąłem się na pewne problemy związane LALT
z Control_L
korzystaniem z rozwiązania Pablo , wygląda na to, że musisz również ustawić modifier_map
opcje.
Skopiowałem szablon z /usr/share/X11/xkb/symbols/altwin
- poszukaj xkb_symbols "ctrl_alt_win"
- i zmodyfikowałem go, aby wprowadzić następujące zmiany:
Ostateczny ~/.xkb/symbols/myswap
plik to:
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> };
};
Dodałem również -w0
do xkbcomp
polecenia, aby uniknąć jakichkolwiek ostrzeżeń podczas otwierania nowej powłoki.
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** Często przełączając się między komputerami Mac i Linux, lubię mieć dwa klawisze sterujące w systemie Linux, aby zbliżyć klawiaturę Mac do pamięci mięśni.