Max*_*xpm 15 user-interface command-line internals ncurses
有几个像ncurses这样的库可以帮助制作命令行GUI.
简单地说,它们是如何工作的?
我的第一个想法是ncurses拦截所有键盘输入,并通过逐行输出来绘制每个"帧".然而,仔细检查发现每个新框架都会覆盖前一个框架.它如何修改已经输出的行?此外,它如何处理颜色?
编辑:同样的问题适用于任何具有"花哨"界面的东西,比如vim
和emacs
.
Cra*_*aig 17
文本终端具有命令序列,可以执行诸如将光标移动到屏幕上的特定位置,插入字符,删除行等操作.
每种终端类型都不同,并且有自己的一组命令序列.ncurses有一个数据库(详见terminfo)
内部ncurses维护屏幕的2个视图:当前内容以及应用当前挂起更改后屏幕应该是什么样子.一旦程序请求屏幕重绘,ncurses计算一种有效的方法来更新屏幕看起来像所需的视图.确切的字符/命令序列输出取决于正在使用的终端类型.
归档时间: |
|
查看次数: |
3861 次 |
最近记录: |