Як я можу передати функціональні клавіші на htop в tty?


9

Я намагаюся використовувати htopв tty1. Однак деякі функціональні клавіші не працюють нормально. F1і F2нічого не робити, і, F3здається, запускає налаштування (яке, як правило, повинно спрацьовувати F2). Крім того, F4і F5не працюйте. Крім того, коли я намагаюся натиснути Escцей екран, я мушу двічі натиснути його.

У звичайному терміналі ( terminator) функціональні клавіші справно працюють. Однак і мені тут доводиться натискати Escдвічі, тож, можливо, це червона оселедець.

Як я можу використовувати ці функціональні клавіші в tty1?

EDIT

У tty1, якщо натиснути Ctrl+, vпотім F1до F5і т. Д., Я отримую наступний висновок:

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

В terminator, я отримую

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

Функціональні клавіші вище цього еквівалентні (наприклад, ^[[17~для F6).

EDIT 2

У відповідь на коментар Стефана Шазеласа .

  • $TERMв tty1 те саме, що і в моєму «нормальному», робочому терміналі. Це так xterm-256color.
  • Я не використовую екран або 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, F4і F5, а потім зробити те ж саме в термінатора. Розкажіть нам, що ви бачите.
Жил "ТАК - перестань бути злим"

@Gilles Питання відредаговано.
Sparhawk

Яке значення $TERMтам? Використовуєте екран або tmux? Яка версія htop? Чи infocmp -L1 | grep key_fвідповідає тому, що ці ключі надсилають вам?
Стефан Шазелас

@ StéphaneChazelas Я редагував питання.
Спархак

2
Це повинно бути TERM = linux, віртуальна консоль linux майже не має нічого спільного з xterm. getty має встановити для вас $ TERM, не слід його перезаписувати.
Стефан Шазелас

Відповіді:


4

Встановивши:

export TERM=xterm-256color

ви говорите htop(і всі інші додатки візуального терміналу, що використовують базу даних termcap або terminfo), що ваш термінал - це кольоровий xterm 256, а не віртуальна консоль Linux.

htopзапитає базу даних terminfo, щоб дізнатися, на яку послідовність символів надсилається F1, F2... але отримає їх для xterm.

xtermнадсилає інші послідовності, ніж віртуальна консоль Linux для тих клавіш, які ви можете перевірити, запитуючи, наприклад, базу даних terminfo вручну 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в ~/.bashrc. $TERMповинні встановлюватися самими емуляторами терміналів ( xterm, terminator) та gettyвіртуальними консолями Linux (повинні бути linuxтам).

Якщо ви не задоволені значенням, яке вибирає певний емулятор терміналу $TERM, це налаштування цього емулятора терміналу, який слід оновити.


На mac просто відкрийте налаштування терміналу та перейдіть з "ansi" на " xterm-256color.
Ксеонкросс

Дякую за детальне пояснення. У моєму випадку KiTTY (вилка PuTTY) був налаштований $TERMна xterm-256color, але був створений для використання ESC[n~функціональних клавіш. Я змінив функціональні клавіші для використання XTerm R6в налаштуваннях і все це працює зараз.
Алан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.