Bagaimana saya bisa melewati tombol fungsi untuk melompat di tty?

9

Saya mencoba menggunakan htopdi tty1. Namun, beberapa tombol fungsi tampaknya tidak berfungsi seperti biasa. F1dan F2tidak melakukan apa-apa, dan F3tampaknya memicu pengaturan (yang biasanya dipicu oleh F2). Selain itu, F4dan F5jangan bekerja. Juga, ketika saya mencoba dan menekan Escuntuk keluar dari layar ini, saya harus menekannya dua kali.

Dalam terminal normal ( terminator), tombol fungsi berfungsi dengan baik. Namun, saya harus menekan Escdua kali di sini juga, jadi mungkin itu ikan haring merah.

Bagaimana saya bisa menggunakan tombol fungsi ini di tty1?

EDIT

Di tty1, jika saya menekan Ctrl+ vlalu F1ke F5, dll. Saya mendapatkan output berikut:

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

Masuk terminator, saya mengerti

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

Tombol fungsi di atas ini setara (misalnya ^[[17~untuk F6).

EDIT 2

Menanggapi komentar Stéphane Chazelas .

  • $TERMadalah sama di tty1 seperti di terminal "normal" yang berfungsi. Itu xterm-256color.
  • Saya tidak menggunakan layar atau tmux.
  • Saya menggunakan htop1.0.3, meskipun edit pertama saya tampaknya menunjukkan bahwa itu adalah masalah di bagian hulu htop.

"Apakah infocmp -L1 | grep key_fcocok dengan yang dikirimkan kunci itu untuk Anda?

Saya tidak yakin apa yang Anda maksud dengan "cocok dengan apa yang dikirimkan kunci-kunci itu untuk Anda", tetapi saya menjalankan perintah ini di terminal normal dan tty1 saya, dan hasilnya sama, seperti di bawah ini.

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~,
Sparhawk
sumber
1
Pada tty1, pada prompt shell, tekan Ctrl+Vkemudian F1, dan lihat apa yang dimasukkan. Ulangi untuk F2, F3, F4dan F5, dan kemudian melakukan hal yang sama di terminator. Beri tahu kami apa yang Anda lihat.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Pertanyaan telah diedit.
Sparhawk
Apa nilainya $TERMdi sana? Apakah Anda menggunakan layar atau tmux? Apa versi htop? Apakah infocmp -L1 | grep key_fcocok dengan yang dikirimkan kunci-kunci itu untuk Anda?
Stéphane Chazelas
@ StéphaneChazelas Saya sudah mengedit pertanyaan.
Sparhawk
2
Seharusnya JANGKA = linux, konsol virtual linux hampir tidak ada hubungannya dengan xterm. getty harus menetapkan $ TERM untuk Anda, Anda tidak boleh menimpanya.
Stéphane Chazelas

Jawaban:

4

Dengan menetapkan:

export TERM=xterm-256color

Anda memberi tahu htop(dan setiap aplikasi terminal visual lainnya yang menggunakan termcap atau database terminfo) bahwa terminal Anda adalah 256 xterm warna dan bukan konsol virtual Linux.

htopakan meminta basis data terminfo untuk mengetahui urutan karakter yang dikirim F1, F2... tetapi akan mendapatkannya xterm.

xtermmengirimkan urutan yang berbeda dari konsol virtual Linux untuk kunci-kunci yang dapat Anda verifikasi dengan menanyakan database terminfo dengan tangan infocmpmisalnya:

$ 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,

Jadi htoptidak akan mengenali \E[[Asebagai F1, itu akan diharapkan \EOPuntuk itu.

Di sini, Anda tidak ingin memberikan nilai $TERMpada ~/.bashrc. $TERMharus diatur oleh terminal emulator ( xterm, terminator) sendiri, dan oleh gettyuntuk konsol virtual Linux (harus ada di linuxsana).

Jika Anda tidak puas dengan nilai yang dipilih emulator terminal tertentu $TERM, itulah konfigurasi emulator terminal yang harus Anda perbarui.

Stéphane Chazelas
sumber
Di mac, cukup buka preferensi Terminal dan ubah dari "ansi" ke xterm-256color.
Xeoncross
Terima kasih untuk penjelasan rinci. Dalam kasus saya, KiTTY (garpu Putty) diatur $TERMke xterm-256color, tetapi diatur untuk menggunakan ESC[n~tombol fungsi. Saya mengubah tombol fungsi untuk digunakan XTerm R6dalam pengaturan dan semuanya berfungsi sekarang.
Alan