标签: ncurses

使用ncurses调整终端和滚动问题的大小

我使用ncurses库在C编程(这是第一次),我有两个问题.我在ubuntu上使用默认终端(gnome终端).

1)我需要调整终端的大小.我使用了resizeter()和resize_term(),但是它们都失败了.

2)我使用scrollok()函数,问题是我丢失了滚动的行(当我回到wscrl()时,有空白行).

#include <ncurses.h>

int main() {

WINDOW *win, *win2;

int i;
char c;

initscr();
cbreak();
noecho();

win=newwin(8,20,1,1);
box(win,0,0);
win2=newwin(6,18,2,2);
scrollok(win2,1);
wrefresh(win);
wrefresh(win);

for(i=0;i<15;i++){
    c=wgetch(win2);
    if(c=='u'){
        wscrl(win2,-1);
        wrefresh(win2);
    }
    else{
        wprintw(win2,"%c\n",c);
        wrefresh(win2);
    }
}

delwin(win);
delwin(win2);
endwin();

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

c linux ncurses

6
推荐指数
2
解决办法
9977
查看次数

在调整终端大小后,Curses-endwin将重置为原始终端大小

我有一个运行正常的Curses应用程序.它可以很好地调整术语的大小,一切都很好.唯一的问题是,当endwin()调用它时,它会将终端重置为原始大小.IE,我正在使用该应用程序,我调整了我的术语,我退出了应用程序,我的术语又恢复到原始大小.

我需要做些什么来防止这种情况发生?

谢谢.

curses perl ncurses

6
推荐指数
0
解决办法
603
查看次数

ncurses基本示例 - 在调试中得到:"打开终端时出错:未知."

在ncurses libreries上做一些基本的例子,我遇到了一些问题.

实际上,我没有得到我所期望的(消息打印),并且从eclipse进入调试,我得到(在控制台区域)"错误打开终端:未知."

遵循代码:

#include <unistd.h>
#include <stdlib.h>
#include <ncurses.h>


int main() {

    initscr();

    move(5,15);
    printw("%s", "Hello world!");
    refresh();

    endwin();
    exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

编译器选项,在Eclipse控制台的"Build project"命令中提供:

make all 
Building file: ../source/Curses_01.c
Invoking: GCC C Compiler
gcc -Incurses -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"source/Curses_01.d"     -MT"source/Curses_01.d" -o"source/Curses_01.o" "../source/Curses_01.c"
Finished building: ../source/Curses_01.c

Building target: Curses_01
Invoking: GCC C Linker
gcc  -o"Curses_01"  ./source/Curses_01.o   -lcurses
Finished building target: Curses_01
Run Code Online (Sandbox Code Playgroud)

提前谢谢大家!

c eclipse linux gcc ncurses

6
推荐指数
1
解决办法
6181
查看次数

使用 ncurses 在 Linux 中构建 HelloWorld C++ 程序

我成功跑了 sudo apt-get install libncurses5-dev

在我的 Eclipse 窗口中,我尝试构建以下HelloWord.cpp程序:

#include <ncurses.h>

int main()
{
    initscr();                 /* Start curses mode     */
    printw("Hello World !!!"); /* Print Hello World    */
    refresh();                 /* Print it on to the real screen */
    getch();                   /* Wait for user input */
    endwin();                  /* End curses mode    */

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

我收到以下错误:

Invoking: GCC C++ Linker
g++ -m32 -lncurses -L/opt/lib -o "Test_V"  ./src/curseTest.o ./src/trajectory.o ./src/xJus-epos.o   -lEposCmd
/usr/bin/ld: cannot find -lncurses
collect2: error: ld returned 1 exit …
Run Code Online (Sandbox Code Playgroud)

linux ncurses

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

带有小部件的 NCurses 库

我正在寻找一个基于 Ncurses 的纯 C 库,它提供一组预制小部件(尤其是最重要的一个表格小部件)。我知道 CDK,它提供了很多小部件,但它没有提供我最需要的小部件。有没有其他库可以为我提供这个特定的功能?

编辑:请看我的评论

c ncurses

6
推荐指数
0
解决办法
344
查看次数

Ncurses和Qt互操作性

拥有基于Qt和ncurses的应用程序,在等待用户输入的同时每秒刷新屏幕的最佳方法是什么?(例如,显示时钟并获取用户输入).

我需要CPU使用率和应用程序响应能力之间的最佳折衷.

更具体的问题是,如何获得用户输入仍然使用QTimer和信号槽机制?

使用下面的代码时,计时器不起作用.

nodelay(stdscr,true); while(1) { sleep(1); getch(); processInput(); }
Run Code Online (Sandbox Code Playgroud)

c++ qt ncurses qtcore

6
推荐指数
1
解决办法
3706
查看次数

Ncurses - 多个窗口和刷新

我正在写一个小学校项目。这是一个单词下降的游戏 - 单词从顶部移动到底部。我有一个想法,制作两个窗口(一个带有界面,第二个带有移动对象)。正如您在代码中看到的那样,单词是随机的。问题是输入。我正在使用 mvwsacanw 来写这个词。当单词在不同的窗口中移动时,有没有办法在第二个窗口中写任何东西?现在这个词正在下降,当它到达底部时,第二个窗口打开,我可以输入这个词。

希望有人会帮助我。

#include <stdio.h>
#include <ncurses.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

void moving(WINDOW *move)
{
    int j,random;
    char *cmp=(char*)malloc(10*sizeof(char));
    char word[6];

    wclear(move);
    box(move, 0, 0);
    mvwprintw(move, 1, 1, "PIS");
    wrefresh(move);

    srand (time (NULL));
    random=2+rand()%7;
    for(j=0; j< random ; j++) //random word
    {
        word[j]= rand()%26+'a';
    }

    int poz = 2+rand()%24; //random position of moving word


    for(int i=1; i<18; i++)
    {
        wclear(move);
        box(move,0,0);
        mvwprintw(move,i, poz, word);
        wrefresh(move);
        usleep(300000);
    }
}

void interface(WINDOW *ui)
{
    wclear(ui);
    char *cmp=(char*)malloc(10*sizeof(char)); …
Run Code Online (Sandbox Code Playgroud)

c windows ncurses

6
推荐指数
1
解决办法
3632
查看次数

C - 使用 ncurses 获得中性背景

在这个简单的程序中(用 C 编写)

#include <ncurses.h>
#include <string.h>

int main()
{
 initscr();
 printw("line 1\n");
 printw("line 2\n");
 start_color();
 init_pair(1, COLOR_RED, COLOR_BLACK);
 printw("line 3");
 getch();
 endwin();

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

黑色背景上的红色文本打印在屏幕上。但是当我运行程序时,背景比终端的黑色背景稍亮,在Linux(Gnome终端)中。

我不想在终端的默认黑色上设置背景颜色:我想保留终端背景并将背景实际设置ncurses为透明。

有没有办法做到这一点?

注意:我试图按照这个问题中的建议将该函数放在use_default_colors();后面,但它没有用。start_color();

c linux terminal text ncurses

6
推荐指数
2
解决办法
2919
查看次数

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

当我运行我的应用程序时,我遇到了大量的输入延迟。

更多细节:当我按下“w”、“a”、“s”、“d”(我指定的输入键)时,对象会移动,但是在释放键后它会继续移动很长时间。源代码在下面,但是代码的一小部分已经被剪掉以缩短问题,但是如果下面的源代码不能编译,我将所有代码放在 github 上。 https://github.com/TreeStain/DodgeLinuxGame.git谢谢你的时间。-特里斯坦

道奇.c:

#define ASPECT_RATIO_X 2
#define ASPECT_RATIO_Y 1
#define FRAMES_PER_SECOND 60

#include <ncurses.h>
#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] = colObj;

    //halfdelay(1);

    while (1)
    {
        char in = getch();
        if (in == 'w')
            objs[0].y -= objs[0].ySpeed * ASPECT_RATIO_Y;
        if (in == 's')
            objs[0].y …
Run Code Online (Sandbox Code Playgroud)

c loops input ncurses delay

6
推荐指数
1
解决办法
1453
查看次数

在CLion CMake中链接ncurses

我正在玩ncurses.Ncurses是我安装的库,不是我自己的文件.我已经做了一些事情,但使用IDE更容易,所以我决定使用CLion(我在Linux上,所以不能使用Visual Studio).我得到了以下CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(ncurses)

set(CMAKE_C_STANDARD "${CMAKE_C_FLAGS} -Wall -Werror -lpdcurses")

set(SOURCE_FILES main.cpp ncurses.h)
add_executable(ncurses ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)

我的项目被称为ncurses我不知道这是否重要.

我得到了以下main.cpp

#include <ncurses.h>

int main() {
    initscr();
    printw("Hello");
    refresh();
    getch();
    endwin();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

/opt/clion/bin/cmake/bin/cmake --build /home/josh/ClionProjects/ncurses /cmake-build-debug --target all -- -j 4
make[2]: *** No rule to make target 'CMakeFiles/ncurses.dir/build'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/ncurses.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Run Code Online (Sandbox Code Playgroud)

我不知道问题是什么.我尝试过-lncurses,lpdcurses但是这也不起作用.它只会在构建时出错,但在IDEA本身时不会出错.

c++ ncurses

6
推荐指数
1
解决办法
3083
查看次数

标签 统计

ncurses ×10

c ×6

linux ×4

c++ ×2

curses ×1

delay ×1

eclipse ×1

gcc ×1

input ×1

loops ×1

perl ×1

qt ×1

qtcore ×1

terminal ×1

text ×1

windows ×1