不,我不想用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++相关问答推荐

如何将大缓冲区初始化为所有位?

当参数名等于函数名时:谁赢了?

C - 指针偏移意外

malloc的默认值是单个char P的大小吗?

为什么函数定义在 C 中有多个返回类型

计算总和的多线程程序在笔记本电脑上运行速度比台式机快

为什么memset失败而calloc成功?

在链式 struct 中为数组释放内存

GCC 如何解释 ferror 定义?

查找 x86-64 的两字节非法操作码

如何获取当前时区的城市名称,如 America/Los - Angeles

关于 c 中双精度和复杂类型泛型的问题

使用 `clone()` 创建子进程.为什么 `wait()` 不等待它终止?

使用 calloc 赋值

Realloc() 导致我找不到的泄漏

判断函数是否在 C 中定义是否有效?

如何更改函数内数组的大小?

将实数转换为复数是否会将C中的虚部设置为0?

命令行选项的意义是什么?

为什么 GCC 只有在使用 struct 名称而不是 typedef 时才会抛出错误和不必要的警告?