我在我的tcl终端程序中使用stty raw -echo
。 我想要做的只是一些关键的新闻事件,如标签一些行动。因为我想委托给rlwrap或其他默认处理程序的按键事件的其余部分,如←将光标移动到左侧,并在光标插入文本,或按Ctrl + Ç到终止程序。有没有办法做到这一点?如何使用tcl将原始模式终端中的按键处理委托给rlwrap
0
A
回答
0
stty中有一个处理信号的选项,即isig
选项。 另外,-opost
将“\ n”处理为“\ r \ n”。
stty raw -echo isig
另一种选择是使用显式的,而不是-icanon min 1 time 0
选项raw
。
0
唉,终端处理系统不能以简单的方式工作。 但这并非不可能。我能想到的最简单的机制(的确是唯一一个不会让我对此感到畏缩的机制)是使用Expect扩展的interact
命令的一些更高级的功能。
特别是,interact
有效地连接了由Expect编辑的程序spawn
,但您也可以添加模式以允许扩展的行为。
package require Expect
spawn /your/program yourarguments...
interact {
"\t" {
# Do something special here as we've got a Tab
send "special special special\r"
}
}
您可以在衍生过程中使用rlwrap:
spawn rlwrap /your/program yourarguments...
+0
谢谢。但是我没有安装Expect,我想分发这个程序。我猜想没有多少人安装了Expect。当您收到Ctrl + Z时,tcl中有没有办法将程序置于后台? – Herbert
0
GitHub的version的最新rlwrap
has a bindable readline commandrlwrap-direct-keypress
可以绑定(例如,在你的.inputrc
)到任意键要直接传递到您的程序,绕过rlwrap
当编辑输入行时,所有其他按键仍然照常工作(例如移动光标)readline
相关问题
- 1. 如何构建HTTPBuilder中使用的委托/响应处理程序模式?
- 2. 如何在swift中将最终的url返回给委托者?
- 3. 如何处理未捕获的异常,然后将处理委托给系统?
- 4. 如何将委托处理程序添加到我的模块?
- 5. MFMailComposeViewController的委托不处理CANCEL按钮
- 6. Akka流和委托处理给演员
- 7. 原始终端模式 - 如何接受输入?
- 8. 使用JavaScript委托原型
- 9. 使用委托时超时处理NSURLRequest
- 10. 如何处理委托参数NSubstitute
- 11. 为什么.net委托赋值运算符不会将引用分配给原始委托?
- 12. 委托模式ios
- 13. 回调处理委托时处理?
- 14. 如何将参数传递给委托?
- 15. 如何使用抽象方法来处理委托调用?
- 16. 使用委托给ABPeoplePickerNavigationController
- 17. iOS协议 - 委托始终为零
- 18. ConcurrentDictionary.GetOrAdd始终执行委托方法
- 19. 将委托分配给嵌套范围中的NSOpenPanel原因EXC_BAD_ACCESS
- 20. 多播委托中的异常处理
- 21. 将终端设置为原始模式:只有在按下一个键时才显示字符
- 22. 使用委托设计模式
- 23. 使用清洁委托模式
- 24. 使用委托模式时避免EXC_BAD_ACCESS
- 25. 将工作委托给多个线程的模式
- 26. 如何使用ExtJS的委托模式ExtJS的工具栏
- 27. 将“if”委托给文档
- 28. 将活动委托给OSM
- 29. 设置委托给自己的委托?
- 30. 如何在C#中处理多播委托中的异常?
可能不是您想的方式,因为跨程序委派责任使终端连接(和初始化)变得繁琐。 –