![xkb: 수정자로 표시되지 않고 키를 사용하여 교대 레벨 변경](https://linux55.com/image/55823/xkb%3A%20%EC%88%98%EC%A0%95%EC%9E%90%EB%A1%9C%20%ED%91%9C%EC%8B%9C%EB%90%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%ED%82%A4%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EA%B5%90%EB%8C%80%20%EB%A0%88%EB%B2%A8%20%EB%B3%80%EA%B2%BD.png)
다른 키를 생성하는 방법 으로 사용되도록 XKB를 구성하고 싶지만 Caps Lock수정자로 표시되는 것을 원하지 않습니다. 예를 들어:
- F1
F21
키 입력 생성 - Caps Lock+ 키 누르기 F1생성
F1
(즉, 수정자 없음) - Shift+ Caps Lock+ 키 입력 F1생성
Shift + F1
(Shift
수정자로만 계산됨)
Caps Lock에 할당하여 부분적으로 성공했지만 Hyper_R
문제는 Hyper_R
수정자로 설정된 경우에만 작동한다는 것입니다(예: ) Mod3
. 즉, ++ Shift리스너가 사용 하는 단축키는 표시되는 것을 좋아하지 않기 때문에 실제로 아무런 효과가 없습니다 .Caps LockF1Shift + Mod3 + F1
Shift + F1
Mod3
Caps LockX 응용 프로그램에서 실제로 수정자 키로 표시되지 않고 특정 키의 동작을 변경할 수 있는 방법이 있습니까 ?
내가 읽은 문서에는 고급 XKB 구성을 통해 이것이 가능하다고 나와 있지만 자세한 내용은 찾을 수 없습니다.
답변1
오래된 내용이라 죄송합니다. 너무 늦었다고 해도 다른 사람들에게 이 팁이 유용할 수도 있습니다.
당신의 것에서 types
다음을 추가하십시오 :
type "CapsShiftSpecial" {
modifiers= Shift+Hyper;
map[Shift]= Level2;
preserve[Shift]= Shift;
map[Hyper]= Level3;
map[Shift+Hyper]= Level4;
preserve[Shift+Hyper]= Shift;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Hyper";
level_name[Level4]= "Shift Hyper";
};
그런 다음 symbols
파일에는 다음과 같은 내용이 있습니다.
key <FK01> { type[group1]="CapsShiftSpecial",
symbols[group1]=[ F21, F21, F1, F1 ]};
키 입력(예: xev
또는 emacs
)을 모니터링하는 프로그램은 마치 키를 누른 것처럼 표시됩니다.F21,Shift+F21,F1, 그리고Shift+F1.