Tôi thấy giải pháp của shreyansp là giải pháp thỏa đáng nhất (nhưng không hoàn toàn) :)
Đây là nỗ lực của tôi trong việc cải thiện điều đó (tất nhiên là YMMV). Hy vọng điều này có thể được sử dụng cho những người tìm kiếm một giải pháp :)
Giải pháp của tôi hành xử như sau:
- caffeine gửi tới Windows một Mã khóa ảo phù hợp:
- ngăn Windows đi ngủ hoặc không hoạt động
- không tạo ra bất kỳ tác dụng phụ nào trên Windows, không đơn độc hay kết hợp (không Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10, v.v.)
- hoặc không được gửi tới Putty hoặc bị Putty bỏ qua
TL; DR: Giải pháp của tôi được áp dụng giữa các bước 2 và 3 (xem bên dưới) với thông số -key:0E
caffeine:
Thoát Caffeine và khởi chạy lại với:
caffeine.exe 5 -key:0E
(để kiểm tra dễ dàng)
caffeine.exe 50 -key:0E
(đối với trình bảo vệ màn hình bắt buộc được đặt ở 1 phút)
- Khởi chạy
read
chương trình trên máy chủ từ xa và xem cách không nhận được tổ hợp phím nào sau mỗi 5 hoặc 50 giây.
- Thoát
read
vớiCtrl+C
Shreyansp đã đề xuất một giải pháp trong đó cách khắc phục sẽ được áp dụng giữa các bước 5 và 10 (xem bên dưới).
Tác dụng phụ của điều đó (trên cấu hình của tôi) là, với mỗi lần nhấn phím mà putty được chuyển từ caffeine đến máy chủ từ xa:
- nó đã kích hoạt 'Đặt lại thanh cuộn trên phím nhấn' (cài đặt trên trang Putty / Window)
mà tôi thường muốn, nhưng chỉ khi tôi (con người) nhấn phím nhưng không thường xuyên bằng caffeine :)
- phiên bản dịch readline / bash của nó (từ
'"\e[28~"'
sang '""'
(phím trống?) khiến tương tác phiên từ xa bị treo trong vài giây
Để dễ dàng kiểm tra những điều trên, hãy thoát Caffeine và khởi chạy lại với khoảng thời gian 5 giây và Mã khóa ảo 07:
caffeine.exe 5 -key:07
- Khởi chạy
read
chương trình trên máy chủ từ xa và xem cách nhận được tổ hợp phím sau mỗi 5 hoặc 50 giây.
- Thoát
read
vớiCtrl+C
Tổ hợp phím 'đường ống', theo tôi hiểu:
- Caffeine gửi Mã khóa ảo cho Windows
- Windows sẽ gửi Mã khóa ảo đó cho Putty
- Putty thực hiện một số 'bản dịch' / 'ánh xạ' dựa trên một số cài đặt phiên trong:
- Thiết bị đầu cuối/*
- Cửa sổ / *
- Putty gửi mã khóa 'được dịch' / 'ánh xạ' đến máy chủ từ xa
- Trên máy chủ từ xa, chương trình 'terminal' (ví dụ:
$TERM=xterm
, vt100
, vt102
, vt220
, vv) dịch từ 'dòng giao thức' vào mã chủ chốt.
- thư viện readline thực hiện một số bản dịch / ánh xạ dựa trên
~/.inputrc
- readline gửi Mã khóa để bash
- bash thực hiện một số bản dịch / ánh xạ dựa trên
~/.bashrc
(dựa trên lệnh liên kết dựng sẵn)
- bash hoặc readline (không chắc chắn cái nào) gửi Mã khóa đã dịch sang nano (trình soạn thảo văn bản của tôi)
- Đường ống này có thể dài hơn nữa bằng cách thêm
screen
chương trình (bao gồm một $TERM=screen
bước 5. và lặp lại ở bước 6. đến 10.)
Lưu ý: Một khi đã đến bước 4., việc kiểm soát chính xác các lớp khác nhau của 'bản dịch' / 'ánh xạ' trở nên rất khó khăn. Tôi khuyên bạn nên tránh điều đó nếu bạn có thể.
Bối cảnh:
Tôi đã sử dụng caffeine.exe -key:07
trong nhiều năm trước khi phải đối phó với pfsense 2.3.3-RELEASE-p1 (dựa trên FreeBSD 10.3-RELEASE).
Sau đó, caffeine.exe -key:07
đã được nhận ở phía bên kia là ^[[28~
... có vẻ như được ánh xạ tới Ctrl+^
(Set Mark) trong Nano.
Điều này khá khó chịu (hãy tưởng tượng ai đó nhấn và giữ phím Shift trong khi bạn di chuyển dấu mũ văn bản trong Notepad).
Trước đây, tôi đã làm rất nhiều các tùy chỉnh trong Putty Settings, ~/.tcshrc
, ~/.inputrc
, ~/.bashrc
, ~/.nanorc
, ~/.screenrc
để có được những gì tôi xem xét chức năng cơ bản ( Backspace
, Delete
, Home
, End
, PgUp
, PgDown
, Ctrl+Left
, Ctrl+Right
, Numpad 0-9
, Numpad ./*-+
) ngày làm việc liên tục giữa bash / nano / màn hình.
Khi tôi phát hiện ra caffeine.exe -key:07
'lỗi' này, tôi không muốn tìm lại nó nữa :)
Đã thử nghiệm trên:
Windows 8.1 64-bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (dựa trên FreeBSD 10.3-RELEASE) / bash 4.4.12-phát hành / nano 2.7.3 / màn hình 4.04. 00
Tài liệu tham khảo: