ฉันมีอุปกรณ์บางอย่างเชื่อมต่อกับเซิร์ฟเวอร์คำศัพท์อนุกรมของ Cisco; ทำงานได้ดีมากเมื่อฉันtelnet
โดยตรงไปยังพอร์ตใน Cisco อย่างไรก็ตามฉันมีอุปกรณ์ที่ดื้อรั้นไม่กี่ตัวที่จะไม่ใช้Backspaceเนื่องจากถูกแมปใน telnet โดยค่าเริ่มต้น
ในกรณีที่มีความสำคัญฉัน telnet จากrxvt
ภายใต้ Debian squeeze (ใน X Window) TERM
ถูกตั้งค่าให้rxvt
แต่มันไม่สำคัญว่าผมใช้vt100
, vt101
หรือxterm
... การเปลี่ยนแปลงTERM
จะไม่มีผล ผมเริ่มลงที่ถนนของการเปลี่ยนแปลงTERM
ขึ้นอยู่กับสิ่งที่ฉันเห็นในเก่ามิตคำถามที่พบบ่อย FWIW stty erase ^h
และstty erase ^?
ไม่ทำงานเช่นกัน
ฉันสังเกตเห็นว่าBackspaceอุปกรณ์เหล่านี้ทำงานอย่างถูกต้องหากฉันใช้ซ็อกเก็ต TCP แบบดิบจากnetcat
... เช่นnc 192.168.12.117 2006
; อย่างไรก็ตามจากนั้นฉันพบปัญหาอื่น ๆ เกี่ยวกับรหัสผ่านที่ไม่ซ่อนหรือการสลับหน้าจอเทอร์มินัล
ฉันจะเลือกบังคับ telnet และ ssh เพื่อแม็พBackspaceกับCtrlHอุปกรณ์เหล่านี้ได้อย่างไร? นอกจากนี้ฉันควรใช้เกณฑ์ใดในการประเมินว่านี่เป็นข้อบกพร่องในอุปกรณ์หรือไม่
แก้ไข
ในกรณีที่มันเป็นเรื่องสำคัญนี้เป็นผลผลิตจากshowkey -a
คีย์ในคำถาม ... ^?
สอดคล้องกับการBackspaceและเป็น^H
CtrlHดูเหมือนว่าฉันควรจะเข้าใกล้เมื่อฉันดูThe Linux Keyboard และ Console Howtoแต่ฉันไม่สามารถถอดรหัสสิ่งที่ฉันสามารถทำได้เพื่อเปลี่ยนสิ่งนี้ ฉันได้ลองใช้คาถาต่างๆโดยloadkeys
ไม่มีผลกระทบ
[mpenning@hotcoffee docs]$ sudo showkey -a
Press any keys - Ctrl-D will terminate this program
^? 127 0177 0x7f
^H 8 0010 0x08
ฉันยังรวมเอาท์พุทที่เกี่ยวข้องมาdumpkeys
ด้วยเช่นกัน ... นี่คือการแมปปัจจุบันในระบบของฉัน (ซึ่งไม่สามารถใช้ได้กับอุปกรณ์บางอย่างที่สงสัย) ถ้าฉันสามารถหาวิธีที่Backspaceจะทำสิ่งเดียวกันCtrlHฉันจะมีทางออก
[mpenning@hotcoffee docs]$ sudo dumpkeys | grep -Ei "backspace|127"
keycode 8 = BackSpace ampersand braceleft
keycode 14 = BackSpace Delete
control keycode 14 = BackSpace
keycode 127 =
[mpenning@hotcoffee docs]$
ssty erase '^?'
ไหม หากอุปกรณ์ยืนยันใน aC-h
นั่นไม่ใช่การโทรของ telnet นั่นคือเทอร์มินัล (อีมูเลเตอร์)