de
독일어 키보드 레이아웃을 기반으로 사용자 정의 키보드 레이아웃( )을 만들고 싶습니다 . 아이디어는 Caps-Lock을 키로 사용하여 두 가지 레이아웃 세트를 사용하는 것입니다 Mode_switch
. 리매핑은 에 따라 작동하는 것 같습니다 xev
. 그러나 두 번째 레이아웃 세트는 작동하지 않습니다. [CAPS]+[H]를 누르면 --> "h"가 나타납니다("`"여야 함).
이것은 다음과 같은 기호 파일입니다 de_ext
.
default
xkb_symbols "basic" {
include "de"
name[Group1]="de";
name[Group2]="de2";
// the H button should become accent grave when in second group
override key <AC06> {
type[Group2]="ALPHABETIC",
symbols[Group2]= [ grave, grave ]
};
override key <CAPS> { [ Mode_switch, Caps_Lock ] };
};
편집 1:
@quixotic 말이 맞습니다. 직접 설정하면 실제로 작동합니다. 또한 de_ext
파일을 복사한 /usr/share/X11/xkb/
다음 실행해 보았지만 setxkbmap de_ext
효과가 있었습니다.
/usr/share/X11/xkb/rules/evdev.xml
그러나 레이아웃을 추가하면 작동하지 않습니다.
<layout>
<configItem>
<name>de_ext</name>
<shortDescription>xy</shortDescription>
<description>German extended</description>
<languageList>
<iso639Id>ger</iso639Id>
</languageList>
</configItem>
</layout>
Ubuntu 17.04 작업 표시줄의 레이아웃 선택에 새 레이아웃이 표시되지만 이를 선택하면 위에서 설명한 대로 CAPS-Lock 버튼의 동작이 달라집니다. 작동하는 것은 CAPS-Lock이 Mode_switch라는 것입니다(확인했습니다 xev
). 그러나 두 번째 그룹은 [CAPS]+[H]를 눌러도 작동하지 않기 때문에 선택되지 않는 것 같습니다. Ubuntu/Gnome 레이아웃 전환기를 사용할 때 어떤 차이점이 있는지 아시나요?
편집 2:
통화 중에 xkbcomp $DISPLAY broken.xkb
다음 사항을 확인했습니다.
- 내 xkb_symbols의 이름은 다음과 같습니다.
xkb_symbols "pc+prg+de:2+us:3+inet(evdev)"
내 레이아웃에는 두 개가 아닌 세 개의 그룹이 있습니다(기본 독일어 레이아웃에도 두 개의 레이아웃이 있지만 에는 하나만 정의되어 있습니다
symbols/de
).name[group1]="German"; name[group2]="German"; name[group3]="English (US)";
거의 모든 키에 대해 3개의 그룹/레이아웃이 있으며, 두 번째는 첫 번째와 동일하고 세 번째는 영어 키보드 레이아웃입니다. 내가 직접 수정한 문자는 포함되지 않습니다.
key <AC01> { type[group1]= "FOUR_LEVEL_ALPHABETIC", type[group2]= "FOUR_LEVEL_ALPHABETIC", type[group3]= "ALPHABETIC", symbols[Group1]= [ a, A, ae, AE ], symbols[Group2]= [ a, A, ae, AE ], symbols[Group3]= [ a, A ] };
이게 내가 받은 편지 H야
key <AC06> { type[group1]= "FOUR_LEVEL_ALPHABETIC", type[group2]= "ALPHABETIC", type[group3]= "ALPHABETIC", symbols[Group1]= [ h, H, hstroke, Hstroke ], symbols[Group2]= [ h, H ], symbols[Group3]= [ h, H ] };
Caps Lock 버튼에 대한 변경 사항이 포함되어 수정이 필요하지 않습니다.
내 가설은: 추가 레이아웃을 추가 그룹으로 포함하도록 모든 기호를 수정하는 기본(우분투?) xkb 구성에 몇 가지 규칙이 있어야 한다는 것입니다. 내 xkb 기호가 이 규칙을 트리거하는 것을 방지할 수 있는 방법이 있습니까?
답변1
마침내 해결책을 찾았습니다. 파일에 /usr/share/X11/xkb/rules/evdev
규칙이 있습니다
! model layout[2] = symbols
* * = +%l[2]%(v[2]):2
이로 인해 두 번째 그룹이 키보드의 기본 레이아웃으로 덮어쓰게 됩니다. 다음 줄을 추가하여 이 문제( de
기본 키보드 레이아웃이 있는 경우) 를 해결할 수 있었습니다.
! model layout[2] = symbols
* de = +de
문제 분석에 도움을 주신 @quixotic에게 감사드립니다.