从终端读取屏幕字符

时间:2016-08-29 12:23:19

标签: terminal curses ioctl termcap terminfo

据我所研究,termcap / ioctltput co不允许查询终端屏幕上(x,y)位置的字符。这是相当意外的,因为:

  • 可以阅读例如来自终端的屏幕尺寸(例如tput li*inch*),
  • 可以从终端
  • 读取输入

- 这两个意味着与终端的通信是双向的。是否真的无法在给定位置查询字符,例如使用*in_wch*,{{1}} curses函数(仅适用于curses窗口)?

1 个答案:

答案 0 :(得分:2)

预期(不是"意外"):

  • tput提供终端数据库(固定)和操作系统(可更改)组合的值,但不询问终端。
  • 从终端读取来自设备的输入流(设计用于做什么终端)。

某些(并非所有)终端都支持转义序列,该转发序列询问终端光标所在的位置。 resize程序使用它来获取屏幕大小。但请记住,已知它是终端相关的,如手册页中所述:

  

-s [行列]
  此选项表示 Sun 控制台转义序列将是   用来代替VT100风格的xterm转义码。

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