특정 프로그램(구성)을 실행할 때 터미널이 복잡해집니다. 내 입력 내용이 표시되지 않습니다. "stty sane"을 사용하여 고칠 수 있었지만 터미널에서 마우스를 클릭할 때마다(저는 PuTTY를 사용합니다) 이상한 문자가 나타나는 것을 발견했습니다. 예를 들어
# O:#O: O:#O: 7-#7- BE#BE ...
5개의 문자로 구성된 시퀀스로 나타나는데, 동일한 위치를 클릭하면 동일한 시퀀스가 나타납니다.
"재설정"을 사용하여 문제를 해결할 수 있다는 것을 알고 있지만 이것이 무엇인지, 재설정하지 않고 문제를 해결할 수 있는 방법이 있는지 알고 싶습니다. "구성" 내에서 터미널을 엉망으로 만드는 근본 원인을 찾는 방법이 있을 수도 있습니다.
답변1
이것은 xterm 스타일입니다"생쥐"이벤트. 원칙적으로 적절한 printf
OR을 사용하여 이를 끌 수 있지만 echo
터미널 설명에서 이미 OR 문자열의 일부인 경우 reset
("infocmp" 출력 참조).rs1
rs2
reset
예를 들어 다음을 사용하십시오.
rs1=\Ec,
rs2=\E[!p\E[?3;4l\E[4l\E>,
그리고 후자를 선호합니다(전자는 하드 리셋입니다). \E
이스케이프 문자 입니다 . 그런데 첫 번째 블록은 rs2
,\E\[!p
일반적으로 마우스 및 기타 대부분의 유용한 항목을 재설정하는 소프트 재설정입니다. printf는
printf '\033[!p'
타이핑하는 것 그 이상입니다.
reset
echo
(당신이 알고 있는 비표준을 사용하더라도 \E
). 그러나 화살표 키에 대한 설명: 소프트 재설정은 커서 키를 다시 일반 모드로 되돌리는 반면 vi는 해당 키가 응용 프로그램 모드에 있다고 생각합니다.
마우스만 비활성화하려면 다음 출력을 확인하십시오 infocmp -x
.
XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
이는 ncurses에게 마우스를 활성화/비활성화하는 방법을 알려줍니다. 터미널 설명이 완전히 정확하지 않습니다저것, 하지만 1000
그것은일반 마우스 모드귀하의 예가 이것을 보여줍니다. 그럼... 넌 할 수 있어
printf '\033[?1000l'
(소문자 L은 비활성화됩니다) 그런 다음 마우스를 죽입니다.
"일부 프로그램"이 스스로 정리할 수 없기 때문에 이 현상이 나타나는 것입니다.