xmodmap 문제 및 키당 대체 기호가 4개를 초과하는 불일치

xmodmap 문제 및 키당 대체 기호가 4개를 초과하는 불일치

저는 키보드를 더욱 유용하게 만들고 xmodmap수학 및 그리스 기호를 mod3수정자 수준에 매핑하려고 노력하고 있습니다. Caps Lock은 에 매핑되어 있습니다 mod3. 제가 이해한 바에 따르면 8개의 입력 라인은 .Xmodmap다음과 같이 작동합니다.

[없음], [shift], [mod3], [mod3+shift], [altgr], [altgr+shift], [altgr+mod3], [altgr+shift+mod3]

나는 이것을 사용해 왔으며 대부분 작동합니다. 몇 가지 이상한 현상을 제외하면요. 예를 들어:

keycode  49 = backslash bar includes includedin infinity infinity EuroSign EuroSign

이렇게 하면 처음 4개의 항목이 정상적으로 생성되지만 루프가 발생합니다(altgr+key=백슬래시, 무한대가 아님). 하지만 만약 내가 그렇게 한다면

keycode  10 = backslash bar includes includedin infinity infinity EuroSign EuroSign

처음 4개의 항목을 생성합니다.그리고무한대이지만 유로 기호가 표시되지 않습니다( includes합계를 얻습니다 includedin). 방금 다른 키를 사용했지만 다른 모든 것은 동일합니다! 항목이 6개만 있어도(8개 항목에 대한 구문 분석 문제가 있는 경우) 해당 특정 키에 무한대가 표시되지 않습니다.

또한 세 번째 및 네 번째 항목(mod3 및 mod3+shift)에 그리스 문자를 매핑했습니다. 소문자는 잘 작동하지만 대문자는 Shift+mod3+S, Shift+mod3+W 및 Shift+mod3+X에서는 작동하지 않습니다. 폰트 문제는 아닌데 xev화면이 안 나오네요어느이 조합을 사용할 때 발생하는 이벤트입니다.

항목은 다음과 같습니다

keycode  39 = s S Greek_sigma   Greek_SIGMA   integral integral downarrow downarrow

또한 마지막 두 항목은 대부분 작동하지 않습니다.

설상가상으로 한 줄은 특히 혼란스러워집니다. 나는 들어갔다

keycode  51 = zcaron Zcaron zcaron Zcaron dstroke Dstroke dstroke Dstroke

하지만 내가 이것을 할 때 xmodmap -pke나는 얻는다.

keycode  51 = zcaron Zcaron zcaron Zcaron dstroke Dstroke dstroke Dstroke zcaron Zcaron dstroke Dstroke zcaron Zcaron dstroke Dstroke

모든 항목을 복사합니다. 이 작업을 수행하는 몇 가지 키가 있지만 전부는 아닙니다!

그래서 내 질문은 다음과 같습니다.

  • 8개의 입력 라인을 올바르게 사용하고 있습니까?
  • 키코드마다 작동하는 키 기호의 수가 다른 이유는 무엇입니까?
  • 창 관리자의 무언가가 이러한 조합을 매핑하고 먹어치우는 것이 가능합니까?
  • 왜?일부행을 적용할 때 중복이 발생합니까?
  • 이것은 모호한 xlib 버그입니까?
  • 수정자 기능이 제한되어 있나요?

저는 독특한 상황에 처해 있으며 제가 알지 못하는 알려지지 않은 단축키가 있을 리가 없습니다. 왜냐하면 제 창 관리자는 제가 직접 만든 것이고 모든 단축키를 제어하기 때문입니다.

자세한 내용: Caps Lock 매핑은 다음과 같이 수행됩니다.

keycode  66 = Mode_switch

clear lock
clear control
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5
add control = Control_L Control_R
add mod1 = Alt_L Meta_L
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Hyper_L
add mod5 = ISO_Level3_Shift

시스템은 새로 업데이트된 아치 리눅스입니다.


편집: 문제의 작은 부분(전혀 작동하지 않는 SWX)은 키보드의 키가 서로 옆에 있기 때문에 발생한다는 것을 알았습니다(키가 붙어서 동시에 누른 3개의 키를 처리할 수 없음). 콤비네이션). 오른쪽으로 이동하면 W와 X 문제가 해결되었지만 S 문제(이 특정 키보드의 경우)는 해결되지 않았습니다.

나머지는 여전히 미스터리입니다. 특히 키코드 49에 대한 손상된 5번째 및 6번째 항목(탭 위의 완전히 쓸모없는 항목)입니다.

답변1

나중에 참고할 수 있도록 내 질문에 답하는 것이 좋습니다.

xmodmap약간의 조사 끝에 키보드 모델의 조잡한 패치로 인해 실제로 더 이상 사용되지 않는다는 사실을 알게 되었습니다 xkb. xkb대안의 선형 배열을 사용하는 대신 이 모델은 레이아웃을 로 분할하며 groups각 그룹은 서로 다른 교대 수준의 여러 문자를 갖습니다. 이러한 xmodmap정의는 그룹 1, 레벨 1,2, 그룹 2, 레벨 1,2, 그룹 1, 레벨 3과 같이 매우 흥미로운 순서로 항목을 채웁니다.... 이러한 그룹의 의미는 "레이아웃"과 유사하지만 일반적으로 사용되는 수정자는 아니지만 액세스를 위해 전환할 수 있습니다. 제가 사용하고 있는 캐릭터는 예외인데 Mode_switch, 그룹 2에만 접근이 가능합니다.

그거 빼고는 다 좋은데키에는 유형이 있습니다. 각 키는 레이아웃에 의해 TWO_LEVEL등으로 정의되며, 각 레벨은 어떤 수정자가 어떤 레벨에 매핑되는지에 대한 서로 다른 개념을 가질 수 있습니다 FOUR_LEVEL. FOUR_LEVEL_ALPHANUMERIC내가 가정한 동작(8레벨, 모든 조합)은 실제로 LOCAL_EIGHT_LEVEL레이아웃에서 전혀 사용되지 않습니다. 따라서 keycode 의 경우 51기본값은 실제로 이며 TWO_LEVEL, xmodmap첫 번째 그룹에 6레벨을 추가하는 대신 3개의 그룹을 6개의 키로 채웁니다. 수정자는 세 번째 그룹에 도달하지 않았습니다 Mode_switch. 다른 키를 사용하면 사전 정의된 유형이 다르기 때문에 동작이 달라집니다.

printout의 반복과 마찬가지로 xmodmap정확히 무슨 일이 일어나고 있는지 잘 모르겠습니다(정의를 인쇄했는데 xkb모든 것이 괜찮았습니다). 그러나 가변 길이 다차원 배열에서 다음으로 매핑할 때 오류가 발생하는 것은 놀랍지 않습니다. 단일 기호 목록. 그럼에도 불구하고 출력은 실제 상태를 반영하지 않습니다.

요약하자면,xmodmap은 사악합니다. 절대 사용하지 마십시오. 그 동작은 기껏해야 불규칙하고 불분명합니다. 그것은 그것이 말하는 대로 하지 않습니다. 나만의 xkb지도를 만들어 보세요. -ing을 사용하면 대부분의 레이아웃을 재사용 include하고 필요한 수정 사항을 추가할 수 있습니다.

내 경우 해결책은 그리스어 레이아웃에서 두 번째 세트를 파생시키고 전략적인 위치의 수학적 기호를 첫 번째 세트에 대한 일부 수정 사항으로 바꾸는 것이었습니다.


대부분의 저렴한 키보드는 한 번에 3개의 키를 누르는 것이 매우 제한되어 있습니다. 이로 인해 일부 키에서 불안정하고 하드웨어 관련 결함이 발생했습니다. 나는 다른 수정자 키(세상에서 가장 쓸모없는 키, 메뉴 키 또는 비슷하게 쓸모 없는 오른쪽 Win 키)를 시험해보고 더 나은 키보드를 구입할 예정입니다. 이 두 가지 문제(잘못 설계된 하드웨어 + 악의적인 사기성 소프트웨어)의 결합으로 인해 처음에는 두 문제를 별도의 문제로 볼 수 없는 혼란스럽고 무작위적인 상황이 발생했습니다.


읽을 거리:

관련 정보