Tag: ncurses

Ncurses和Linux管道

我想用ncurses写一个简单的程序来显示一些数据。 然后,我希望程序以这样的方式写入stdout,然后我可以在命令行上使用管道(|)来管理一些数据。 我目前的尝试不起作用。 我可以使用’>’在文件中看到“GOT HERE”,但还有很多其他内容。 该程序也立即退出。 #include #include int main(int _argc, char ** _argv) { initscr(); /* Start curses mode */ printw(“Hello World !!!”); /* Print Hello World */ refresh(); /* Print it on to the real screen */ getch(); /* Wait for user input */ printf(“GOT HERE”); endwin(); /* End curses mode */ printf(“GOT […]

诅咒得到箭头键

在尝试通过curses(ncurses)从箭头键获取输入时,它不会捕获KEY_UP等。我使用带有true参数的键盘函数但getch仍然返回一个转义序列。 如何筛选getch()返回的值并专门抓取箭头键?

如何在同时做其他事情的同时从键盘输入?

我正在使用C(gcc)和ncurses来制作一个程序来监控来自串口的数据。 该程序有很长一段while ,它读取来自端口的数据,同时,它在屏幕上打印该信息… 但问题出在这里: 它如何从我的键盘读取输入,(因为getch()冻结程序直到它获得输入)并同时读取来自端口的信息? 也许我必须使用另一种方式(不是很长时间),所以欢迎提出建议!

ncurses – 调整毛刺大小

我正在写一个ncurses程序,并试图让它正确响应终端resize。 虽然我可以在程序中正确读取终端尺寸,但ncurses似乎没有正确处理新尺寸。 这是一个(有点冗长)示例程序: #include #include #include #include void handle_winch(int sig){ struct winsize w; ioctl(0, TIOCGWINSZ, &w); COLS = w.ws_col; LINES = w.ws_row; wresize(stdscr, LINES, COLS); clear(); mvprintw(0, 0, “COLS = %d, LINES = %d”, COLS, LINES); for (int i = 0; i < COLS; i++) mvaddch(1, i, '*'); refresh(); } int main(int argc, char *argv[]){ […]

urxvt中的ncurses不会打印重复的字符

在urxvt中运行ncurses程序会 挤压字符串中的重复字符。 例如,我希望”——–“但我得到”-” 。 我写了一个简短的程序来重现这个问题。 代码如下。 我已经validation了使用xterm而不是urxvt时输出是正确的。 这是我第一次使用ncurses,但是,示例程序就像它们一样简单。 因此,我认为问题不在于我如何使用ncurses。 xterm提供了预期的结果,这也支持了这一点。 我在Arch Linux上使用urxvt。 我也在下面提供相关配置。 我安装了vanilla xterm,没有任何其他配置。 两者都运行zsh。 示例程序(C) #include int main(){ initscr(); printw(“——\n”); // (1) 6 ‘-‘ chars urxvt: “——” xterm: “——” printw(“——-\n”); // (2) 7 ‘-‘ chars urxvt: “-” xterm: “——-” printw(“——–\n”); // (3) 8 ‘-‘ chars urxvt: “-” xterm: “——–” printw(“0——–0\n”); // (4) 8 […]

使用ncurses lib编译C时,-lcurses和-lcucurses有什么区别?

我正在学习C并使用ncurses lib。 我已经看到了对-lcurses和-lcucurses的引用,但我还没有发现任何差异(在编译时都有效)。 感谢帮助!

ncurses屏幕上的多种颜色

我想用ncurses.h和多种颜色制作一个菜单。 我的意思是这样的: ┌────────────────────┐ │░░░░░░░░░░░░░░░░░░░░│ <- color 1 │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ <- color 2 └────────────────────┘ 但是,如果我使用init_pair() , attron()和attroff() ,整个屏幕的颜色是相同的,而不是像我预期的那样。 initscr(); init_pair(0, COLOR_BLACK, COLOR_RED); init_pair(1, COLOR_BLACK, COLOR_GREEN); attron(0); printw(“This should be printed in black with a red background!\n”); refresh(); attron(1); printw(“And this in a green background!\n”); refresh() sleep(2); endwin(); 这段代码出了什么问题? 谢谢你的每一个答案!

如何从stdin获取角色而无需等待用户放置它?

我正在编写一个C程序,使用ncurses在终端上打印一些东西。 用户按’s’时应该停止打印,按’s’再次继续打印。 如何在不等待用户按键的情况下从输入中读取密钥? 我尝试了getch()和getchar()但是他们等到按下一个键… 编辑 这是我的代码: int main(void) { initscr(); /* Start curses mode */ refresh(); /* Print it on to the real screen */ int i = 0, j = 0; int state = 0; while (1) { cbreak(); int c = getch(); /* Wait for user input */ switch (c) { case ‘q’: […]

静态链接ncurses到程序

我有一些问题静态地将ncurses链接到我的一个程序 这是一个非常简单的示例程序: #include int main(){ initscr(); printw(“Hello world\n”); refresh(); getch(); endwin(); return 0; } 当我用它编译它 gcc -static -lncurses hello_curses.c -o curses 我收到这些错误: /tmp/ccwHJ6o1.o: In function `main’: curses_hello.c:(.text+0x5): undefined reference to `initscr’ curses_hello.c:(.text+0x14): undefined reference to `printw’ curses_hello.c:(.text+0x1b): undefined reference to `stdscr’ curses_hello.c:(.text+0x20): undefined reference to `wrefresh’ curses_hello.c:(.text+0x27): undefined reference to `stdscr’ curses_hello.c:(.text+0x2c): undefined reference to […]

如何让ncurses输出星体平面unicode字符

我有以下一段非常简单的代码,它应该输出(除其他外)三个unicode字符: /* * To build: * gcc -o curses curses.c -lncursesw * * Expected result: display these chars: * http://www.fileformat.info/info/unicode/char/2603/index.htm (snowman) * http://www.fileformat.info/info/unicode/char/26c4/index.htm (snowman without snow) * http://www.fileformat.info/info/unicode/char/1f638/index.htm (grinning cat face with smiling eyes) * * Looks like ncurses is NOT able to display second and third char * (only the first one is OK…) […]