특정 기본 xterm X11 번역을 어떻게 제거합니까?

특정 기본 xterm X11 번역을 어떻게 제거합니까?

나는 매뉴얼 페이지에 열거된 기본 번역 세트와 함께 제공되는 xterm을 사용하고 있습니다. 내 파일을 편집 하거나 번역 #augment한 내용 ; 이것은 예상대로 작동합니다.#override$XAPPLRESDIR/XTerm

그러나 나는 방법을 찾을 수 없습니다제거하다특정 기본 번역(그리고 xterm에서 실행되는 응용 프로그램에 이벤트가 전달되도록 함)

Meta <Btn2Down>특히 이벤트가 애플리케이션에 전달되기를 원합니다 . xterm 기본 번역은 이것을 clear-saved-lines()다음과 같은 작업 에 바인딩합니다.

기본 키 바인딩
[...]
메타 <Btn2Down>:clear-saved-lines() \n\

Meta-Btn2Down 이벤트를 수신하려면 애플리케이션에 대해 무엇을 해야 합니까?

답변1

제가 알기로는 X Toolkit에는 다음과 같은 기능이 없습니다.제거하다번역. 당신은 할 수 있습니다우세하다또는증가시키다하지만 번역 테이블의 일부를 선택적으로 제거하지는 않습니다.

그것이 추가된 이유 중 하나였습니다.생략번역자원패치 #269. 해당 버전에서는 번역 테이블이 관리하기 쉬운 부분으로 나누어져 좀 더 나은 사용자 정의가 가능합니다.

시작 시 xterm의 기본 번역 중 하나 이상의 부분을 선택적으로 생략합니다. 리소스 값은 쉼표로 구분된 키워드 목록이며 축약될 수 있습니다. "전체 화면","스크롤 잠금","교대 글꼴"또는"휠 마우스". Xterm도 인식합니다."기본", 그러나 이를 생략하면 리소스 설정에서 유사한 정의를 제공하지 않는 한 프로그램을 사용할 수 없게 됩니다.

그러나 StéphaneChazelas의 의견에 동의하면 애플리케이션에 전달되는 이스케이프 시퀀스가 ​​버튼 이벤트를 기반으로 xterm 내부에 구성되기 때문에 제안된 변경 사항을 어떻게 효과적으로 사용할 것인지가 불분명합니다. 아마도 문자열 동작을 사용하는 특별한 번역을 만들 수 있을 것입니다.

답변2

xterm이 처리하지 않고 전달될 이미 바인딩된 키를 찾고 있다면 아마도 insert()또는 insert-eight-bit()작업을 찾고 있을 것입니다.

xterm 매뉴얼 페이지에서:

insert()
이 작업은 누른 키와 관련된 문자나 문자열을 삽입합니다.

insert-eight-bit()
이 작업은 누른 키와 관련된 문자 또는 문자열의 8비트(메타) 버전을 삽입합니다. 단일 바이트 값만 특별하게 처리됩니다. 정확한 조치는 값에 따라 다릅니다.altSendsEscape그리고MetaSendsEscape그리고8비트 입력자원. 그만큼MetaSendsEscape리소스가 먼저 테스트됩니다. 참조8비트 입력전체 토론을 위한 리소스.

"8비트"라는 용어는 오해의 소지가 있습니다.xterm키가 128~255 범위(8번째 비트가 설정됨)에 있는지 확인합니다. 값이 해당 범위에 있으면 리소스 값에 따라xterm그런 다음 다음 중 하나를 수행할 수 있습니다.

  • 값에 128을 더하고 8번째 비트를 설정합니다.
  • 키 앞에 ESC 바이트를 보내거나
  • 키를 변경하지 않고 보냅니다.

예를 들어,

Meta <Btn2Down>:insert-eight-bit() \n\

Alt <Key>Return:fullscreen() \n\추신: 입찰을 피하고 Alt-return을 애플리케이션에 전달할 수 있도록 동일한 문제를 해결했습니다 .

관련 정보