최근에 프로젝트 작업을 할 수 있도록 원격 서버에서 공간을 임대하기 시작했습니다. Windows 컴퓨터에서 비교적 쉽게 액세스 할 수있는 방법은 PuTTY를 통한 것입니다. 그러나 그것을 사용할 때 항상 나를 괴롭힌 한 가지가 있습니다. 왜냐하면 임의의 문자가 때로는 커서에 삽입되는 이유가 없기 때문입니다.
대부분의 경우 단일 물결표이지만 이스케이프 시퀀스 ([[^ 8 등)처럼 보이는 것은 거의 없습니다. 키보드를 타이핑하거나 20 피트 떨어져 있는지 여부에 관계없이 창에 집중할 때만 발생합니다. 오랫동안 방치하면 임의 간격으로 물결표가 뱉어집니다 (평균은 약 1 분).
마지막으로 nano 또는 mysql 인터페이스와 같은 프로그램을 실행할 때이 동작이 일치하지 않는 것 같습니다. nano에서는 물결표를 삽입하는 대신 마크 (ctrl- ^)를 설정합니다. mysql에서 줄은 편집 할 수 없게됩니다.
내 질문은 이것입니다 : 다른 사람이 PuTTY에서 이런 종류의 행동을 경험 했습니까? 그렇다면이 동작을 방지 / 수정하기 위해 무엇을 할 수 있습니까?
답변
PuTTY와 동일한 문제가 발생하여 매분마다 F13 키를 효과적으로 눌러 화면 보호기의 활성화를 중지시키는 “카페인”이라는 응용 프로그램으로 인해 발생한 것으로 나타났습니다 (그룹 정책으로 인해 화면 보호기 시간 초과가 변경되지 않음) 내 기계). 응용 프로그램을 비활성화하면 문제가 해결되었습니다.
답변
퍼티 및 카페인을 실행하려면 다음 단계를 따르십시오.
- 카페인 중지
- Caffeine readme.txt에서 기본 키 시뮬레이션을 확인하십시오.
F15
- 퍼티를 통해 원격 터미널에 로그인
- 카페인 시작 (팁 : 짧은 간격 (예 : 3 초)으로 카페인 시작)
- 퍼티 세션에 집중하십시오.
- bash 명령 프롬프트에서
Ctrl+V
(키에 대한 특수 코드를 얻는 데 필요합니다. 예 : tryCtrl+V
다음에옵니다F12
) - 카페인이 키를 시뮬레이션 할 때까지 기다리십시오.
- 키 코드 (예를 들어, 명령 줄에 표시 될 것
F15
입니다^[[28~
경우,^[
탈출이다). 카페인 중지 - 이제이 키를 공란에 묶어 카페인이 시뮬레이트 할 때 입력하지 않도록 할 수 있습니다
~
- 편집
~/.inputrc
(없는 경우 새 파일 만들기) - 라인을 추가
"\e[28~":""
- 편집
- 카페인 시작
- 터미널 세션을 다시 시작하십시오
~
해당 Linux 서버에서 Putty 터미널을 사용할 때 더 이상 무작위가 없어야 합니다.
답변
나는 shreyansp 의 솔루션이 가장 만족 스럽지만 가장 만족스럽지 않다는 것을 알았습니다. 🙂
그것을 개선하려는 시도는 물론입니다 (물론 YMMV). 이것이 해결책을 찾는 사람들에게 유용 할 수 있기를 바랍니다 🙂
내 솔루션은 다음과 같이 작동합니다.
- 카페인은 다음과 같은 적절한 가상 키 코드를 Windows로 보냅니다.
- Windows가 절전 모드 또는 유휴 상태가되지 않도록 방지
- Windows에서 단독으로 또는 조합하여 부작용을 발생시키지 않습니다 (Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 등).
- 퍼티에게 보내지 않거나 퍼티에 의해 무시됩니다
TL; DR : 내 솔루션은 -key:0E
카페인 매개 변수를 사용하여 2 단계와 3 단계 (아래 참조) 사이에 적용됩니다. 카페인을
종료하고 다음과 같이 다시 시작하십시오.
caffeine.exe 5 -key:0E
(쉬운 테스트를
caffeine.exe 50 -key:0E
위해)
read
원격 호스트에서 프로그램을 시작 하고 5 초 또는 50 초마다 키 입력이 수신되지 않는지 확인하십시오.- 종료
read
와Ctrl+C
Shreyansp 는 5 단계와 10 단계 사이에 수정 사항이 적용되는 솔루션을 제안했습니다 (아래 참조).
그것의 부작용 (내 구성에서)은 퍼티가 카페인에서 원격 호스트로 전달되는 각 키 입력으로 다음과 같습니다.
- 일반적으로 원하는 ‘키 누름시 스크롤 막대 재설정'(퍼티 / 창 페이지에서 설정)을 트리거 했지만 (인간이) 키를 눌렀을 때만 카페인이 정기적으로하지 않습니다. 🙂
- 작성한 Readline / bash가 그것 (버전 번역
'"\e[28~"'
에'""'
(빈 키?) 발생 몇 초 동안 정지하는 원격 세션의 상호 작용
위의 테스트를 쉽게 수행하려면 Caffeine을 종료하고 5 초 간격으로 Virtual-Key Code 07으로 다시 시작하십시오.
caffeine.exe 5 -key:07
read
원격 호스트에서 프로그램을 시작 하고 5 초 또는 50 초마다 키 입력을받는 방법을 확인하십시오.- 종료
read
와Ctrl+C
내가 이해 한 키 스트로크 ‘파이프 라인’:
- 카페인은 가상 키 코드를 Windows로 보냅니다
- Windows는 가상 키 코드를 Putty에 보냅니다.
- 퍼티는 다음의 일부 세션 설정에 따라 일부 ‘번역’/ ‘매핑’을 수행합니다.
- 단말기/*
- 창문/*
- Putty는 ‘번역 된’/ ‘매핑 된’키 코드를 원격 호스트로 보냅니다.
- 원격 호스트에, ‘단말기’프로그램 (예 :
$TERM=xterm
,vt100
,vt102
,vt220
, 등)을 키 코드로 ‘선 프로토콜’로 변환한다. - readline 라이브러리는 다음을 기반으로 일부 번역 / 매핑을 수행합니다.
~/.inputrc
- readline은 키 코드를 bash로 보냅니다.
- bash는
~/.bashrc
(내장 바인드 명령을 기반으로) 일부 번역 / 매핑을 수행합니다. - bash 또는 readline (어떤 것이 확실하지 않은지)은 번역 된 키 코드를 nano (내 텍스트 편집기)로 보냅니다.
- 이 파이프 라인은
screen
프로그램 을 추가하여 더 길어질 수 있습니다 ($TERM=screen
5 단계 에 대한 포함 및 6 단계에서 10으로 다시 루프).
참고 : 4 단계에 도달하면 ‘번역’/ ‘매핑’의 여러 계층을 정확하게 제어하기가 매우 어려워집니다. 가능하다면 피하는 것이 좋습니다.
배경 : pfsense 2.3.3-RELEASE-p1 (FreeBSD 10.3-RELEASE 기반)을 다루기 전에 몇 년 동안
사용 caffeine.exe -key:07
했습니다.
그런 다음, caffeine.exe -key:07
같은 다른면에 수신 ^[[28~
에 매핑 될 것으로 보인다 … Ctrl+^
나노에서 (설정 마크).
이것은 매우 성가신 일이었습니다 (메모장에서 텍스트 캐럿을 움직일 때 Shift 키를 누르고 유지하는 사람을 상상해보십시오).
이전에, 내가 퍼티 설정에서 다수의 사용자 정의를했다, ~/.tcshrc
, ~/.inputrc
, ~/.bashrc
, ~/.nanorc
, ~/.screenrc
나는 기본 기능을 고려할 것을 얻을 ( Backspace
, Delete
, Home
, End
, PgUp
, PgDown
, Ctrl+Left
, Ctrl+Right
, 숫자 키패드 0-9
, 숫자 패드 ./*-+
) bash는 / 나노 / 화면 사이에 지속적으로 노력.
이 caffeine.exe -key:07
‘버그’를 발견 한 후에 는 다시 한 번 되돌아보고 싶지 않았습니다. 🙂
테스트 :
Windows 8.1 64-bit Enterprise ( 6.3.9600 ) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 ( FreeBSD 10.3-RELEASE 기반 ) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00
참고 문헌 :
-
카페인:
- 카페인이 Windows로 보낸 가상 키 코드
(Undefined
설정에 맞는 첫 번째 코드를 선택합니다 )
- 카페인이 Windows로 보낸 가상 키 코드
-
Readline / inputrc / bash / bashrc / (builtin) 바인드 :
- http://www.softpanorama.org/Scripting/Shellorama/inputrc.shtml
- http://cnswww.cns.cwru.edu/php/chet/readline/rluserman.html
- https://docs.freebsd.org/info/readline/readline.pdf
- 개요:
- ‘bind -r keyseq’를 사용하여 바인딩을 해제하면 번역되지 않은 키만 응용 프로그램으로 전달됩니다 (필자의 경우 nano).
- ‘keyseq’에서 ‘ “”‘로 다시 매핑한다는 것은 빈 키 (무엇을 의미하는지)가 응용 프로그램으로 전송되었음을 의미합니다 (일부 잠금 발생).
-
퍼티:
- PuTTY wish 휴대용 키보드 (핸들러)
- PuTTY wish 키 매핑
- 개요:
- 퍼티는 하나 이상의 특정 키를 무시할 수있는 조항이 없습니다 (필수 / 원하는 기능으로 나열되지 않음)
- 그러나 퍼티는 인식하지 못하거나 지원하지 않는 가상 키 코드를 필터링하는 것으로 보입니다 (이것은 우리에게 좋습니다 🙂
답변
이것은 실제로 이스케이프 시퀀스 또는 제어 문자처럼 보이므로 메모장과 같은 다른 프로그램에서 보이지 않는 이유를 설명 할 수 있습니다.
이 출력을 얻으려면 어떤 키를 눌러야하는지 잘 모르겠지만 조금 놀아서 찾아보십시오. 표시된 다른 시퀀스의 이름을 지정할 수 있습니까? mysql과 nano의 동작은 입력 된 것처럼 보이는 이스케이프 시퀀스의 또 다른 해석 일 수 있습니다.
마지막으로, 이러한 주요 입력의 원인은 무엇입니까? 우연히 독점 소프트웨어를 사용하여 백라이트를 자동으로 제어하는 랩톱을 사용하십니까? 나는 API를 사용하는 대신 실제로 키 누르기를 에뮬레이트하는 이상한 사전 설치된 소프트웨어를 보았습니다. inputlog와 같은 것을 직접 사용하고 싶을 수도 있습니다.
답변
명령 행에서 -key : 07 옵션을 사용하여 caffiene을 시작합니다. Putty 문제를 중지하는 것으로 보입니다.
이것을 박쥐 파일에 넣으십시오.
caffeine.exe-키 : 07
답변
Cisco 포럼의 누군가는이 문제를 해결하기 위해 콘솔 속도 매개 변수를 변경할 것을 제안합니다.
http://www.dslreports.com/forum/r27090677-HELP-Cisco-1800-garbled-output-in-putty
1 에서 언급했듯이 퍼티의 모든 콘솔 속도 변형을 확실히 시도 했습니까?
참고 : 전송 속도가 기본 속도와 다르게 설정된 경우 CLI에 홀수 문자가 표시됩니다. 다른 Confreg 값에 대한 전송 속도를 설정하려면 table1 을 확인하십시오 .
답변
나는 또한 같은 문제가 있었고 caffeine.exe가 실제로 문제라는 것을 알았습니다. 처음에는 오래된 랩톱에서 2 년 이상 사용했기 때문에 caffeine.exe로 인해 발생할 수 없다고 생각했습니다. 대신 caffeine.exe -useshift를 변경하려고했지만 ^ C를 보냈습니다. 화면 보호기를 유지하지만 더 이상 퍼티 세션에서 이스케이프 시퀀스를 보내지 않는 또 다른 프로그램 인 Mouse Jiggler를 찾았습니다.