![](/img/trans.png)
[英]How to use the new support for ANSI escape sequences in the Windows 10 console?
[英]How to create scrollable console application that support ANSI escape code sequences
我在此基於我所了解的技術做出一些假設,但也歡迎其他技術建議。
我的目標:編寫一個ANSI Art查看器,使其盡可能類似於在DOS機器上進行查看,最好不要運行dosbox。 這將在Raspberry Pi上運行。
我已經有了控制台,可以使用適當的字符,顏色等適當地顯示ANSI。“查看器”的好處是我希望能夠使用箭頭鍵在文檔中上下滾動,就像,例如,“較少”命令可以。
根據我的研究,詛咒是一個完美的選擇。 問題是curses不支持ANSI轉義碼序列。 有一個使用C ++編寫的ANSI編輯器,它使用curses,但是它為解析轉義碼序列建立了自己的支持。 現在這是我的不得已的方法。
所以我的問題是:是否有更好的方法來創建可滾動的控制台模式應用程序,以在Linux上的python中查看ANSI Art(代碼頁437 + ANSI轉義代碼序列)?
實際上只有兩種可能性:將ANSI序列解析為curses
可以接受的內容,或者按原樣使用ANSI序列。
起初,后者似乎更具吸引力。 大多數限制與您無關,或者很容易處理:
cat
命令不起作用。 (您可能仍然對顏色設置有疑問,但是我想您也知道如何解決該問題。) decode('cp437')
然后在您的代碼中進行適當編碼即可; 轉義序列將原樣通過。 tty.setraw(sys.stdin.fileno())
一樣簡單,只需將stdin讀取為無緩沖文件即可。 (好吧,您可能想tcgetattr
原始tcgetattr
以便以后可以恢復它,但這並不難。) 最后一個聽起來很簡單,但事實並非如此。 例如,我抓取了一個隨機文件GR-BANT ; 它只有33行,但其中有154條換行符。 這將非常普遍。 在許多情況下,以esc-[-A開頭的只是“重疊線”,您必須將其視為上一行的一部分,這並不難做到,但是在很多情況下,都需要不僅如此。
因此,無論如何,您都必須至少進行一些 ANSI解析。
一旦開始,我想您將通過完全解析並手動繪制到詛咒板上的“最后一招”找到更輕松的時間。 (當然,這樣做的副作用是可以處理動畫文件,在非ANSI終端上工作,更輕松地在所有終端上處理“小鍵盤”鍵……)
但是,如果您想采用第二種方法, 這里有一個快速的技巧可以幫助您入門。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.