ฉันพบวิธีแก้ปัญหาของshreyanspว่าเป็นวิธีที่น่าพอใจที่สุด (แต่ไม่มาก) :)
นี่คือความพยายามของฉันในการปรับปรุง (แน่นอน YMMV) หวังว่านี่อาจเป็นประโยชน์สำหรับผู้ที่กำลังมองหาวิธีแก้ปัญหา :)
โซลูชันของฉันมีพฤติกรรมดังนี้:
- caffeine ส่งรหัสเสมือนที่เหมาะสมให้กับ Windows ซึ่ง:
- ป้องกันไม่ให้ Windows เข้าสู่โหมดสลีปหรือไม่ทำงาน
- ไม่สร้างผลข้างเคียงใด ๆ กับ Windows ไม่อย่างเดียวหรือใช้ร่วมกัน (ไม่มี Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 เป็นต้น)
- อย่างใดอย่างหนึ่งไม่ได้ถูกส่งไปยังสีโป๊วหรือถูกปฏิเสธโดยสีโป๊ว
TL; DR: โซลูชันของฉันถูกนำไปใช้ระหว่างขั้นตอนที่ 2 และ 3 (ดูด้านล่าง) ด้วย-key:0E
คาเฟอีนพารามม์:
ออกจากคาเฟอีนและเปิดใช้อีกครั้งด้วย:
caffeine.exe 5 -key:0E
(สำหรับการทดสอบง่าย)
caffeine.exe 50 -key:0E
(สำหรับการทดสอบหน้าจอบังคับ) 1 นาที
- เรียกใช้งาน
read
โปรแกรมบนโฮสต์ระยะไกลและดูว่าจะไม่รับการกดแป้นทุก 5 หรือ 50 วินาที
- ออก
read
ด้วยCtrl+C
Shreyanspเสนอวิธีแก้ปัญหาที่จะใช้การแก้ไขระหว่างขั้นตอนที่ 5 และ 10 (ดูด้านล่าง)
ผลข้างเคียงของสิ่งนั้น (ในการกำหนดค่าของฉัน) คือการกดแป้นแต่ละครั้งที่สีโป๊วส่งต่อจากคาเฟอีนไปยังโฮสต์ระยะไกล:
- มันเรียก 'รีเซ็ตแถบเลื่อนบนปุ่มกด' (การตั้งค่าในหน้า Putty / Window)
ซึ่งปกติฉันต้องการ แต่เมื่อฉัน (มนุษย์) กำลังกดปุ่ม แต่ไม่ได้คาเฟอีนเป็นประจำ :)
- รุ่นแปล readline / bash ของมัน (จาก
'"\e[28~"'
ถึง'""'
(ว่างเปล่าคีย์) ทำให้การโต้ตอบเซสชันระยะไกลหยุดทำงานเป็นเวลาหลายวินาที
ในการทดสอบข้างต้นได้อย่างง่ายดายออกจาก Caffeine แล้วเปิดใหม่ด้วยช่วงเวลา 5 วินาทีและรหัสคีย์เสมือน 07:
caffeine.exe 5 -key:07
- เรียกใช้งาน
read
โปรแกรมบนโฮสต์ระยะไกลและดูว่าการกดแป้นได้รับทุกๆ 5 หรือ 50 วินาที
- ออก
read
ด้วยCtrl+C
การกดแป้น 'ไปป์ไลน์' ตามที่ฉันเข้าใจ:
- คาเฟอีนส่งรหัสเสมือนคีย์ไปยัง Windows
- Windows ส่งรหัสเสมือนคีย์นั้นให้แก่ Putty
- Putty ทำ 'แปล' / 'การแมป' บางอย่างตามการตั้งค่าเซสชันใน:
- Putty ส่งรหัสคีย์ 'แปล' / 'แมป' ไปยังโฮสต์ระยะไกล
- ในพื้นที่ห่างไกล, โปรแกรม 'มินัล' (เช่น:
$TERM=xterm
, vt100
, vt102
, vt220
ฯลฯ ) แปลจาก 'สายโปรโตคอล' ลงรหัสกุญแจ
- ไลบรารี readline ทำการแปล / การแมปบางอย่างตาม
~/.inputrc
- readline ส่งรหัสคีย์เพื่อทุบตี
- bash ทำการแปล / การแมปบางอย่างตาม
~/.bashrc
(ขึ้นอยู่กับคำสั่ง builtin bind)
- bash หรือ readline (ไม่แน่ใจว่าอันไหน) ส่งรหัสคีย์ที่แปลแล้วไปที่ nano (โปรแกรมแก้ไขข้อความของฉัน)
- ขั้นตอนนี้สามารถทำงานได้นานขึ้นโดยการเพิ่ม
screen
โปรแกรม (ซึ่งรวมถึง$TERM=screen
ขั้นตอนที่ 5 และวนซ้ำอีกครั้งในขั้นตอนที่ 6 ถึง 10)
หมายเหตุ:เมื่อถึงขั้นตอนที่ 4 จะเป็นการยากมากที่จะควบคุมเลเยอร์ 'translation' / 'mappings' ที่แตกต่างกันอย่างแม่นยำ ฉันขอแนะนำให้หลีกเลี่ยงถ้าคุณทำได้
พื้นหลัง:
ฉันใช้caffeine.exe -key:07
เวลาหลายปีก่อนที่จะจัดการกับ pfsense 2.3.3-RELEASE-p1 (ขึ้นอยู่กับ FreeBSD 10.3-RELEASE)
จากนั้นcaffeine.exe -key:07
ได้รับอีกด้านหนึ่งว่า^[[28~
... ซึ่งดูเหมือนว่าจะถูกจับคู่กับCtrl+^
(Set Mark) ในนาโน
นี่เป็นเรื่องที่ค่อนข้างน่ารำคาญ (ลองจินตนาการว่ามีคนกดและเก็บ Shift Key ไว้ในขณะที่คุณเลื่อนตัวอักษรไปรอบ ๆ ใน Notepad)
ก่อนหน้านี้ผมไม่ได้ปรับแต่งจำนวนมากในการตั้งค่าสีโป๊ว, ~/.tcshrc
, ~/.inputrc
, ~/.bashrc
, ~/.nanorc
, ~/.screenrc
ที่จะได้รับสิ่งที่ฉันพิจารณาการทำงานขั้นพื้นฐาน ( Backspace
, Delete
, Home
, End
, PgUp
, PgDown
, Ctrl+Left
, Ctrl+Right
, Numpad 0-9
, Numpad ./*-+
) ทำงานอย่างต่อเนื่องระหว่างทุบตี nano / / จอ
เมื่อฉันค้นพบcaffeine.exe -key:07
'ข้อผิดพลาด' นี้ฉันไม่ต้องการหวนกลับมาอีกครั้ง :)
ทดสอบกับ:
Windows 8.1 Enterprise 64- บิต (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (ขึ้นอยู่กับFreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04 00
อ้างอิง: