getch 返回-1?

发布于 2024-10-04 08:55:56 字数 525 浏览 1 评论 0原文

他们询问如何捕获 F11 或 insand getchr 等键,这些键不会返回任何内容,而且我找不到任何可以接受来自输入事件的原始输入的方法。

我现在正在尝试在 C++ 程序中使用 ncurses/curses 来捕获这些键。

我要测试的程序很简单,基本上是:

#include <stdlib.h>
#include <stdio.h>
#include <curses.h>
int main() {
    int car;
    while(c != '\b') {
        c = getch();
        printf("%i", c);
    }
    return 0;
}

我当然使用它与另一个 getch() 函数相同,但它无限次返回 -1 ..我在 Arch linux 中使用最新的内核,在标准终端中(也在 xterm 中测试)

是否需要打开某个开关才能在库中使用此 getch() ?

They asked how to capture keys such as F11 or insand getchr does not return anything for those keys, and there is nothing I can find working that accepts raw input from input events..

I am now trying ncurses/curses in a C++ program to capture these keys.

My program to test is simple, it is basically:

#include <stdlib.h>
#include <stdio.h>
#include <curses.h>
int main() {
    int car;
    while(c != '\b') {
        c = getch();
        printf("%i", c);
    }
    return 0;
}

I use it of course the same as another getch() function, but it returns -1 infinite times.. I am using a recent kernel in Arch linux, in a standard terminal (tested in xterm as well)

Is there a certain switch I need to switch on in order to use this getch() in the libraries?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

朦胧时间 2024-10-11 08:55:56

在调用getch()之前,您需要调用initscr();来初始化curses。

此外,您可能需要非行缓冲模式,因此您还应该调用 cbreak(); noecho();(echo 模式不应与 cbreak 模式一起使用)。

You need to call initscr(); to initialise curses before calling getch().

In addition, you probably want non-line-buffered mode, so you should also call cbreak(); noecho(); (echo mode should not be used with cbreak mode).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文