微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

getch返回-1?

他们询问如何捕获诸如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()?

解决方法

你需要调用initscr();在调用getch()之前初始化curses.

另外,你可能想要非行缓冲模式,所以你也应该调用cbreak(); NOECHO(); (回声模式不应与cbreak模式一起使用).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐