수정된 키를 투명하게 매핑(xkb 사용)

수정된 키를 투명하게 매핑(xkb 사용)

나는 노력한다아날로그 숫자 키보드 키기본 키보드에 있지만 xkb로 어려움을 겪고 있습니다.

<LWIN> + <AD07>을 "왼쪽"으로 변환하는 방법은 무엇입니까? (일명 슈퍼 + u)

Shift, Ctrl(Alt도 바람직함)과 잘 작동해야 합니다.

내가 얻은 가장 가까운 것은 다음과 같습니다.

    type "wkafk1" {
        modifiers = Shift+Super;
        map[Shift]= Level2;
        map[Super] = Level3;
        level_name[Level1] = "Base";
        level_name[Level2] = "Shift"; 
        level_name[Level3] = "Fn"; 
    };

...
    key <AD07> {
        type= "wkafk1",
        symbols[Group1]= [               u,               U, Left ]
    };

그러나 Shift+Super+u는 처리되지 않습니다.

이것도 매우 가깝습니다.

    type "wkafk1" {
        modifiers = Shift+Super;
        map[Shift]= Level2;
        map[Super] = Level3;
        map[Shift+Super]=Level4;
        level_name[Level1] = "Base";
        level_name[Level2] = "Shift"; 
        level_name[Level3] = "Fn"; 
        level_name[Level4] = "Fn Shift";
    };
...
    key <AD07> {
        type= "wkafk1",
        symbols[Group1]= [               u,               U, Left, Shift+Left ]
    };

하지만 수정된 기호를 내보내는 방법을 모르기 때문에 컴파일되지 않습니다(Shift+Left는 허용되지 않음).

action= RedirectKey(...)를 사용하여 "설명" 문이 필요합니까?

답변1

고마워요현재 기술,다음과 같이 진행하십시오:

  1. 현재 구성의 복사본을 만듭니다.
xkbcomp $DISPLAY custom.xkb
  1. 편집자에 의해 생성되었습니다 custom.xkb.
  2. 섹션의 끝 부분을 찾아 xkb_types다음을 추가합니다.
     type "wkafk1" {
        modifiers = Shift+Super;
        map[Shift] = level2;
        map[Super] = level3;
        map[Super+Shift] = level3;
        level_name[Level1] = "Base";
        level_name[Level2] = "Caps";
        level_name[Level3] = "Arrows";
     };
  1. <AD07>섹션의 키 정의를 xkb_symbols다음으로 바꿉니다.
     key <AD07> {
         type= "wkafk1",
         symbols[Group1]= [ u, U, NoSymbol],
         actions[Group1]=[ NoAction(), NoAction(), RedirectKey(key=<LEFT>,clearmods=Super)]
     };
  1. 사용자 정의 구성을 컴파일하고 사용하십시오.
xkbcomp custom.xkb $DISPLAY

이 점에 유의하시기 바랍니다Shift 및 Ctrl 키와 함께 사용콤비네이션.

관련 정보