사용자 정의 키보드 레이아웃에서 개별 키를 Caps Lock 컨트롤로 가져오려면 어떻게 해야 합니까? 나는 시프트 잠금을 원하지 않는다

사용자 정의 키보드 레이아웃에서 개별 키를 Caps Lock 컨트롤로 가져오려면 어떻게 해야 합니까? 나는 시프트 잠금을 원하지 않는다

내 사용자 정의 키보드 레이아웃에는 이미 다음 줄이 있습니다.

    // row 1 (E)
    key <TLDE> {    [     question,     exclam,         masculine,      ordfeminine ]   };
    key <AE01> {    [     braceleft,    1                                           ]   };
    key <AE02> {    [     bracketleft,  2,              periodcentered              ]   };
    key <AE03> {    [     parenleft,    3,              EuroSign                    ]   };
    key <AE04> {    [     less,         4                                           ]   };
    key <AE05> {    [     slash,        5                                           ]   };
    key <AE06> {    [     apostrophe,   quotedbl,       dead_diaeresis              ]   };
    key <AE07> {    [     equal,        plus                                        ]   };
    key <AE08> {    [     backslash,    6,              notsign                     ]   };
    key <AE09> {    [     greater,      7                                           ]   };
    key <AE10> {    [     parenright,   8                                           ]   };
    key <AE11> {    [     bracketright, 9,              exclamdown                  ]   };
    key <AE12> {    [     braceright,   0,              questiondown                ]   };

이것은 행 1(문자 너머 기능 키 아래 행)입니다.

예를 들어 이제 숫자 1을 누르면 가 입력되고 {, Shift+1을 누르면 가 입력됩니다 1. 매우 좋은. 그런데 Capslock을 누르면 {역시 내가 원하는 대로 들어갑니다 1. Capslock은 글자에 작동합니다.

이제 문자와 이 행에는 Caps Lock을 적용하고 Shiftlock과 같은 키보드의 다른 키는 적용하지 않으려고 합니다. 어떻게 해야 합니까?

(Shiftlock: 특정 키를 눌렀다가 놓으면 키보드에서 누르는 모든 키가 Shift 키를 누르는 것과 같습니다. 문자 키뿐만 아니라 , 및 화살표 키 출력도 Insert변경 Home되는데 이는 제가 원하는 것이 아닙니다.)

이는 Windows에서 Microsoft 키보드 레이아웃 관리자를 통해 가능합니다. 키 정의에는 키에 대한 4가지 상태 수준과 Capslock에 대한 또 다른 상태 수준이 모두 포함되어 있기 때문입니다. 하지만 xkb가 이를 허용하는지 여부는 알 수 없습니다.

(cap 1: 이 키는 cap을 활성화하고, cap 0: 비활성화합니다)

//SC    VK_     Cap 0   1        2   6   7
//--    ----    ----    ----    ----    ----    ----    ----

02       1      1   1   007b    -1  -1  -1      // DIGIT ONE, LEFT CURLY BRACKET, <none>, <none>, <none>

답변1

내가 올바르게 이해했다면 기본 동작을 변경하고 싶지 않고 CAPS LOCK상태가 켜졌을 때 숫자 행의 동작만 변경하고 싶을 것입니다. CAPS LOCK이 경우 다음과 같은 옵션이 있습니다.

a) 블록별 유형 변경

기본적으로 다음을 사용하십시오.

  • ALPHABETIC(또는 #_LEVEL_ALPHABETIC더 많은 레벨을 원하는 경우) 항상 상태의 영향을 받아야 하는 키에 대해 CAPS LOCK.
  • TWO_LEVEL(또는 THREE_LEVELFOUR_LEVEL)은 상태의 영향을 받지 않고 CAPS LOCK해당 키에만 영향을 받는 키를 나타냅니다 Shift.
...
    // row 1 (E)
    key.type[group1]="ALPHABETIC"; <<-----------
    key <TLDE> {    [     question,     exclam,         masculine,      ordfeminine ]   };
    key <AE01> {    [     braceleft,    1                                           ]   };
    key <AE02> {    [     bracketleft,  2,              periodcentered              ]   };
    key <AE03> {    [     parenleft,    3,              EuroSign                    ]   };
    key <AE04> {    [     less,         4                                           ]   };
    key <AE05> {    [     slash,        5                                           ]   };
    ...
    // for further definitions where caps lock should not affect, use the following: 
    key.type[group1]="TWO_LEVEL";
    ... 
...

b) 각 개별 키를 변경합니다.

다음은 각 키에 대해 개별적으로 다른 키 유형을 갖고 싶은 경우를 대비해 다른 맥락의 예입니다. 기본적으로 키 유형은 키 정의에 대해 "내부적으로" 설정되는 반면, 블록의 경우 외부적으로 정의되어 후속 키 정의에 적용됩니다.

partial xkb_symbols "swap_menu_rctrl_print" {
    // for newer thinkpad keyboards with print screen in the wrong place
    key <PRSC> {
        type= "TWO_LEVEL",
        symbols[Group1]= [ Control_R, Menu ]
    };
    key <RCTL> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ Menu ]
    };
};

일반적으로 독일 T3 레이아웃의 정의와 같이 보다 복잡한 레이아웃의 정의를 살펴볼 수 있습니다./usr/share/X11/xkb/de

여기에 이미지 설명을 입력하세요.

관련 정보