ssh
를 사용하여 Linux 상자에 액세스하고 있습니다 putty
.
달리고 있지 않을 때는 키 조합이 제대로 작동합니다 screen
. 그러나 세션에서는 Ctrl 키 조합이 작동하지 않습니다 screen
. 사실 a- Ctrl는 any key조합이 없는 동일한 키 등록과 같습니다 Ctrl.
Ctrl내 터미널로 전송된 문자를 찾기 위해 조합을 입력한 V다음 입력하여 Ctrl이를 알 수 있습니다 .key
예를 들어 Ctrl- ◄(왼쪽 화살표)를 입력하면 ^[[D
( screen
screen256 색상 용어)가 표시됩니다. ◄나에게 같은 결과를 주었다.
이상하게도 Alt이 key조합은 훌륭하게 작동합니다.
특히 "앞으로 단어" 및 "뒤로 단어" 키 바인딩을 screen
.
다양한 터미널을 사용할 수 있도록 수정해 보았습니다 .inputrc
. 그래서 내 .inputrc
모습은 다음과 같습니다.
$if term=xterm
'xxx' : forward-word # xxx key gotten from Ctrl-V
'xxx' : backward-word
$endif
$if term=screen-256color
...
...
TERM
bash
또한 프로필 설정 TERM
과 키보드 터미널 매핑을 설정하여 .screenrc
다양한 터미널을 사용해 보았습니다 Putty
. 명백한 linux
및 xterm
는 작동하지 않습니다. 그러나 분명한 이유로 나는 설정의 모든 순열을 시도하지 않았습니다.
추가 정보:
수정했는데 방향키 조합이 유일하게 작동하지 않더군요. 배포 버전은 RHEL 6입니다.
.screenrc:
term xterm # tried other terms as well
shell -$SHELL # login shell to reload configs
caption string "%w"
hardstatus alwayslastline "%{b kw}%H %{r}%1` %{w}| %{g}%c %{w}| %{y}%d.%m.%Y %{w}| %{g}%l %{w}| %{-b kw}%u %-Lw%{= rW}%50> %n%f %t %{-}%+Lw%<"
vbell off
defscrollback 5000
Putty의 기본 키보드 모드 ESC [n~
.
퍼티 매뉴얼에서: "기본 모드에서 ESC [n~으로 표시된 기능 키는 ESC [11~, ESC [12~, etc.")와 같은 시퀀스를 생성합니다."). 이는 디지털 터미널의 일반적인 동작과 일치합니다. "
흥미로운 점은 실제로 전송되는 내용입니다 Putty
(첫 번째 답변에 따라).https://superuser.com/questions/342848/cant-get-keyboard-to-work-Corrightly-in-putty), 예
^[0D : left-arrow
^[[D : Ctrl-{left-arrow}
서로 다르기 때문에 putty
문제가 되지 않는 것 같은데요?
FWIW, Putty에서 응용 프로그램 커서 키 모드 설정을 변경해 보았지만 소용이 없었습니다. 나도 그것을 사용해 보았고 tmux
같은 문제에 직면했습니다.
답변1
기본 구성에서 PuTTY는 커서 키를 다음으로 보냅니다.정상예를 들어 ^[OA
화면에서 커서 키를 다음으로 설정할 때 모드입니다.애플리케이션모드(예: ^[[A
.
이는 키보드를 열기 위해 화면에 이스케이프 시퀀스를 전송함으로써 수행 됩니다(termcap ks
, terminfo 에서). smkx
숫자 키패드와 커서 키가 둘 다 기능에 존재하므로 해당 키에 대한 응용 프로그램 모드를 열 때 발생합니다 ks/smkx
. 터미널이 있는 경우 터미널을 초기화할 때 이 화면 기능을 사용하십시오. screen은 또한 termcap 함수( CS
설정된 경우) 에 문자열을 전송하여 후속 조치를 취하는데 , 이는 원래 디자인이 키보드만 초기화된 터미널 설명을 사용하는 것이었음을 암시합니다 ks/smkx
.
키 바인딩은 커서 키에서 보낸 문자열을 예상하기 때문에 이러한 차이점을 알 수 있습니다.정상모델. 커서 키를 변경하는 부분을 생략하도록 화면의 터미널 설명을 수정하는 경우 이러한 바인딩을 계속 사용할 수 있습니다.
예를 들어 다음과 같이 할 수 있습니다.
infocmp screen >foo
vi foo
할당을 변경합니다.
smkx=\E[?1h\E=,
도착하다
smkx=\E=,
그 다음에
tic foo
수정된 설명을 컴파일합니다. (루트가 아닌) 사용자로 이 작업을 수행하면 tic은 컴파일된 설명을 ~/.terminfo
디렉터리에 넣습니다. 이 접근 방식에는 단점이 있으며 tput
키 바인딩 정보를 얻는 데 가장 적합합니다. 하지만 간단합니다.
추가 자료:
- 개인용 terminfo 데이터베이스를 설정하는 방법은 무엇입니까?(ncurses FAQ)
- 특수 키(xterm 매뉴얼)
답변2
나는 이것을 찾았다또 다른 문제현상금을 게시 한 후 ...
* 퍼티에서는 Ctrl과 화살표 키가 작동하지 않습니다! 나는 무엇을 해야 합니까?
putty는 ctrl에서 커서 키 모드의 의미를 반전시킵니다. 이는 tmux가 올바르게 감지하기가 약간 어렵습니다. Ctrl 키를 올바르게 사용하려면 kUP5(Ctrl-Up 등)가 조정된 버전이 되도록 terminfo 설정을 변경하고, tmux가 모드를 변경하지 않도록 smkx/rmkx를 비활성화합니다. 예를 들어, .tmux.conf에서 다음 줄을 사용합니다(TERM을 xterm으로 설정했다고 가정).
-g 터미널 재정의 설정 "xterm*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"
이는 tmux 1.2 이상에서만 작동합니다.
https://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ