2011-02-14 57 views
3

我想了解終端窗口中的顏色文本。 (萬一它很重要我在OS X上使用Terminal.app)我想獲取終端當前的前景和背景顏色對。看起來我應該可以使用Term :: Cap庫在perl腳本中獲得此信息,但解決方案無法解決。在Perl中獲取當前的終端顏色對

在perl腳本中,我將如何查詢終端當前的前景色和背景色對值?

回答

2

的特點是的terminfo和termcap的範圍之外,因爲它與終端響應交易,而terminfo的/ termcap中描述了這些功能:

  • 如何告訴終端做一些常用實現功能(如清屏),或
  • 何種順序字符可能有些特殊鍵(如首頁 )從鍵盤發送。

雖然在原則上,沒有什麼可能是終端描述的一部分沒有限制,有跨終端早在上世紀80年代的小共性爲響應。少數終端可以報告特定的功能,其中大部分是恆定的(例如,版本信息)。大部分可變的反應都是在terminfo/termcap在X/Open Curses中或多或少固化之後發生的。 ncurses extends that,但是再次,大多數擴展是特徵特殊鍵

Terminal.app實現了最常用的功能xterm,但(像其他模仿者一樣)忽略了大部分終端響應。其中,xterm提供終端響應,它可以告訴應用程序當前窗口的顏色。有幾個命令行實用程序(xtermsetxtermcontrol)已被寫入使用此信息(並且它們再次僅涵蓋部分劇目)。使用xtermcontrol表明Terminal.app缺乏這方面的—見截圖:

screenshot showing Terminal.app vs xterm using xtermcontrol

2

我不認爲大多數終端支持報告 - 它看起來不像termcap或terminfo有任何它的條目。你只需要設置顏色對,而不是問問終端它現在設置的是什麼。在ECMA-48標準(在ANSI X3.64之後,它曾用於生存的情況下,最好稱爲「ANSI」)中,引用顏色的唯一命令是SGR「Set Graphic Rendition」,它純粹是隻寫的。

+0

我認爲你是正確的。我確實閱讀了大量的手冊頁,並得出了相同的結論,即當前的顏色對是隻寫屬性,但由於終端編程對我來說都是新的,所以我想問一些我錯過的東西。謝謝你的幫助。 – HairOfTheDog 2011-02-15 15:49:30