我有一個程序,我只需要讀取linux終端(xterm和控制檯)中的特殊鍵。目前我正在使用curses
來做到這一點(儘管我絕對不需要詛咒其他任何東西),並且除了一個麻煩之外,它完美地工作:我不希望詛咒清除屏幕並更改CRLF模式。在沒有清除屏幕的情況下閱讀linux終端中的特殊鍵
也就是說,該代碼將做到這一點:
stdscr = curses.initscr()
curses.cbreak()
curses.noecho()
stdscr.keypad(1)
while True:
c = stdscr.getch()
if c == curses.KEY_UP:
scroll_up()
elif c == curses.KEY_DOWN:
scroll_down()
但複雜的是,它會清除屏幕和終端上以前的內容沒有見過;所有來自後臺進程的輸出都會將換行符僅轉換爲換行符。
我知道我可以把終端變成未煮過的方式自己,延遲後ESC
字符等等,但我想這個程序有特殊鍵,如F1,首頁和↑工作始終,對所有終端,並且因此這將是PITA
因此有任何方法要麼
- 避免結算屏幕,詛咒和改變換行模式(I讀該函數0 ncurses的的可以使用它,但它不是由Python的實現),或
- 任何辦法恢復原來的畫面就被清除後手動還原CRLF行爲,這樣,或
- 在Linux中一貫閱讀特殊鍵的任何其他簡單方法?
也許看看'的https:// bitbucket.org/pypy/pyrepl'。它是基於curses的,但不清除屏幕。 – 2014-09-30 08:33:44
看起來很有意思,但是如何將它掛在這裏並不是很明顯,我是否應該實例化UnixConsole? – 2014-09-30 09:08:02
啊,prepare()和get_event()。現在我該如何將換行符更改回CRLF? :D你想把它作爲一個答案;) – 2014-09-30 09:14:54