Articles of getch

非阻塞getch(),ncurses

我有一些问题得到ncurses的getch()来阻止。 默认操作似乎是非阻塞的(或者我错过了一些初始化)? 我希望它在Windows中像getch()一样工作。 我曾尝试过各种版本的 timeout(3000000); nocbreak(); cbreak(); noraw(); etc… (并非全部在同一时间)。 如果可能的话,我宁愿不(明确)使用任何WINDOW 。 while循环getch(),检查一个特定的返回值也可以。

为什么getch()返回之前按任何键?

int main(int argc, char *argv[], char *env[]) { printf("Press any key to exit.\n"); getch(); return 0; } 根据手册页, getch应该等到任何键被按下 …但实际上它在按任何键之前直接返回。 (返回的值是-1 )。 为什么? 更新 我在Linux上。 我如何实现Press any key to exit. ,如果不使用getch() ? 按回车后, getchar()将只返回,这不是我想要的。

Python方法阅读按键?

我是Python的新手,我只是用Python做了一个游戏和一个菜单。 问题是,使用(raw_)input()需要我在每次按键之后按下回车键,我想这样做是为了按下向下箭头将立即select下一个菜单项,或者在游戏中向下移动。 此刻,它需要我喜欢types“下”,然后按回车。 我也做了大量的研究,但是我不想下载大型的模块(比如pygame)来实现一个keyDown()方法。 那么有没有更简单的方法,我找不到? 编辑:刚刚发现, msvcrt.getch()会做的伎俩。 这不是keyDown(),但它的工作原理。 但是,我不知道如何使用它,似乎很奇怪,在这里有什么帮助? 这是我现在所得到的: from msvcrt import getch while True: key = getch() print(key) 但是,它一直给我所有这些无意义的字节,例如,向下箭头是这样的: b'\xe0' b'P' 我不知道如何使用它们,我试图用chr()来比较,甚至使用ord(),但是不能做任何比较。 我想要做的基本上是这样的: from msvcrt import getch while True: key = getch() if key == escape: break elif key == downarrow: movedown() elif key == 'a': … 等等…有什么帮助?

如何使用kbhit和getch(C编程)

我试图创build一个函数,如果用户按下键盘上的任何button,将printf一个特定的string除了大写字母P ,如果用户按下P然后它将打破循环。 但是我不认为我正在使用_kbhit和_getch 。 我使用的数字80,因为这是80的ASCII符号….抱歉有任何混淆 void activateAlarm(int channelID) { int key = 0; while(temperatureChannel[channelID].currentTemperature > temperatureChannel[channelID].highLimit ||temperatureChannel[channelID].currentTemperature < temperatureChannel[channelID].lowLimit) { beep(350,100); if (_kbhit()) { key = _getch(); if(key == 'P'); break; } } }

在Linux上使用kbhit()和getch()

在Windows上,我有以下代码来查找input而不中断循环: #include <conio.h> #include <Windows.h> #include <iostream> int main() { while (true) { if (_kbhit()) { if (_getch() == 'g') { std::cout << "You pressed G" << std::endl; } } Sleep(500); std::cout << "Running" << std::endl; } } 但是,看到没有conio.h ,在Linux上实现这个同样的事情最简单的方法是什么?