不,我不想用ncurses,因为我想了解 终端工作正常,我自己编程也很开心.:)它不会 必须是可移植的,它只能在基于Linux xTerm的终端仿真器上工作.

我想做的是编写一个交互式终端应用程序,比如HTOP和VIM.我的意思不是输出看起来像方框或设置 colored颜色 的字符,这是微不足道的;也是为了使内容适合窗口大小.我需要的是

  1. 如何获得mouse interactions,如点击字符并滚动鼠标滚轮(当鼠标位于特定字符时)以实现滚动[EDIT: in a terminal emulator of course],以及

  2. 如何完全完成父进程的输出,并将我的打印与其输出分开,这样在让我的应用程序离开后,除了我在shell中输入的命令应该在那里,就像运行HTOP并再次退出它时一样:这个应用程序再也看不到任何东西了.

我真的不想使用网络课程.当然,如果你知道ncurses的哪个部分负责这些任务,欢迎你告诉我在源代码中的什么地方可以找到它,所以我会研究它.

推荐答案

I'm a bit confused. You speak of a “terminal application”, like vim; terminal applications don't get mouse events, and don't respond to the mouse.

如果你说的是真正的终端应用程序,它运行在

You may have to output an additional sequence at the start and at the end to enter and leave “full screen” mode; this is necessary for xterm.

最后,您必须在输入/输出级别做一些特殊的工作,以确保您的输出驱动程序不会添加任何字符(例如,将简单的LF转换为CRLF),并确保输入不会回显,是透明的,并且立即返回.在Linux下,这是使用ioctl完成的.(同样,完成后不要忘记恢复它.)

C++相关问答推荐

如何系统地使用软件预取?

如何在 C++ 中包含使用 C++ 关键字作为标识符的 C 标头?

如何判断作为参数传递的字符串是否是可修改的字符串

在 c 标头中使用 c++ 标头中的枚举类

使用 printf() 输出正确的小数位数?

最新 container_of 宏中 __mptr 的用途是什么?

您可以使用 C 内联汇编来对齐指令吗? (没有编译器优化)

如何仅将 C 中 for 循环中的三个最大整数分配给三个单独的变量?

如何在数组中打印二进制数?

找到一种在 C 中调用具有不同参数的函数的方法

如何让我的应用程序找到 gettext 翻译?

OpenMP 线程 ID 如何与递归一起工作?

是否允许 C 编译器合并对 volatile 变量的顺序赋值?

为什么 C++ 中的字符串文字 (char*) 必须是常量?

为什么将 free 的返回值转换为 void?

在结构数组的末尾需要空括号“{}”是什么?

如果缺少 const char* 数组初始化逗号,则生成编译器警告

对平方数字求和时是否需要明确处理负数或零?

“保留用于任何用途”是什么意思?

在结构中,使用一个数组字段访问另一个数组字段是否合法?