这3个有什么区别?据我所知,它们都提供了对curses的绑定,这是基于终端文本的UI的C库.
我目前不知道3中的任何一个,我从未使用过诅咒.你会推荐哪一个?我听过多次ncurses,但只听过一次或两次CDK(通过研究),从未听说过urwid(我认为).
我需要实现一个具有类似ncurses功能的控制台应用程序(可能是Java)(例如导航菜单和重绘整个屏幕).
到目前为止,我能找到的唯一解决方案是CHARVA("用于文本终端的Java窗口工具包"),tuipeer("用于Java AWT的文本用户界面")和一个非常古老的Dr. Dobb的文章("A Java AWT的文本UI").
到目前为止,CHARVA是我能找到的最好的东西,但我不喜欢用JNI包装诅咒的想法.
有没有标准的方法,比如AWT/Swing,这样做呢?有什么其他选择吗?
标题比我的实际目标更具体:
我有一个命令行程序,它使用GNU Readline,主要用于命令历史记录(即使用向上箭头检索以前的命令)和其他一些细节.现在,程序的输出中间散布着用户的输入,有时候输出是正常的,但输出是异步的(它是通过网络连接来响应输入命令),有时会变得烦人(例如,如果用户输出行时)正在输入新的输入).
我想为这个程序添加一个功能:输出的单独"窗口".我想过为此使用ncurses.但是从ncurses FAQ中可以看出,这两个库并不容易一起使用.
我可能会考虑使用Editline或tecla而不是Readline,但我不清楚其中任何一个是否能解决我的问题.我还考虑使用除ncurses之外的其他东西,包括提供两种功能的库(文本模式窗口和命令历史记录),但我不知道什么是最好的.
哦,对彩色文字的支持可能会得到奖励积分.我怀疑我可能能够做到这一点与Readline库,所以也许这是一个单独的问题,但如果我的问题的解决方案也可以轻松一点颜色添加到输出,那就更好了.
我正在使用Ubuntu Hardy(Linux 2.6).
我在使用ncurses的getch()来阻止时遇到了一些问题.默认操作似乎是非阻塞的(或者我错过了一些初始化)?我希望它像Windows中的getch()一样工作.我试过各种版本的
timeout(3000000);
nocbreak();
cbreak();
noraw();
etc...
Run Code Online (Sandbox Code Playgroud)
(不是所有的同时).WINDOW如果可能的话,我宁愿不(明确地)使用任何.一个while围绕残培环路(),检查特定的返回值是OK了.
试图在Ubuntu 16.04 LTS上安装ncurses 6.0失败,出现编译错误:
In file included from ./curses.priv.h:325:0,
from ../ncurses/lib_gen.c:19:
_24273.c:843:15: error: expected ‘)’ before ‘int’
../include/curses.h:1631:56: note: in definition of macro ‘mouse_trafo’
#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
^
Makefile:962: recipe for target '../objects/lib_gen.o' failed
make[1]: *** [../objects/lib_gen.o] Error 1
make[1]: Leaving directory '/home/netsamir/Sofware/Tmux/ncurses-6.0/ncurses'
Makefile:113: recipe for target 'all' failed
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)
netsamir@octopus:~/Sofware/Tmux/ncurses-6.0$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenial
netsamir@octopus:~/Sofware/Tmux/ncurses-6.0$ gcc --version
gcc (Ubuntu …Run Code Online (Sandbox Code Playgroud) 我正在研究在python中开发一个控制台应用程序,该应用程序应该能够在Windows和Linux下运行.为此,我真的想使用像curses这样的高级控制台库.但是,据我所知,Windows上没有curses.
我还有其他选择吗?不幸的是,在Windows下使用cygwin不是一个选择......
谢谢你的帮助!
我想写一个简单的C程序,它将根据"key down"和"key up"事件执行不同的操作.该程序将从rxvt内部运行.
我应该使用什么库或机制来访问按键和释放?阅读/dev/tty只会提供关键版本吗?对于termcap,terminfo,ncurses和俚语,这也是如此吗?有没有办法在终端应用程序中实现这一目标?
在尝试设置终端程序使用颜色时,我遇到了xterm-color和xterm-256color作为选项 - 即您可以将TERM环境变量设置为任一个.
我想知道是否有人可以描述两者之间的区别?
我在我的ubuntu服务器以及我的mac上搜索了文档,但没有找到任何文档.我只能在/ usr/share/terminfo中找到各种二进制文件
在尝试通过curses(ncurses)从箭头键获取输入时,它不会捕获KEY_UP等.我使用带有true参数的键盘函数但是getch仍然返回一个转义序列.如何筛选getch()返回的值并专门抓取箭头键?
我正在尝试编译我的项目,我使用lib ncurse.编译器链接文件时我遇到了一些错误.
这是我在Makefile中的标志行:
-W -Wall -Werror -Wextra -lncurses
Run Code Online (Sandbox Code Playgroud)
我已经包含了ncurses.h
一些布局:
prompt$> dpkg -S curses.h
libslang2-dev:amd64: /usr/include/slcurses.h
libncurses5-dev: /usr/include/ncurses.h
libncurses5-dev: /usr/include/curses.h
prompt$> dpkg -L libncurses5-dev | grep .so
/usr/lib/x86_64-linux-gnu/libncurses.so
/usr/lib/x86_64-linux-gnu/libcurses.so
/usr/lib/x86_64-linux-gnu/libmenu.so
/usr/lib/x86_64-linux-gnu/libform.so
/usr/lib/x86_64-linux-gnu/libpanel.s
Run Code Online (Sandbox Code Playgroud)
这是我的错误:
gcc -W -Wall -Werror -Wextra -I./Includes/. -lncurses -o Sources/NCurses/ncurses_init.o -c Sources/NCurses/ncurses_init.c
./Sources/NCurses/ncurses_init.o: In function `ncruses_destroy':
ncurses_init.c:(.text+0x5): undefined reference to `endwin'
./Sources/NCurses/ncurses_init.o: In function `ncurses_write_line':
ncurses_init.c:(.text+0xc5): undefined reference to `mvwprintw'
./Sources/NCurses/ncurses_init.o: In function `ncurses_init':
ncurses_init.c:(.text+0xee): undefined reference to `initscr'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
非常感谢