窗底
一些应用程序,如 vim、mutt、aptitude 包含
- 用于输出的顶部窗口部分和
- 底部供用户输入或显示状态。
(假设有一个子进程用于输出,另一个子进程用于接受用户输入。目的是允许在您键入输入或查看状态的同时更新输出。)
Actions Undo Package Resolver Search Options Views Help
C-T: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
|
|
|
|
|
┌─────────────┐ |
│Loading cache│ |
└─────────────┘ |
|
|
|
|
|
|
|
--------------------------------------------------------------------------- |
Initialising package states 100% |
+-------------------------------------------------------+
| some output here |
| |
| |
| |
| |
| |
|-------------------------------------------------------+
|:input here |
+-------------------------------------------------------+
Ncurses 教程 http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/没有提到这显然是可能的。
关于“的查询”c 打印到 {window,screen,terminal,console} 底部” 在 StackOverflow 或网络搜索引擎上没有帮助。
这可以用 C 编程来完成吗?
丢弃输入
虽然下面的一些解决方案可以将角色移动到给定位置,但存在的问题是可能需要丢弃用户输入而不是将其保留在屏幕上。像vim
的情况下,输入“:w
" 并且按 Enter 键不会留下 ":w
“ 屏幕上。
更新。这是在这里找到的:如何在 getstr() c++ ncurses 之后删除文本 https://stackoverflow.com/questions/7910512
窗口焦点 - 问题的未解决部分
当您在窗口底部键入输入并且顶部的文本发生变化时,我们会看到将焦点移回底部的问题。截至 12 月 29 日的解决方案中尚不存在这一点。
更新1. 只是尝试
- 记住之前的光标位置,然后
- 显示输出,然后
- 恢复位置
is 这不是一个简单的解决方案:由于这些是不同的进程,因此尝试检索光标位置不会影响其他进程执行期间发生的更改。
例如,如果父级接受输入,则子级不知道光标位置如何变化,并且在控制台的另一部分执行一行输出后无法恢复光标位置。
实现这一点将涉及一些进程间通信,如果有其他解决方案,它们可能会更好。
Related
-
从键盘获取输入,无需等待输入 https://stackoverflow.com/questions/6886579相关,但不够具体。
-
如何使用 Python Urwid 制作类似聊天的 UI? https://stackoverflow.com/questions/8635299/Urwid for Python 可以完成这项工作(根据J·F·塞巴斯蒂安在下面的评论中)。不幸的是不在C 中。