从终端读取屏幕字符

Read screen character from terminal

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

– 两者表示与终端的通信是双向的。真的没有办法查询给定位置的字符吗,比如 *inch**in_wch* curses 函数(仅适用于 curses windows)?

这是预期的(不是 "unexpected"):

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

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

-s [rows columns]
This option indicates that Sun console escape sequences will be used instead of the VT100-style xterm escape codes.

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