GNU 화면을 클릭하면 이상한 문자가 나타납니다

GNU 화면을 클릭하면 이상한 문자가 나타납니다

GNU 화면에 작은 문제가 있습니다. 내 RaspberryPi에서 실행되는 GNU 스크린 세션. 이제는 가끔 가입할 때 터미널을 클릭하면(Fedora에서는 터미네이터를 사용합니다) 이상한 문자가 쓰여지는 것을 볼 수 있습니다. 이 문자는 내 마우스 좌표에 따라 다릅니다. GNU 화면으로 전송된 클릭 이벤트를 잘못 디코딩한 것 같습니다. 이러한 문자에는 다음과 같은 문자가 포함됩니다.

kM#kM -  Z3#Z3  -  q-#q-

등…

처음에는 이것이 내 문제라고 생각하여 ttyRaspberryPi에서 새로운 GNU Screen 세션을 열었습니다. 전혀 문제가 없습니다. 두 세션을 모두
확인 stty -a하고 차이점을 발견했습니다. 그런 다음 stty -g > ~/stty-good-settings좋은 세션에서 하나를 수행하고 나쁜 세션에서 로드했지만 stty `cat ~/stty-good-settings`(나중에 값을 비교하여 설정이 성공적으로 로드되었습니다) 진행 중인 다른 Screen 세션이 아닌 한 스크린 세션에서는 여전히 문제가 있습니다!

무슨 일이 일어나고 있는지 잘 모르겠습니다. 이것이 내 TERM가치관(둘 다 동일) 때문이라면 내 tty설정, 내 터미널 때문이라면...

답변1

달려갈 것~에GNU Screen은 xterm(또는 유사한)에서 실행되고 응용 프로그램 마우스 모드를 활성화하는지 확인합니다. (또는 GNU 화면에 연결하기 전에 해당 터미널에서 실행 중인 것, 어쩌면 ssh 이전에도 제대로 재설정되지 않았을 수 있습니다.) $TERM이 "screen"이 아니고 "xterm" 또는 "screen"인 경우, 이런 일이 일반적으로 발생합니다. xterm". 후자는 설치된 ncurses-termDebian 시스템(및 파생 제품)에서 발생합니다. (호스트 및 raspi에서) 패키지를 지워보세요.

그렇지 않으면 reset(이미 말했듯이) printf \\x033c일시적으로 도움이 될 수 있습니다. 또는 물론 올바른 이스케이프 시퀀스를 사용하면 터미널 에뮬레이터에 마우스 모드를 비활성화할 수 있습니다.

답변2

reset자리가 있지만 화면이 지워집니다. 당신이 달리고 있다면xterm또는 아무것도호환 가능, 이를 사용하는 가장 짧고 덜 침습적인 방법은 다음과 같습니다.

printf '\033[?9l'

이는 명시적으로 명시되어 있지 않습니다.마우스 추적부분XTerm 제어 순서, 하지만xterm열려 있는 모드를 모두 닫아 마우스 모드를 재설정(비활성화)할 수 있습니다. 이는 명명된 상수로 문서화되어 있습니다.

 #define SET_X10_MOUSE               9
 #define SET_VT200_MOUSE             1000
 #define SET_VT200_HIGHLIGHT_MOUSE   1001
 #define SET_BTN_EVENT_MOUSE         1002
 #define SET_ANY_EVENT_MOUSE         1003

그리고 9가장 짧습니다.

많은 응용 프로그램이 마우스 모드를 활성화합니다. 닫지 않고 종료하면 이상한 문자가 표시됩니다. ncurses 응용 프로그램이 마우스 모드를 끕니다.endwin, 선의로 동작하는 모든 저주 애플리케이션에서 호출됩니다. 다른 응용 프로그램에서는 (n)curses를 사용하지 않거나 호출하는 것을 잊어버릴 수 있습니다 endwin.

ncurses 애플리케이션은 기능을 테스트하여 xterm-mouse 모드를 사용할 수 있는지 확인합니다 kmous(이것은screen터미널 설명). 이는 이후 기능을 테스트하는 표준 방법이었습니다.1999년, 따라서 응용 프로그램이 실수로 마우스 모드를 켤 가능성이 줄어듭니다. 대신, 이는 애플리케이션이 해당 작업을 수행하는 것을 잊어버렸음을 나타냅니다.

screen.xterm그런데 데비안에는 항목이 없습니다.ncurses-term패키지(삭제하는 것보다 유지하는 것이 더 도움이 됩니다). 다음은 패키지의 모든 화면 관련 항목 목록입니다. screen다양한 터미널의 동작 차이를 수정하는 데 가장 많이 사용됩니다 .

/usr/share/terminfo/s/screen.konsole
/usr/share/terminfo/s/screen-16color-bce
/usr/share/terminfo/s/screen-16color
/usr/share/terminfo/s/screen3
/usr/share/terminfo/s/screen.mrxvt
/usr/share/terminfo/s/screen-bce.Eterm
/usr/share/terminfo/s/screen-bce.gnome
/usr/share/terminfo/s/screen.xterm-xfree86
/usr/share/terminfo/s/screen-bce.konsole
/usr/share/terminfo/s/screen-bce.mlterm
/usr/share/terminfo/s/screen-256color-s
/usr/share/terminfo/s/screen-bce.mrxvt
/usr/share/terminfo/s/screen-bce.rxvt
/usr/share/terminfo/s/screen.linux
/usr/share/terminfo/s/screen.vte
/usr/share/terminfo/s/screen-bce.xterm-new
/usr/share/terminfo/s/screen.teraterm
/usr/share/terminfo/s/screen-16color-bce-s
/usr/share/terminfo/s/screen.xterm-r6
/usr/share/terminfo/s/screen+fkeys
/usr/share/terminfo/s/screen-256color-bce-s
/usr/share/terminfo/s/screen.mlterm
/usr/share/terminfo/s/screen-16color-s
/usr/share/terminfo/s/screen-bce.linux
/usr/share/terminfo/s/screen.gnome
/usr/share/terminfo/s/screen.rxvt
/usr/share/terminfo/s/screen2
/usr/share/terminfo/s/screen.Eterm
/usr/share/terminfo/s/screen.xterm-new

관련 정보