Numlock 키를 XKB의 등호 키로 사용

Numlock 키를 XKB의 등호 키로 사용

Numlock 키는 오늘날에는 거의 사용되지 않지만 (표준) 키보드 레이아웃에서 눈에 띄게 기능합니다.

나는 스프레드시트 작업을 많이 하기 때문에 키보드를 사용하여 데이터를 입력하는 것이 편리하지만 한 가지 주의할 점이 있습니다. 오른손이 키보드 위에 있을 때는 등호에 접근하기가 어렵습니다.

내 생각은 Numlock을 다시 매핑하여 Numlock과 동등의 역할을 모두 수행할 수 있도록 하고 전자는 수정자를 통해 액세스할 수 있도록 하는 것입니다.

xkb같은 일을 시도했지만 xmodmap비슷하게 나쁜 결과를 얻었 기 때문에 이를 위해 나만의 키맵을 만들기로 결정했습니다 .

(파일 이름 pb)

default partial alphanumeric_keys
xkb_symbols "basic" {
    
    name[Group1] = "PB (US intl with level 3 and level 5";
    key.type[Group1] = "EIGHT_LEVEL";

    include "us(altgr-intl)"

    //              (norm)     NLOCK     AltGr
    key.type[Group1] = "FOUR_LEVEL_MIXED_KEYPAD";
    key <NMLK> { [ KP_Equal, KP_Equal,  Num_Lock, Q ] };

    include "level3(ralt_switch)"
    include "level5(rctrl_switch)"
};

이제 보시다시피 나중에 사용자 정의 레이아웃을 확장하고 싶었을 때 레벨 3과 레벨 5를 추가했지만, 레벨 3과 레벨 5를 추가하지 않고 테스트했는데 Numlock을 방해하지 않았습니다.

Numlock 키를 누르면 결과 동작은 다음과 같습니다.

(번호 잠금 꺼짐)

  • Numlock: '='
  • Shift+ Numlock: '='
  • AltGr+ Numlock: (번호 잠금 켜기)
  • AltGr+ Shift+ Numlock: '묻다'(테스트를 위해 추가했습니다)

괜찮습니다. AltGr과 Shift를 누른 상태에서 "Q"를 인쇄하여 해당 교대 레벨에 도달할 수 있는지 확인하세요. 그러나 Num lock이 켜져 있으면 동작이 전혀 만족스럽지 않습니다.

(번호 잠금이 켜져 있음)

  • Numlock: (번호 잠금을 끕니다)
  • Shift+ Numlock: (번호 잠금 끄기)
  • AltGr+ Numlock: (번호 잠금 끄기)
  • AltGr+ Shift+ Numlock: (번호 잠금 끄기)

KP_Equal아무리 노력해도 Num lock이 작동하도록 하는 것은 불가능해 보입니다 .

Numlock원래 는 등호를 인쇄하기 위해 누를 때 ShiftNum Lock을 켜거나 끄고 싶었습니다 . 이것이 불가능할 것 같아서 ISO 레벨 3( AltGr)을 선택했는데 그것도 안되는 것 같았습니다. 내가 원하는 것은 NumlockNum lock이 켜져 있는지 꺼져 있는지에 관계없이 등호를 인쇄하고 mod 키를 누르고 있을 때 Num Lock을 전환하는 것입니다(나에게는 어느 것이 중요하지 않습니다. 바람직하게는 또는 Shift) AltGr.

답변1

그래서. "xev"의 출력을 보면 참고하세요.상태,

  • Num_Lock키에 키 기호를 그대로 두면 상태 10이 표시되고 KP_equal 해당 키 기호에 해당하는 키를 눌러도 잠기지 않습니다. 이 때문에 잠겨 있을 때 누르면 KP_Equal잠금이 해제됩니다.
  • Num_Lock이제 적절한 레이어를 잠그는 동안 이 불쾌한 상태를 생성하지 않도록 이 키를 제거하려고 합니다 . 작업은 다음과 같이 수행됩니다.
replace key <NMLK> {
type[Group1]= "FOUR_LEVEL_MIXED_KEYPAD",
symbols[Group1]= [ KP_Equal, KP_Equal,  Num_Lock, Q ],
actions[Group1]= [ NoAction(), NoAction(), 
                   LockMods(modifiers=NumLock), NoAction()
};

밑줄이 들어가지 않도록 주의하십시오. 그렇지 않으면 작동하지 않습니다.

  • 이제 확인할 수 있습니다상태; 어떤 경우에도 문제가 없지만 Num_Lock지도에서 키 기호를 제거했기 때문에 이 상태는 더 이상 의미가 없습니다. 따라서 사용하지 않는 대체 키코드를 찾아 Num_Lock여기에 키 기호를 할당해야 합니다. 이 예에서는 키 코드 249를 사용하겠습니다.
replace key <I249> { symbols[Group1]= [ Num_Lock ] };

이제 잘 작동할 겁니다 :)

관련 정보