Tag: ncurses

Ncurses菜单 – 记住选择

我正在使用Ncurses库来做一些交互式菜单,我不知道如何做一件事。 我有简单的菜单,只有很少的选项,我转向O_ONEVALUE可以同时选择多个选项,在发布菜单之前我获取所有菜单项并将它们标记为选中或不选,这取决于我保存在某处的位掩码否则,但是当菜单发布时,每个选项都关闭,这里是代码: //acquiring menu items ITEM** header_items = menu_items(params.header_opts_menu); ITEM* cur_item; if (header_items == NULL) { client_cleanup(); syslog_nsys_f(LOG_ERR, “error while getting header menu items”); } //selecting appropriate items long header_menu_items_count = ARRAY_SIZE(header_menu_choices); for (i = 0; i < header_menu_items_count; ++i) { if ((params.header_flags & (1 << (i))) != 0) decision = TRUE; else decision = […]

使用ncurses在C中打印Unicode字符

我必须使用ncurses在C中绘制一个方框; 首先,为简单起见,我定义了一些值: #define RB “\e(0\x6a\e(B” (ASCII 188,Right bottom, for example) 我已经使用gcc编译,通过Ubuntu,使用-finput-charset=UTF-8标志。 但是,如果我尝试使用addstr或printw进行打印,我会得到hexa代码。 我做错了什么?

Ncurses:如何在不丢失当前位置的情况下刷新菜单?

如何在不丢失当前位置的情况下重新加载菜单中的数据? 例如,当用户“选择”项目时,执行改变数据的动作。 (更新项目,删除项目或在菜单中添加新项目。)我想重新加载菜单但仍然将光标保持在刚刚选择的项目上。 最好的方法是什么? 作为参考,这个问题似乎非常接近,但我认为它不包括添加/删除问题: 如何替换ncurses&C中的字符串菜单项 这个问题似乎也很相似,但对我来说太具体了: Ncurses菜单 – 记住选择

ncurses透明控制台背景

我的控制台启用了透明度,当我运行其他ncurses应用程序时,我看到背景保持透明。 我正在努力使我的应用程序保持透明度,而不是应用深黑色不透明背景。 这就是我到目前为止所做的 start_color(); init_pair(1, COLOR_GREEN, COLOR_BLACK); attron(COLOR_PAIR(1)); mvprintw(10,10, “Hello”); refresh(); attroff(COLOR_PAIR(1)); 有任何想法吗? 谢谢

如何在ncurses中获得明亮的白色?

如何使用浅灰色背景和亮白色的foregraound初始化颜色对? init_pair(number,COLOR_WHITE,COLOR_WHITE)创建一个浅灰色前景和背景的颜色对,但我需要前景非常白。 我尝试将COLOR_WHITE与A_BLINK(通过按位OR)组合,但这不起作用。 Ncurses howto的/ examples / documentaion也无法帮助我。

如何在getstr()c ++ ncurses之后删除文本

我一直在学习使用ncurses库,我遇到过getstr()。 我想知道如何在值已经存储在变量中后从终端上的getstr()中删除文本? 我试图在谷歌上找到答案,但没有运气! 基本上我想要它,所以当用户按下输入时,文本将从屏幕上删除。

如何替换ncurses&C中的字符串菜单项

我试图找出如何从ncurses菜单中替换item_name 。 从手册页中 ,我找不到任何set_item_name或类似的东西。 任何想法,如果有一个解决方案吗? 例如,在KEY_ENTER上替换”Choice 1″ w / “String 1” #include #include char *choices[] = { “Choice 1”, “Choice 2”, “Choice 3”, “Choice 4”, “Exit”, }; int main() { ITEM **my_items, *cur_item; int c, i; MENU *my_menu; initscr(); cbreak(); noecho(); keypad(stdscr, TRUE); my_items = (ITEM **) calloc(6, sizeof(ITEM * )); for (i = 0; […]

ncurses终端大小

如何找到ncurses应用程序的终端宽度和高度?

使用D编程语言修复api

我正在尝试使用神经网络教自己AI。 简而言之,我想创建一个简单的图形,使用ncurses显示我的程序中发生的事情。 我正在使用的教程可以在这里找到。 我的印象是D与C兼容,理论上我可以相对容易地调用C函数。 我发现事实并非如此。 我是一个相对新手的程序员,所以即使是简单的解释也有点高于我的头脑。 我在这里找到了这个。 D旨在与目标系统的C编译器舒适地配合。 D通过依赖目标环境的C运行时库来弥补没有自己的VM。 尝试移植到D或为大量可用的C API编写D包装器将是毫无意义的。 直接调用它们要容易多少。 这是通过匹配C编译器的数据类型,布局和函数调用/返回序列来完成的。 听起来很棒。 有点过头了。 我测试了一个简单的C程序: #include int main(void) { int ch; initscr(); noecho(); cbreak(); printw(“Hit Ctrl+C to exit …\n\n”); for (;;) { ch = getch(); printw(“Value of char: %d (%02x)\n”, ch, ch); } endwin(); return 0; } 从SO上的另一个问题无耻地复制和粘贴。 至少我做了我的功课。 我从一个简单的D程序尝试了基本相同的东西。 我收到了这个错误: Error: module curses […]

使用select来读取socket和stdin

我正在写一个基于ncurses的聊天程序。 起初,我只编写网络内容(没有ncurses),一切正常,但添加图形后,我无法使客户端应用程序正常工作。 主要问题是同时从stdin和socket读取。 在ncurses-less版本中,我使用了pthread,它就像魅力一样。 唉,似乎pthread和ncurses没有很好地结合在一起,所以我不得不寻找另一种解决方案。 我认为select()会这样做,但它仍然只从stdin读取并完全忽略套接字。 这是整个代码: 代码 有趣的是: char message[1024]; fd_set master; fd_set read_fds; FD_ZERO(&master); FD_ZERO(&read_fds); FD_SET(0,&master); FD_SET(s,&master); // s is a socket descriptor while(true){ read_fds = master; if (select(2,&read_fds,NULL,NULL,NULL) == -1){ perror(“select:”); exit(1); } // if there are any data ready to read from the socket if (FD_ISSET(s, &read_fds)){ n = read(s,buf,max); buf[n]=0; […]