Tag: ncurses

shell在ncurses窗口?

我目前正在尝试使用ncurses编写一个最小的终端多路复用器。 但是,当我尝试执行shell时,它不会打印到窗口,而是启动一个新的子execv来控制窗口(即忽略ncurses)。 我怎样才能防止这种情况并让ncurses控制它? 有没有办法获得tty并控制它? 编辑 感谢Ross Ridge的评论,我现在知道我需要创建一个伪终端,然后我将其读入一个ncurses窗口。 但是,我无法弄清楚如何在ncurses窗口中打印stdout。 是否有读取文件描述符的ncurses函数? 或者我必须以某种方式使用printw() ?

在窗口内打印,而不是在边框上打印

我正在尝试在curses窗口中写一些东西,但它似乎也写在边框上。 我该如何修复下面的代码? win_self = newwin(LINES / 2, COLS, 0, 0); box(win_self, 0, 0); wrefresh(win_self); wprintw(win_self, “foobar”);

我在哪里可以找到ncurses C API的完整参考?

我在哪里可以找到ncurses C API的完整参考?

无法编译使用ncurses的代码

我刚刚发现了ncurses并且刚开始学习它,但是我的教程中的示例不能在我的计算机上编译。 我必须手动安装ncurses,并输入“apt-get install libncurses5-dev libncursesw5-dev”。 我不得不这样做,因为在这样做之前我得到一个错误,说我不能“#include”。 安装它工作,但现在我得到此错误: touzen@comp:~/learning_ncurses$ g++ -o hello_world hello_world.cpp /tmp/ccubZbvK.o: In function `main’: hello_world.cpp:(.text+0xa): undefined reference to `initscr’ hello_world.cpp:(.text+0x16): undefined reference to `printw’ hello_world.cpp:(.text+0x1b): undefined reference to `refresh’ hello_world.cpp:(.text+0x20): undefined reference to `stdscr’ hello_world.cpp:(.text+0x28): undefined reference to `wgetch’ hello_world.cpp:(.text+0x2d): undefined reference to `endwin’ collect2: ld returned 1 exit status 我编译的代码如下所示: #include int […]

如何在格式化字符串上使用strlen()?

我想为mvwprint / mvwchgat ncurses函数编写一个包装函数,它在指定的窗口中打印消息,然后更改其属性。 但是, mvwchgat需要知道它应该改变多少个字符 – 而且我不知道如何告诉mvwchgat格式化字符串有多长,因为strlen() on,例如”abc%d”显然会返回5,因为strlen不知道%d代表什么…

C和ncurses中的ANSI颜色

我知道我可以使用我选择的颜色来进行attron和attroff ,但是,我想知道是否可以使用ncurses中的ANSI颜色转义码来实现它: #include #include int main() { initscr(); char *s2 = NULL; const char *s1 = “World”; int n = 10; // What would be a good way to colour %d? // seems it is not safe to us the ANSI color escape in here… s2 = malloc (snprintf (NULL, 0, “Hello %s \033[22;31m%d”, s1, […]

如何编写ANSI C控制台屏幕缓冲区?

我正在制作一个基于ASCII的游戏,而且我看起来人们都说要使用来自MSDN的Console.Write(),如果你使用的是Windows,那就是花花公子,但我不是。 因此,我正在尝试在C中编写一个函数或一组函数,它们可以在两个屏幕缓冲区之间交替,并将它们写入屏幕,类似于手册页,以及pico,vim和emacs的。 我有缓冲区正在工作,并发现一个名为0verkill的旧的ASCII游戏,它使用C和putchar()将每个字符放在屏幕上,但我尝试重新创建它,导致文本连续流动,而不是窗口大小的静态文本面板。 我真的不想使用像curses这样的任何外部库(因为这会降低可移植性),并且如果可能的话,我希望保持ansi标准。 谢谢!

NCurses初始化而不清除屏幕

我正在编写一个类似于shell的程序。 启动后,会出现提示并输入一些特定于应用程序的命令。 到目前为止这个工作正常。 但是,我想在Bash中添加对命令历史记录的支持,因此用户可以点击向上或向下箭头并查看以前输入的命令。 我已经包含了ncurses库,我用getch()做了一个简单的hello world测试,以确保正确报告向上和向下箭头。 困扰我的是,似乎要求我调用initscr()来清除屏幕以便我使用getch()。 好的,问题是: 有没有人知道如何使用ncurses getch()函数而不先调用initscr()? 如果没有,我可以让它不清楚屏幕吗? 基本上,我希望getch()与getchar()的行为相同,如果这有意义的话。 提前致谢! 编辑:我认为最好的例子是Python如何在交互模式下运行。

如何减少NCurses C应用程序中的输入延迟

当我运行我的应用程序时,我得到了大量的输入延迟。 更多细节:当我按下“w”,“a”,“s”,“d”(我指定的输入键)时,对象会移动,但是在释放按键后它会继续移动很长一段时间。 源代码如下,但是代码的一小部分已经被删除以缩短问题,但是如果下面的源代码没有编译,我将所有代码都放在github上。 https://github.com/TreeStain/DodgeLinuxGame.git谢谢您的时间。 -Tristan dodge.c: #define ASPECT_RATIO_X 2 #define ASPECT_RATIO_Y 1 #define FRAMES_PER_SECOND 60 #include #include “object.h” #include “render.h” int main() { initscr(); cbreak(); noecho(); nodelay(stdscr, 1); object objs[1]; object colObj; colObj.x = 10; colObj.y = 6; colObj.w = 2; colObj.h = 2; colObj.sprite = ‘*’; colObj.ySpeed = 1; colObj.xSpeed = 1; objs[0] = […]

在ncurses中定义新颜色

我正在尝试学习ncurses,并想知道我是否可以创建自己的自定义颜色。 我知道通过使用init_color() ,我可以修改ncurses库中的任何预定义颜色。 但是,有没有办法可以用自定义RGB值定义新颜色?