Super + x, Super + c, Super + v 형식의 일부 시퀀스 만 Ctrl + x, Ctrl + c, Ctrl + v와 같은 다른 시퀀스에 바인딩하려는 경우 (예 : 원하는 OP) 특정 수퍼 키 시퀀스는 일반적으로 시스템에서 수퍼 키의 다른 용도에 영향을주지 않으면 서 잘라 내기 및 붙여 넣기에 매핑되며 XKB 확장 만 사용하면 가능합니다. 아래 절차는 단계를 간략하게 설명하고 두 가지 시작 키보드 설정에 대한 두 가지 세부 사항의 예를 제공합니다. 잘만되면 그것은 당신의 시스템에 적응하기에 충분한 정보를 제공 할 것입니다. 시스템에서 파일을 포함하여 파일을 작성하고 편집하는 데 익숙하다고 가정합니다 /usr/share/X11/xkb
.
XKB 구성 트리가 상주 할 위치를 결정하십시오. 먼저 시스템을 찾으십시오. 일반적으로 / usr / share / X11 / xkb에 있으며, 존재하지 않는 경우 어떻게 찾는 지 확실하지 않습니다. "xkb"라는 디렉토리를 시스템에서 검색 할 수 있습니다. 어쨌든 일단 시스템을 찾으면 시스템을 수정하거나 원하는 디렉토리를 사용할 수 있습니다. 시스템 디렉토리를 사용하는 것의 장점은 변경 사항을 훨씬 더 쉽게 호출 할 수 있다는 것입니다. 그러나 향후 시스템 업데이트가 변경 사항을 겹쳐 쓸 수 있습니다 (경고). 어쨌든, 이후에 언급 된 모든 파일 이름은이 디렉토리와 관련이 있으며, 필요한 경우 $ XKBLOCAL $로 참조하고 모든 명령은 현재 디렉토리라고 가정합니다.
현재 x, c, v 키의 XKB "유형"키를 결정하십시오. 가장 쉬운 방법은 명령을 사용하는 것입니다 xkbcomp -a $DISPLAY - | grep -C 6 c,
(쉼표는 의도적으로 패턴에 포함되어 있음). 첫 번째 예제 설정에서 다음을 생성합니다.
key <AB02> {
type= "ALPHABETIC",
symbols[Group1]= [ x, X ]
};
key <AB03> {
type= "ALPHABETIC",
symbols[Group1]= [ c, C ]
};
key <AB04> {
type= "ALPHABETIC",
symbols[Group1]= [ v, V ]
};
key <AB05> {
반면에 다른 예제 설정에서는
key <AB02> {
type= "FOUR_LEVEL",
symbols[Group1]= [ x, X, approxeq, dead_ogonek ]
};
key <AB03> {
type= "FOUR_LEVEL",
symbols[Group1]= [ c, C, ccedilla, Ccedilla ]
};
key <AB04> {
type= "FOUR_LEVEL",
symbols[Group1]= [ v, V, squareroot, U25CA ]
};
key <AB05> {
결론은 첫 번째 예에서 관련 키는 "ALPHABETIC"유형이고 두 번째 예에서는 "FOUR_LEVEL"유형입니다. 키보드 설정에 따라 다른 유형일 수도 있습니다. 다음에서이 유형을 $ TYPE $라고하며 실제 문자열 ALPHABETIC 또는 아래 명령의 다른 항목으로 바꿔야합니다.
$ TYPE $의 정의를 찾아 $ XKBLOCAL $ / types 디렉토리의 새 파일로 복사하십시오. 이를 수행하는 명령은 다음과 같습니다 xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
.. 내가 선택한 파일 "cutpaste"의 이름은 임의적이며 원하는 이름을 사용하지만 이후 단계에서이 파일을 일관되게 참조해야합니다. 첫 번째 설정에서이 파일은 내용을 가져옵니다.
type "ALPHABETIC" {
modifiers= Shift+Lock;
map[Shift]= Level2;
map[Lock]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
};
다른 예에서는 내용을 얻습니다.
type "FOUR_LEVEL" {
modifiers= Shift+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
파일 형식 / 잘라내기를 편집하여 두 가지 작업을 수행합니다. 프리앰블 및 포스트 앰블을 추가하여 적절한 XKB 절로 만들고 형식 이름과 형식 정의를 변경하여 Super에 해당하는 수정자가 생성 한 수준을 한 단계 더 추가합니다. 시스템에 해당 수정자가 무엇인지 확인해야하며 아래에 사용 된 Mod4 일 가능성이 큽니다. 필요한 수정 사항은 두 가지 유형의 최종 버전 / 절단 붙여 넣기에서 분명해야합니다.
default partial xkb_types "addsuper" {
type "ALPHABETIC_SUPER" {
modifiers= Shift+Lock+Mod4;
map[Shift]= Level2;
map[Lock]= Level2;
map[Mod4]= Level3;
map[Shift+Mod4]= Level3;
map[Lock+Mod4]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
level_name[Level3]= "With Super";
};
};
과
default partial xkb_types "addsuper" {
type "FOUR_LEVEL_SUPER" {
modifiers= Shift+LevelThree+Mod4;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Mod4]= Level5;
map[Shift+Mod4] = Level5;
map[LevelThree+Mod4] = Level5;
map[Shift+LevelThree+Mod4] = Level5;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "With Super"';
};
};
두 번째 단계에서 grep에 의해 출력 된 키 기호 정의를 두 번째 새 파일 기호 / 잘라내기에 복사하고 유사한 프리앰블 및 포스트 앰블을 추가하고 새 유형을 사용하도록 정의를 수정하고 정의에 조치를 추가하여 원하는 키를 처리하십시오. 슈퍼 버전으로 제작되었습니다. 두 가지 예에서이 결과는 다음과 같습니다.
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ x, X, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ c, C, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ v, V, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
과
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [x,X,approxeq,dead_ogonek,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [c,C,ccedilla,Ccedilla,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [v,V,squareroot,U25CA,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
두 번째 예에서는 라인 길이를 약간의 제어하에 유지하기 위해 (중요하지 않은) 공백을 짜 냈습니다.
XKB가 현재 사용중인 규칙 세트의 이름을 찾으십시오. 쉽습니다 setxkbmap -query
. 의 결과에 표시 됩니다. 제 경우에는 "evdev"였습니다.
rules / evdev (또는 규칙 세트 이름이 무엇이든)의 시스템 버전을 $ XKBLOCAL $ / rules / evdev에 복사하고 작성한 옵션을 가리키는 규칙을 추가하십시오. 여기에는 두 가지 선택 사항이 있습니다. 모든 evdev 또는 실제로 사용중인 키보드 모델, 레이아웃, 변형 및 옵션을 언급 한 부분 만 복사 할 수 있습니다. 물론 시스템 파일을 제 위치에서 수정하는 경우 복사 할 필요없이 편집 만하면됩니다.
이 경우 추가되는 것은 초기 키보드 설정에 관계없이 동일하므로 한 가지 예만 있습니다. 당신과 함께 시작하는 규칙 파일의 섹션을 발견 ! option = symbols
하고이 줄을 추가 cutpaste:super = +cutpaste
해당 섹션에, 그리고 당신은 또한 규칙 파일의 섹션을 찾아 그와 시작 ! option = types
및 라인 cutpaste:super = +cutpaste
해당 섹션에뿐만 아니라.
evdev.lst의 시스템 버전을 복사하고 새 옵션에 대한 행을 추가하십시오. 이 파일의 이름은 단순히 .lst가 추가 된 규칙 파일의 이름과 일치합니다. 이전 단계에서와 같이 전체 파일을 복사하거나 사용중인 모델, 레이아웃, 변형 및 옵션에서 참조하는 부분 만 복사 할 수 있습니다. 이 파일에서 시작하는 섹션을 찾아 다음 ! option
과 같은 행 cutpaste:super Add super equivalents of cut and paste operations
을 해당 섹션에 추가하면됩니다 .
이제 모든 구성 파일이 준비되었습니다. 시스템 파일을 수정 한 경우을 사용하여 새 옵션을 호출 할 수 있습니다 setxkbmap -option cutpaste:super
. 반면에, 그렇지 않은 경우 setxkbmap에게 $ XKBLOCAL $ 디렉토리의 위치를 알려 주어야합니다. 더 나쁜 것은 서버가 해당 디렉토리의 위치를 알지 못하고 setxkbmap이 알 수 없거나 서버가 다른 시스템에서 실행될 수 있기 때문에 불가능하다는 것입니다. 따라서 setxkbmap의 출력을 xkbcomp로 파이프하고 $ XKBLOCAL 디렉토리의 위치를 명령에 알려야합니다. 따라서 전체 명령 행은 setxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
입니다.