xkb: 수정자로 표시되지 않고 키를 사용하여 교대 레벨 변경

xkb: 수정자로 표시되지 않고 키를 사용하여 교대 레벨 변경

다른 키를 생성하는 방법 으로 사용되도록 XKB를 구성하고 싶지만 Caps Lock수정자로 표시되는 것을 원하지 않습니다. 예를 들어:

  • F1F21키 입력 생성
  • Caps Lock+ 키 누르기 F1생성 F1(즉, 수정자 없음)
  • Shift+ Caps Lock+ 키 입력 F1생성 Shift + F1( Shift수정자로만 계산됨)

Caps Lock에 할당하여 부분적으로 성공했지만 Hyper_R문제는 Hyper_R수정자로 설정된 경우에만 작동한다는 것입니다(예: ) Mod3. 즉, ++ Shift리스너가 사용 하는 단축키는 표시되는 것을 좋아하지 않기 때문에 실제로 아무런 효과가 없습니다 .Caps LockF1Shift + Mod3 + F1Shift + F1Mod3

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.

관련 정보