我发现shreyansp的解决方案是最令人满意(但不是很令人满意)的解决方案:)
这是我尝试改进的解决方案(当然是YMMV)。希望这对那些寻求解决方案的人有用:)
我的解决方案的行为如下:
- 咖啡因向Windows发送适当的虚拟密钥代码,该代码:
- 防止Windows进入睡眠或空闲状态
- 否则,无论是单独还是组合使用,都不会在Windows上产生任何副作用(没有Ctrl,Shift,Alt,Alt-Gr,Win,F1-F5,F10等)。
- 要么不发送到Putty要么被Putty忽略
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之间进行修复(请参见下文)。
副作用(在我的配置中)是,腻子的每次击键都从咖啡因转发到远程主机:
- 它触发了
我通常想要的“在按键上重置滚动条”(在腻子/窗口页面上设置),但是仅当我(人类)按下该键但不定期地通过咖啡因来按下时):
- readline / bash的翻译版本(从
'"\e[28~"'
到'""'
(空白键?)导致远程会话交互挂起几秒钟
为了轻松测试上述内容,请退出咖啡因,并以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
- bash会基于以下内容进行翻译/映射
~/.bashrc
(基于内置的bind命令)
- bash或readline(不确定是哪一个)将翻译后的密钥发送给nano(我的文本编辑器)
- 通过添加
screen
程序,该管道可以变得更长(其中包括$TERM=screen
用于步骤5 的程序,并在步骤6至10中再次循环返回。)
注意:进入第4步后,要精确控制“翻译” /“映射”的不同层变得非常困难。我建议您尽量避免这样做。
背景:在使用pfsense 2.3.3-RELEASE-p1(基于FreeBSD 10.3-RELEASE)之前,
我使用caffeine.exe -key:07
了多年。
然后,caffeine.exe -key:07
在另一侧以^[[28~
...的形式接收,似乎被映射到Ctrl+^
Nano中的(Set Mark)。
这很烦人(想像有人在记事本中移动文本插入符时按住Shift键)。
以前,我做了很多定制的腻子设置,~/.tcshrc
,~/.inputrc
,~/.bashrc
,~/.nanorc
,~/.screenrc
得到什么,我认为基本的功能(Backspace
,Delete
,Home
,End
,PgUp
,PgDown
,Ctrl+Left
,Ctrl+Right
,小键盘0-9
,小键盘./*-+
)的bash /纳米/屏幕之间持续的工作。
一旦发现了这个caffeine.exe -key:07
“ bug”,我就不想再追溯一遍了:)
经过测试:
Windows 8.1 64位企业版(6.3.9600)/ 腻子 0.66 / pfsense 2.3.3-RELEASE-p1(基于FreeBSD 10.3-RELEASE)/ bash 4.4.12版本/ nano 2.7.3 / 屏幕 4.04。 00
参考文献: