참고 : Wayland는 xkb를 사용하지만 많은 xTools가 제대로 작동하지 않습니다 (예 : xdotool)
참고 :이 튜토리얼은 포괄적이지 않습니다. 새로운 8 단계 레이아웃을 만들고 구문을 이해하려는 개인에게 가장 유용합니다.
참고 : 빠르고 더러운 솔루션이 제공됩니다. 필요한 코드를 자동으로 생성하는 스프레드 시트가 포함되어 있습니다.
XKB 디렉토리 이해
cd /usr/share/X11/xkb/ && ls
- types- 활성화 된 수정 자에 의해 생성 된 키가 변경되는 방식 . (Shift, Control, Alt ~)
수정 자 키를 사용자 정의하려는 경우 중요합니다.
- geometry-키보드 그래픽을 그리는 데 사용됩니다.
비표준 키보드 하드웨어를 설계하는 경우 중요합니다.
- rules-현재 설정에 적합한 구성을 가져 오는 중입니다.
이것을 정의해야합니다
- keycodes-키보드 하드웨어의 키 코드 해석기.
예 : Macintosh 키보드는 스페이스 바를로 이해합니다 57
. 그러나 우리는 그것을 다음과 같이 씁니다.<SPCE>
- symbols-어떤 키 코드에 어떤 값 이 할당되어 있습니까 ?
여기에서 사용자 정의 레이아웃을 정의합니다.
- compat- 호환성의 줄임말 .
수정
자의 내부 동작 (Shift, Control, Alt ...)
워크 플로우
keycodes > symbols > compat
만 터치 symbols
: 빠르고 더러운 솔루션 은 아래를 참조하십시오 .
심볼 맵
/symbols/us 이 디렉토리의 모든 파일은 동일한 구조를 따릅니다.
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "US/ASCII";
key <TLDE> { [ quoteleft, asciitilde ] };
key <AE01> { [ 1, exclam ] };
modifier_map Shift { Shift_L, Shift_R };
};
partial 완전한 키보드 맵이 아님
alphanumeric_keys매핑되는 키보드 섹션. 여러 개를 사용할 수 있습니다.
참고 :*_keys
지정 하지 않으면 완전한 키보드로 간주됩니다.
"basic" -심볼 맵의 이름
name[Group1]= "US/ASCII";이 키보드 그룹에 고유 한 이름을 부여합니다 .
modifier_map수정 자 키 편집 용 . (ctrl, shift, alt ~)
Shift { Shift_L, Shift_R };일반적으로 필요하지 않습니다. 두 시프트를 시프트 레벨 (일명 레벨 2)에 맵핑합니다.
key <TLDE> 물결표 키 -일반적으로 탭의 오른쪽 상단 왼쪽 키
key <AE01> 스톡 콘텐츠 -세 부분으로 구성AE01
A= 영숫자 키 블록.
KP= 키패드
FK= 기능 키
E= 키보드의 행.
Space Key= A행
Shift Key= B행
Caps Lock= C행
Tab Key= D행
01= 행에서 키의 위치.
AE01= 1
AB02= X
AC05=G
[+ ]-C 언어로; 대괄호는 항목을로 나누는 목록을 나타냅니다 ,. 리스트의 길이는 레벨의 양을 결정합니다. 예를 들면 다음과 같습니다.
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
일반적으로 레벨은 다음과 같은 키 누르기를 나타냅니다.
- 수정 자 키 없음
- Shift
- Alt Gr
- Shift + Alt Gr
- Custom -레벨 4 이상의 것을 볼 수는 없습니다.
즉, 키를 shift + altgr로 매핑하려면 목록의 길이가 4 개 이상이어야합니다.
경고-일반적인 오류
이 줄 중 하나에 심각한 오류가 발생하고 키보드를 사용할 수 없게됩니다.
key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
Backspace
해야 할 것 BackSpace
: 철자법에 특별한주의를 기울이십시오.
- 빈 항목은이어야합니다
VoidSymbol
.
최고의 안전 대책!
편집중인 파일을 백업하십시오.
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
루트 비밀번호없이 실행할 수있는 스크립트를 작성하십시오.
다음과 같은 것 :
#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us
문제가 발생하면 마우스를 사용하여 해당 코드 줄을 chmod +x
실행하십시오.
손상된 시스템을 복구하기위한 백업 전략
- 경고 : 키보드 및 화상 키보드는 약간의 오류 로 작동하지 않습니다.
- 마우스가 작동 합니다. 문자를 강조 표시하고 가운데 클릭을 사용하여 붙여 넣어 입력 할 수 있습니다. Bash에서는 줄 바꿈
return
을 붙여 넣어 (Enter를 누름) 할 수 있습니다 .
- 키보드는 루트 쉘 에서 복구 모드 로 작동합니다 . (bash에서 액세스)
- 항상 라이브 환경을 사용하여 파일을 수정할 수 있습니다.
빠르고 더러운 솔루션
- 여기로
- 파일> 사본 만들기
- Mapper 시트 는 레이아웃을 정의하는 곳입니다.
- 단일 문자 항목은 프로그램에서 이해하는 코드로 변환됩니다.
( !
가됩니다 U0021
). 유니 코드 지원!
- 문자열은 번역되지 않으며 그대로 처리됩니다. SPELLING 또는 CASE 오류가 없는지 확인하십시오!.
- 빈 사각형은 자동으로로 채워집니다
VoidSymbol
.
- XKB-Sort 시트 에는 다음과 같은 주요 그룹이 포함됩니다.
key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
8 단계 모두에서이를 변경합니다.
1234567890-= // Physical Keys
![]"*{}/')(\ // Changed to these characters
- XKB탭에도 선이 있습니다. 다른 모든 탭은 무시할 수 있습니다 (코드).
sudo vim /usr/share/X11/xkb/symbols/us
- 레이아웃 내용을 교체하십시오. 사용하지 않을 것을 선택하십시오. 예를 들어 , 구조를 그대로두고 colemak 항목을 변경하고 키를 교체했습니다.
관심있는 라인 :
key.type[group1]="EIGHT_LEVEL"; // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] };
key { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5