簡體   English   中英

獲取Perl中的當前終端顏色對

[英]Get current terminal color pair in Perl

我正在嘗試在終端窗口中了解彩色文本。 (如果重要的是我在OS X上使用Terminal.app。)我想得到終端的當前前景色和背景色對。 看起來我應該能夠使用Term :: Cap庫在perl腳本中獲取此信息,但解決方案使我無法解決。

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

該功能超出了terminfo和termcap的范圍,因為它處理終端響應 ,而terminfo / termcap描述了這些功能:

  • 如何告訴終端做一些常用功能 (如清除屏幕),或者
  • 可以從鍵盤發送一些特殊鍵 (例如Home )的字符序列。

雖然原則上對終端描述中可能存在的內容沒有限制,但在20世紀80年代,各種終端之間幾乎沒有共同點用於響應 一些終端可以報告特定功能,其中大多數是不變的(例如,版本信息)。 大多數變量響應來自terminfo / termcap在X / Open Curses中或多或少地固化。 ncurses擴展了這一點 ,但同樣,大多數擴展都是功能特殊鍵

Terminal.app實現了xterm最常用的功能,但(像其他模仿者一樣)省略了大多數終端響應。 除此之外, xterm提供了終端響應,可以告訴應用程序窗口的顏色當前是什么。 有幾個命令行實用程序( xtermsetxtermcontrol )已被編寫以使用此信息(同樣,它們僅涵蓋了所有指令的一部分)。 使用xtermcontrol演示了Terminal.app在這個領域缺乏 - 見截圖:

使用xtermcontrol顯示Terminal.app vs xterm的屏幕截圖

我不認為大多數終端都支持報告這個 - 並且它看起來不像termcap或terminfo有任何條目。 您只需要根據需要設置顏色對,而不是詢問終端現在設置的顏色。 在ECMA-48標准中(在ANSI X3.64之后更為人所知的“ANSI”,以前它曾經存在),唯一引用顏色的命令是SGR“Set Graphic Rendition”,它純粹是只寫的。

Dunno關於perl或Terminal.app,但xterm等會將前景/背景顏色控制序列寫入stdin,如果你分別輸出"\\033]10;?\\07""\\033]11;?\\07" 退房http://invisible-island.net/xterm/ctlseqs/ctlseqs.htmlhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Controls尤其如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM