XTerm의 복잡한 마우스 입력

XTerm의 복잡한 마우스 입력

~에서Xterm 제어 순서문서:

일반 추적 모드는 버튼을 눌렀을 때와 놓을 때 모두 이스케이프 시퀀스를 보냅니다. 수정자 키(Shift, Ctrl, Meta) 정보도 전송됩니다. 매개변수 1000을 DECSET으로 지정하여 활성화합니다. 버튼을 누르거나 놓을 때,xtermCSI M 보내기CbCxCy.

  • 의 하위 두 자리CB코딩된 버튼 정보: 0=MB1 누름, 1=MB2 누름, 2=MB3 누름, 3=풀림.

  • 다음 세 비트는 버튼을 눌렀을 때 누른 수정자를 인코딩하고 함께 추가됩니다: 4=Shift, 8=Meta, 16=Control. 그러나 시프트 및 제어 비트는 일반적으로 사용할 수 없습니다.xterm팝업 메뉴에는 마우스와 함께 컨트롤 수정자를 사용하고, 버튼 이벤트의 기본 번역에는 Shift 수정자를 사용합니다. 이것xterm이 인식하는 수정자는 다음과 같습니다.모듈 1마스크이며 반드시 "메타" 키일 필요는 없습니다(참조xmodmap(1)).

  • CX그리고싸이X10 모드로 인코딩된 마우스 이벤트의 x 및 y 좌표입니다.

예를 들어, Shift 키를 누른 채 (1, 1)을 마우스 왼쪽 버튼으로 클릭하고, Ctrl을 누른 채 (2, 2)를 마우스 오른쪽 버튼으로 클릭하고, (3, 3)에서 마우스 왼쪽 버튼을 떼고, ((( ) 4, 4)에서 마우스 오른쪽 버튼 클릭을 놓으면 어떻게 되나요?

당신은 얻을 수 없습니다

ESC [ M 0000100 ! !
ESC [ M 0010001 " "
ESC [ M 0000011 # #
ESC [ M 0000011 $ $

표준 입력에서? 클라이언트 프로그램에서는 어떻게 처리해야 합니까? 그게 어떻게 가능하지?

제어 시퀀스 문서는 읽기가 매우 어렵기 때문에 불필요하게 어렵습니다.

답변1

문서는 다음 질문에 답합니다.

Cb 인코딩의 하위 2비트단추정보: 0=MB1 누름, 1=MB2 누름, 2=MB3 누름,3=해제.

즉, 사용할 수 없습니다.일반 추적 모드규약. 이것은 모호합니다.

모호한 버튼 해제와 관련된 문제가 해결되었습니다.확장된 좌표SGR(1006) 코드 전달:

  • 어떤 버튼을 놓을 것인지에 대한 X10의 모호함을 해결하기 위해 버튼을 놓을 때 다른 최종 문자가 사용됩니다.

최고의 가독성을 위해,PDF유효합니다(일반 텍스트가 마지막에 옵니다).

그러나 질문은 거의 사용되지 않는 경우에 대해 묻습니다. Shift수정자는 일반적으로 "항상" 선택/붙여넣기에 사용되고 Control수정자는 일반적으로 메뉴를 활성화하는 데 사용되기 때문입니다. 이러한 기능은 선택 사항입니다(맨 페이지 설명 참조).omitTranslation또한allowMouseOps). 물론, 실제로 xterm에 관해 질문하지 않는다면 터미널이 무엇을 할지 추측할 수 없습니다.xterm-비슷한이 모든 것을 문서화하십시오.

답변2

또한 이 형식은 버튼이 더 많은 마우스를 완전히 무시합니다.

당신이 인용한 문단 다음의 문단은 다음과 같습니다:

휠 마우스는 버튼 4와 5를 반환할 수 있습니다. 이러한 버튼은 이벤트 코드에 64가 추가된다는 점을 제외하면 각각 버튼 1 및 2와 동일한 이벤트 코드로 표시됩니다. 휠 버튼 해제 이벤트를 보고하지 않음

관련 정보