标签: ncurses

ncurses终端大小

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

c ncurses

15
推荐指数
2
解决办法
3万
查看次数

无法编译使用ncurses的C/C++代码

我刚刚发现了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
Run Code Online (Sandbox Code Playgroud)

我编译的代码如下所示:

#include <ncurses.h>
int main(){
    initscr();
    printw("Hai thar world...");
    refresh();
    getch();
    endwin();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误.更重要的是,我该如何解决这个问题呢?

c c++ compiler-errors ncurses

15
推荐指数
1
解决办法
2万
查看次数

怎么做ncurses等.人.工作?

有几个像ncurses这样的库可以帮助制作命令行GUI.

简单地说,它们是如何工作的?

我的第一个想法是ncurses拦截所有键盘输入,并通过逐行输出来绘制每个"帧".然而,仔细检查发现每个新框架都会覆盖前一个框架.它如何修改已经输出的行?此外,它如何处理颜色?

编辑:同样的问题适用于任何具有"花哨"界面的东西,比如vimemacs.

user-interface command-line internals ncurses

15
推荐指数
2
解决办法
3861
查看次数

Haskell`ncurses`库

我想在我的Haskell程序中使用基于文本的UI.我找到了ncurses库的一些绑定(另请参阅hscurses或ncurses,使用哪一个?).在hscursesnanocurses包都是围绕C库只是简单的包装,而vty不是非常有据可查,并有点难看(例如混合snake_case和驼峰).

ncursesHackage上的库看起来更漂亮,并且提供了非常适合Haskell的API.问题是它似乎没有实现一些关键功能,如调整大小或刷新窗口.

所以我的问题是:

  • 有没有其他Haskell文本UI库,无论是基于ncurses还是没有,我错过了?
  • 如果没有人,是否可以扩展ncursesHaskell库至少支持窗口刷新和调整大小?(这可能应该与项目所有者协商,但我需要快速解决方案)

编辑:

我终于在nscurses没有窗户(和面板)的情况下使用,以避免让他们感到烦恼.输出到窗口的右下角我遇到了问题(Python的ncurses绑定报告了一个非常类似的问题).我没有写那里解决它:).

haskell ncurses

15
推荐指数
2
解决办法
3545
查看次数

创建一个函数,使用ncurses检查unix中的按键

我一直在寻找相当于kbhit()的东西,我已经阅读了几个关于这个主题的论坛,大多数人似乎建议使用ncurses.

我应该如何使用ncurses检查是否在c ++中按下了某个键.

ncurses提供的函数getch()从窗口中读取字符.我想编写一个函数,只检查是否有按键然后我想做getch().

提前致谢.

c++ unix command-line ncurses

14
推荐指数
1
解决办法
2万
查看次数

CMake无法找到诅咒

我正在尝试从www.marcansoft.com编译openlase库并且遇到了CMake的问题.CMake正在返回一个错误,指出它无法找到Curses,经过大量的审视后,我仍然对这个问题感到难过.我已经检查过我安装了各种ncurses软件包,但仍然存在错误.我对CMake不太熟悉,但我能够解决在此之前出现的其他依赖性问题.以下是终端输出.

tom@SILVER:~/dev/openlase$ cmake ./
-- Found JACK 
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:70 (MESSAGE):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
Call Stack (most recent call first):
  /usr/share/cmake-2.8/Modules/FindCurses.cmake:159 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  examples/27c3_slides/CMakeLists.txt:3 (find_package)


-- Configuring incomplete, errors occurred!
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

  • 汤姆

linux curses ncurses cmake

14
推荐指数
4
解决办法
4万
查看次数

如何清除NCurses的特定线?

如何清除NCurses的特定线?

我需要在屏幕上擦除一行而不重绘整个内容.我怎么做?

c ncurses

14
推荐指数
2
解决办法
1万
查看次数

如何使用getch()ncurses获取Ctrl,Shift或Alt?

如何获得Ctrl,ShiftAltgetch()ncurses?
我无法得到它的工作得到Ctrl,ShiftAltgetch()使用ncurses的?我想念那个男人的东西吗?

c ncurses

13
推荐指数
4
解决办法
2万
查看次数

中断(n)诅咒输入信号

我的一个程序使用ncurses绘制一个小的tui.我的目标之一是使其可以移植到其他curses实现.这意味着我想在自己的调整大小操作上捕获终端模拟器发出的SIGWINCH,并更新我的tui以遵守更改的几何(并且不依赖于ncurses的调整大小设施).由于POSIX(据我所知)只允许访问sig_atomic_t信号处理程序中的变量,因此我将其设置为不同的状态.在主循环中,我的程序检查状态是否已更改并在必要时更新tui.

但是现在,getch当信号到达时,我遇到了我的程序挂起的问题.ncurses文档声明处理信号永远不会中断它.这意味着在按下输入键之前不会更新tui的大小.

是否有任何可移植的中断方式getch?我目前的方法是ungetch在信号处理程序中使用虚拟键,但我不确定是否允许这样做.实际上我找不到任何关于是否可以在信号处理程序中使用curses函数的文档.知道如何正确处理这件事吗?

问候

c curses posix tui ncurses

13
推荐指数
2
解决办法
2380
查看次数

如何使用atexit()注册非void函数?

我正在尝试注册一个函数,该函数返回一个int在程序结束时使用该atexit()函数调用的函数.(具体来说,endwin()来自ncurses 的功能.)

但由于atexit()需要一个指向void函数的指针,我遇到了一个问题.我尝试了以下方法:

static_cast<void (*)()>(endwin)
Run Code Online (Sandbox Code Playgroud)

但似乎不允许static_castint功能到void功能.

我想要完成的是什么,如果是的话,怎么样?

注意:我愿意忽略函数的返回值.


编辑:我也尝试创建一个lambda函数,它似乎做我想要的:

atexit([]{ endwin(); });
Run Code Online (Sandbox Code Playgroud)

与包装/转发功能相比,这是一个很好的解决方案吗?(除此之外,它需要C++ 11并避免定义一个新功能,其唯一目的只是转发另一个功能.)

c c++ ncurses atexit

13
推荐指数
3
解决办法
2102
查看次数