不,我不想用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),并确保输入不会 echo ,是透明的,并且立即返回.在Linux下,这是使用ioctl完成的.(同样,完成后不要忘记恢复它.)

C++相关问答推荐

通过MQTT/蚊子发送大文件—限制在4MB

需要大整数和浮点数.使用long long int和long double

为什么在此程序中必须使用Volatile关键字?

将 struct 变量赋给自身(通过指针取消引用)是否定义了行为?

可以将C变量限制为特定的读/写速度吗?

对于C中给定数组中的每个查询,如何正确编码以输出给定索引范围(1到N)中所有数字的总和?

理解C版宏(看起来像未声明的变量?)

错误Cygwin_Except::Open_stackdupfile:正在转储堆栈跟踪是什么?

如何在CANbus RX/TX FIFO起始地址寄存器(ATSAME 51)的特定地址初始化数组?

如何确保在C程序中将包含uft8字符的字符串正确写入MySQL?

防止C++中递归函数使用堆栈内存

<;unistd.h>;和<;sys/unistd.h>;之间有什么区别?

在函数外部使用内联ASM时无法指定操作数

int * 指向int的哪个字节?

生成一个半RNG,结果用C表示(无随机/随机)

区分MySQL C界面中的文本和BLOB字段

在C中使用字符串时是否不需要内存分配?

C 和 C++ 标准如何告诉您如何处理它们未涵盖的情况?

cs50拼写器分配中的无限循环

单线程代码中的编译器屏障是否必要?