때로는 마우스를 지원하는 응용 프로그램(예: Midnight Commander)이 충돌하거나 연결이 끊어지지만 해당 터미널이 일부 모드에 남아 있어 마우스 움직임을 문자열 명령으로 허용하는 경우가 있습니다.
(base) dimskraft@studebaker:~$ set mouse=
(base) dimskraft@studebaker:~$ set ttymouse=
(base) dimskraft@studebaker:~$ 0;32;19M32;33;19M32;34;19M32;36;19M32;37;19M32;38;20M32;39;20M32;41;20M32;42;20M32;43;20M32;44;20M32
그런 일이 발생하면 어떻게 비활성화합니까?
나는 그것을 관찰 Terminator
하고 다른 창에서 다른 동작을 볼 수 있습니다. 보시다시피, 공백으로 설정하는 것은 도움이 mouse
되지 ttymouse
않습니다.
답변1
이 설정이 적용됩니다vim에게, 쉘이 아닌.
가장 좋은 방법은 터미널을 재설정하는 것입니다.
reset
이렇게 하면 마우스 추적이 비활성화되고 Midnight Commander와 같은 도구로 수행된 다른 변경 사항도 취소됩니다( CtrlC예: MC 충돌 후 누르기 시도).
또는 다음을 결정할 수 있습니다.사용할 마우스 추적 모드, 명시적으로 비활성화합니다(예를 들어 echo -e '\e[?1002;1005l'
내 터미널에서 충돌이 발생한 후 Midnight Commander), 다른 설정은 그대로 유지됩니다. stty sane
이러한 문제를 담당하는 라인 규율에 대한 온전한 정신을 되돌릴 것입니다.
답변2
reset
엄청난 과잉입니다. 우선, 간단히 응용 프로그램을 다시 시작한 다음 적절하게 종료하면 이 문제가 해결됩니다. 결국 종료 시 필요한 마우스 보고 기능이 꺼집니다.
또는 제어 시퀀스를 터미널에 직접 보내 마우스 보고를 끌 수도 있습니다. printf
쉘 유틸리티를 사용하여 이스케이프 기호를 사용하여 제어 시퀀스를 수동으로 입력하면 됩니다 .
setterm
편의와 사용자 공간 가상 터미널을 위해 이를 수행할 수 있는 향상된 휴대용 버전의 유틸리티를 만들었습니다. util-linux와 달리 GUI 터미널 에뮬레이터 및 BSD와 함께 사용할 수 있으며 특정 터미널 제품군만 제어 시퀀스를 올바르게 처리한다는 사실에 민감합니다.
%printenv 용어 무음 %setterm -7 --xterm-mouse-reports 닫기 --dec-locator-reports 닫기 %setterm -7 --xterm-mouse-reports off --dec-locator-reports off 콘솔 디코딩 ECMA48 | %setterm -7 --xterm-mouse-reports off --dec-locator-reports off | %수출항=xterm-256color %내보내기XTERM_VERSION=999 %setterm -7 --xterm-mouse-reports off --dec-locator-reports off 콘솔 디코딩 ECMA48 | 감속도 0 데셀 0 드 CRM 1006 드 CRM 1003 드 CRM 1002 드 CRM 1000 %setterm -7 --xterm-mouse-reports off --dec-locator-reports off | 00000000 1b 5b 30 27 7a 1b 5b 30 27 7b 1b 5b 3f 31 30 30 |.[0'z.[0'{.[?100|] 00000010 36 6c 1b 5b 3f 31 30 30 33 6c 1b 5b 3f 31 30 30 |6l.[?1003l.[?100|] 00000020 32 6c 1b 5b 3f 31 30 30 30 6c |2l. [?1000l| 0000002a %
제어 시퀀스가 있습니다.
추가 읽기
- 조나단 데보인 폴라드(2018).
setterm
. 스낵 가이드. 소프트웨어. - https://unix.stackexchange.com/a/482782/5132
- 왜 printf가 echo보다 나은가요?
- https://unix.stackexchange.com/a/491883/5132