从终端读取屏幕字符

Rob*_*uca 5 curses terminal ioctl termcap terminfo

据我研究,terminfo/termcapioctl查询终端屏幕上 (x,y) 位置的字符。这是相当出乎意料的,因为:

\n\n
    \n
  • 人们可以从终端读取例如屏幕尺寸(例如tput cotput li),
  • \n
  • 可以从终端读取输入
  • \n
\n\n

\xe2\x80\x93 两者表示与终端的通信是双向的。是否真的没有办法查询给定位置的字符,例如使用*inch*,*in_wch* curses 函数(仅适用于curses 窗口)?

\n

Tho*_*key 2

这是预期的(不是“意外的”):

  • tput给出来自终端数据库(固定)和操作系统(可变)组合的值,但不询问终端。
  • 从终端读取是通过来自设备的输入流(终端的设计目的)。

一些(不是全部)终端支持转义序列,该序列询问终端光标在哪里。该resize程序使用它来获取屏幕尺寸。但请记住,众所周知,它是依赖于终端的,如手册页中所述:

-s [rows columns]
此选项指示将使用Sun控制台转义序列而不是 VT100 样式的 xterm 转义代码。

很少有终端支持转义序列,它只是从屏幕上读取字符。并不是每个人都喜欢一个可以读取屏幕的程序的概念——也许在他们不知情的情况下。

  • 我有兴趣知道哪些终端类型支持从屏幕缓冲区读取字符。 (3认同)