tty에서 기능 키를 어떻게 중지하도록 전달할 수 있습니까?


9

htoptty1 에서 사용하려고합니다 . 그러나 일부 기능 키가 정상적으로 작동하지 않는 것 같습니다. F1그리고 F2아무것도하지 않으며, F3(일반적으로 트리거해야 트리거 설정으로 보인다 F2). 또한, F4F5작동하지 않습니다. 또한 Esc이 화면에서 빠져 나오 려고 할 때 두 번 눌러야합니다.

일반 터미널 ( terminator)에서는 기능 키가 제대로 작동합니다. 그러나 Esc여기도 두 번 눌러야 하므로 아마도 붉은 청어 일 것입니다.

tty1에서이 기능 키를 어떻게 사용합니까?

편집하다

tty1에서 Ctrl+를 v누른 다음 F1to F5등 을 누르면 다음과 같은 출력이 나타납니다.

^[[[A
^[[[B
^[[[C
^[[[D
^[[[E

에서에게 terminator, 내가 얻을

^[OP
^[OQ
^[OR
^[OS
^[[15~

이 상기 기능 키 (예를 들면 동등 ^[[17~F6).

편집 2

Stéphane Chazelas의 의견에 답변 .

  • $TERMtty1의 "정상"작동 터미널과 동일합니다. 입니다 xterm-256color.
  • screen 또는 tmux를 사용하지 않습니다.
  • htop1.0.3을 사용 하고 있지만 첫 번째 편집은의 업스트림 문제인 것으로 보입니다 htop.

" infocmp -L1 | grep key_f그 열쇠가 당신에게 보내는 것과 일치 합니까 ?

나는 "그 키가 당신에게 보내는 것과 일치한다"는 것이 무엇을 의미하는지 잘 모르겠지만, 나는 정상적인 터미널과 tty1 에서이 명령을 실행했으며 출력은 아래와 같이 동일했습니다.

key_f1=\EOP,
key_f10=\E[21~,
key_f11=\E[23~,
key_f12=\E[24~,
key_f13=\E[1;2P,
key_f14=\E[1;2Q,
key_f15=\E[1;2R,
key_f16=\E[1;2S,
key_f17=\E[15;2~,
key_f18=\E[17;2~,
key_f19=\E[18;2~,
key_f2=\EOQ,
key_f20=\E[19;2~,
key_f21=\E[20;2~,
key_f22=\E[21;2~,
key_f23=\E[23;2~,
key_f24=\E[24;2~,
key_f25=\E[1;5P,
key_f26=\E[1;5Q,
key_f27=\E[1;5R,
key_f28=\E[1;5S,
key_f29=\E[15;5~,
key_f3=\EOR,
key_f30=\E[17;5~,
key_f31=\E[18;5~,
key_f32=\E[19;5~,
key_f33=\E[20;5~,
key_f34=\E[21;5~,
key_f35=\E[23;5~,
key_f36=\E[24;5~,
key_f37=\E[1;6P,
key_f38=\E[1;6Q,
key_f39=\E[1;6R,
key_f4=\EOS,
key_f40=\E[1;6S,
key_f41=\E[15;6~,
key_f42=\E[17;6~,
key_f43=\E[18;6~,
key_f44=\E[19;6~,
key_f45=\E[20;6~,
key_f46=\E[21;6~,
key_f47=\E[23;6~,
key_f48=\E[24;6~,
key_f49=\E[1;3P,
key_f5=\E[15~,
key_f50=\E[1;3Q,
key_f51=\E[1;3R,
key_f52=\E[1;3S,
key_f53=\E[15;3~,
key_f54=\E[17;3~,
key_f55=\E[18;3~,
key_f56=\E[19;3~,
key_f57=\E[20;3~,
key_f58=\E[21;3~,
key_f59=\E[23;3~,
key_f6=\E[17~,
key_f60=\E[24;3~,
key_f61=\E[1;4P,
key_f62=\E[1;4Q,
key_f63=\E[1;4R,
key_f7=\E[18~,
key_f8=\E[19~,
key_f9=\E[20~,

1
tty1의 쉘 프롬프트에서을 누른 Ctrl+V다음 F1삽입되는 내용을 확인하십시오. 반복 F2, F3, F4F5다음 종료에 동일한 작업을 수행. 당신이 무엇을 볼 수 있는지 알려주십시오.
Gilles 'SO- 악마 그만해'

@Gilles 질문이 편집되었습니다.
Sparhawk

$TERM거기 의 가치는 무엇입니까 ? screen 또는 tmux를 사용하고 있습니까? 어떤 버전의 htop? infocmp -L1 | grep key_f그 열쇠가 당신에게 보내는 것과 일치 합니까 ?
Stéphane Chazelas

@ StéphaneChazelas 질문을 편집했습니다.
Sparhawk

2
TERM = linux 여야하며 Linux 가상 콘솔은 xterm과 거의 관련이 없습니다. getty는 $ TERM을 설정해야하며 덮어 쓰지 않아야합니다.
Stéphane Chazelas

답변:


4

설정하여 :

export TERM=xterm-256color

htop터미널이 Linux 가상 콘솔이 아닌 256 색 xterm이라는 것을 (및 termcap 또는 terminfo 데이터베이스를 사용하는 다른 모든 시각적 터미널 응용 프로그램) 말하고 있습니다.

htop문자의 순서에 따라 전송을 알고 terminfo 데이터베이스를 조회합니다 F1, F2하지만에 대한 사람들을 얻을 것이다 xterm.

xterm다음과 같이 terminfo 데이터베이스를 직접 쿼리하여 확인할 수있는 키에 대해 Linux 가상 콘솔과 다른 시퀀스를 보냅니다 infocmp.

$ infocmp -L1 xterm-256color | grep 'key_f[1-5]='
        key_f1=\EOP,
        key_f2=\EOQ,
        key_f3=\EOR,
        key_f4=\EOS,
        key_f5=\E[15~,
$ infocmp -L1 linux | grep 'key_f[1-5]='
        key_f1=\E[[A,
        key_f2=\E[[B,
        key_f3=\E[[C,
        key_f4=\E[[D,
        key_f5=\E[[E,

그래서 htop인식하지 못합니다 \E[[AA와 F1, 그것을 기대 \EOP그것에 대해.

여기에서 값을 할당하지 않으 $TERM에서 ~/.bashrc. $TERM터미널 에뮬레이터 ( xterm, terminator) 자체와 gettyLinux 가상 콘솔 (있을 linux경우)에 의해 설정 되어야합니다 .

특정 터미널 에뮬레이터가 선택하는 값이 마음에 들지 않으면 $TERM업데이트해야 할 터미널 에뮬레이터의 구성입니다.


Mac에서는 터미널 환경 설정을 열고 "ansi"에서로 변경하십시오 xterm-256color.
Xeoncross

자세한 설명을 주셔서 감사합니다. 내 경우에는, 키티 (퍼티의 포크)를 설정했다 $TERM으로 xterm-256color만 사용으로 설정 한 ESC[n~기능 키. XTerm R6설정에서 사용하도록 기능 키를 변경 했으며 모두 작동합니다.
Alan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.