如何在 tty 中將功能鍵傳遞給 htop?
我正在嘗試
htop
在 tty1 中使用。但是,某些功能鍵似乎無法正常工作。F1
什麼也不F2
做,F3
似乎觸發了設置(通常應該由 觸發F2
)。此外,F4
並F5
沒有工作。此外,當我嘗試按Esc
以退出這些螢幕時,我必須按兩次。在普通終端 (
terminator
) 中,功能鍵可以正常工作。但是,我也必須在這裡按Esc
兩次,所以也許這是一個紅鯡魚。如何在 tty1 中使用這些功能鍵?
編輯
在 tty1 中,如果我按
Ctrl
+v
然後F1
按F5
等等。我得到以下輸出:^[[[A ^[[[B ^[[[C ^[[[D ^[[[E
中
terminator
,我得到^[OP ^[OQ ^[OR ^[OS ^[[15~
上面的功能鍵是等效的(例如
^[[17~
forF6
)。編輯 2
回應 Stéphane Chazelas 的評論。
$TERM
在 tty1 中與在我的“正常”工作終端中相同。它是xterm-256color
。- 我沒有使用螢幕或 tmux。
- 我使用的是
htop
1.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~,
通過設置:
export TERM=xterm-256color
您是在告訴
htop
(以及使用 termcap 或 terminfo 數據庫的所有其他可視終端應用程序)您的終端是 256 色 xterm 而不是 Linux 虛擬控制台。
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[[A
為F1
,它會期望\EOP
它。在這裡,您不想將值分配給
$TERM
in~/.bashrc
。$TERM
應該由終端仿真器(xterm
,terminator
)自己設置,getty
對於 Linux 虛擬控制台(應該在linux
那裡)。如果您對特定終端仿真器選擇的值不滿意,那麼
$TERM
您應該更新該終端仿真器的配置。