XKB - 화살표 키를 다시 매핑하고 Shift 동작을 유지하여 텍스트 선택

XKB - 화살표 키를 다시 매핑하고 Shift 동작을 유지하여 텍스트 선택

화살표 키 재매핑이 오래된 문제라는 것을 알고 있지만 바닐라 화살표 키를 사용하는 것처럼 SHIFT + 재매핑 키를 사용하여 텍스트를 선택할 수 있는 좋은 솔루션을 찾지 못하는 것 같습니다.

예를 들어 Caps Lock을 ISO_Level3_Shift로 다시 매핑하고 xkb_symbols를 다음 중 하나를 읽도록 설정하면

key <AC08>  { [         k,          K , Down, Down] };

또는

key <AC08>  { type="THREE_LEVEL",
              [         k,          K , Down ]  };

Shift+CapsLock+K를 누르면 정확하게 CapsLock+K와 동일하게 작동합니다(Shift+Down은 Down 단독과 다르게 동작합니다).

나는 더 높은 수준의 매크로 유틸리티를 사용하고 키보드 이벤트를 생성하는 데 다소 더 많은 성공을 거두었습니다(예: Shift 키와 화살표 키 누르기를 모두 생성). 그러나 그 접근 방식에는 다양한 문제가 있습니다. 종종 시뮬레이션된 키 누르기에 대한 UI 반응이 "실제" 키 누르기와 다르며 성능 문제도 있습니다. 처리할 수 있는 것보다 더 빨리 입력할 수 있습니다.

Tl;dr; X 아래에 다시 매핑된 화살표 키를 사용하여 Shift-선택을 어떻게 할 수 있나요?

답변1

이를 위해 사용할 수 있습니다 preserve. 유형 정의(예: THREE_LEVEL)에 라인을 추가하세요.

preserve[LevelThree+Shift] = Shift;

이는 의 경우 수정자 조합에서 적절한 수준을 알아낼 때 이동 수정자를 유지하도록 xkb에 지시합니다 LevelThree + Shift. Shift 수정자는 툴킷이나 애플리케이션에서 사용하기 위해 전달됩니다(여기도 참조:유형과 함께 보존 사용).

이는 예를 들어 응용 프로그램이 키 입력 조합을 해석하는 방법에 영향을 미칩니다. 위의 보존 및

key <AC08> { type="THREE_LEVEL", [ k, K, kappa ]  };

Shift 수정자가 보존되어 애플리케이션에 전달되기 때문에 Ctrl + Shift + LevelThree + <AC08>애플리케이션은 이를 키 콤보 Ctrl + Shift + kappa(보통 대신 )로 읽 습니다.Ctrl + kappa

관련 정보