我在我的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#中處理多播委託中的異常?
可能不是您想的方式,因爲跨程序委派責任使終端連接(和初始化)變得繁瑣。 –