【问题标题】:linux terminal page up and page down in C programlinux终端在C程序中向上和向下翻页
【发布时间】:2015-03-11 07:34:08
【问题描述】:

对于 Linux 终端,我们如何在 C 程序中使用任何其他键(例如,向上向下箭头)调用 (shift + pageup) 和 (shift + pagedown) 函数。我需要进行哪些系统调用。

【问题讨论】:

  • 这不是控制台的一部分,而是终端的一部分 program,它是一个完全独立的程序处理终端窗口,这也意味着它不能直接控制,尤其是不能通过系统调用。 scrolling 有一些 VT100 转义序列,如果有帮助的话。
  • 似乎很有用,但我该如何实现它们
  • 给定的“VT100”链接主要是因为不准确 - 请参阅 [invisible-island.net/ncurses/ncurses.faq.html#vt100_color]

标签: c linux terminal


【解决方案1】:

通过向终端发送转义序列,即字符序列(通常以“转义”字符开头)来操作这些功能。

Linux 控制台的详细序列记录在console_codes 手册页中。但是,每个终端仿真器(例如,您在桌面环境中运行的任何终端程序)都与此不同。有些已记录在案(xterm 和 rxvt),有些则没有(gnome-terminal、konsole)。

对于 DEC VT100 终端,大多数人称自己为 VT100-like。以下是规模两端的信息来源

为了为这些功能提供更好的编程接口,有一些库(ncurses 和俚语),使用终端数据库(列出给定终端提供的内容以及操作方法)。

从命令行,shell 脚本可以使用tput 程序发送转义序列。 (shell 脚本通常也只是硬编码这些,但代价是缺乏可移植性和可读性)。

【讨论】:

  • 谢谢大家的帮助,我会试试ncurses库
  • 在 ncurses 中上下滚动只移动窗口不显示上一个文本。
  • 您可以使用“pad”来管理比窗口大小更大的区域。
  • 很抱歉,我在 pad 上找不到任何东西。虽然我可以使用 ncurses 完成任务,但如果“pad”提供了更好的解决方案,我很乐意尝试一下
  • "pads" 是 curses 的一个特性 -- 见 invisible-island.net/ncurses/man/curs_pad.3x.html
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 2014-11-16
相关资源
最近更新 更多