답변:
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 및 왼쪽 제어 키에는 적용되지 않습니다.
Pablo의 솔루션 사용 과 매핑 LALT
하는 몇 가지 문제가 발생 하여 옵션도 설정해야합니다 .Control_L
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 키보드와 비슷한 두 개의 제어 키가 있습니다.