ฉันจะส่งคีย์ฟังก์ชั่นไปที่ htop ได้ด้วยวิธีใด?


9

ฉันพยายามที่จะใช้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~สำหรับF6)

แก้ไข 2

ในการตอบสนองStéphane Chazelas ของความคิดเห็น

  • $TERMเหมือนกันใน tty1 เหมือนกับใน "terminal" ปกติของฉัน 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 'หยุดชั่วร้าย'

@Gilles คำถามถูกแก้ไขแล้ว
Sparhawk

คุณค่าของการ$TERMมีในนั้นคืออะไร? คุณใช้หน้าจอหรือ tmux หรือไม่? ฮ็อพรุ่นใด ไม่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(และแอปพลิเคชันเทอร์มินัลเสมือนอื่นทุกแห่งที่ใช้ฐานข้อมูล termcap หรือ terminfo) ที่เทอร์มินัลของคุณคือ 256 xterm สีไม่ใช่คอนโซลเสมือน 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$TERMxtermterminatorgettylinux

หากคุณไม่พอใจกับค่าที่เทอร์มินัลอีมูเลเตอร์เลือกใช้$TERMนั่นคือการกำหนดค่าของเทอร์มินัลอีมูเลเตอร์นั้นที่คุณควรอัปเดต


บน Mac, การตั้งค่าของเทอร์มิเพียงแค่เปิดและเปลี่ยนจาก "ANSI" xterm-256colorเพื่อ
Xeoncross

ขอบคุณสำหรับคำอธิบายโดยละเอียด ในกรณีของฉัน KiTTY (ทางแยกของ PuTTY) ถูกตั้งค่า$TERMเป็นxterm-256colorแต่ถูกตั้งค่าให้ใช้ESC[n~ปุ่มฟังก์ชั่น ฉันเปลี่ยนปุ่มฟังก์ชั่นเพื่อใช้XTerm R6ในการตั้งค่าและทุกอย่างทำงานได้ในขณะนี้
อลัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.