linux 如何在C++中确定按键

z9smfwbn  于 2023-04-05  发布在  Linux
关注(0)|答案(3)|浏览(157)

我正在开发一个在Linux系统上使用的CHIP-8模拟器。据我所知,我需要从(任何)16个键获取键盘输入并将其Map到十六进制键盘。一旦我获得输入,我就可以毫不费力地将它们Map到16个CHIP-8键。
然而,我不知道如何实际判断一个键是否被按下。我相信在Java中我会使用keylistener,但我在C++中找不到任何类似的Linux。有没有一种方法可以告诉我在任何给定的时间按下了什么(如果有的话)特定的键?类似于我可以调用的getKeyState函数?
先谢谢你了。

9o685dep

9o685dep1#

ncurses. NCURSES Programming HOWTO上有这个教程。我已经确认在我的MacBook Pro上,Mavericks 10.9.1,安装了Xcode命令行工具,ncurses.h是到curses.h的符号链接,都位于/usr/include中。这是NCURSES Introduction page
我自己并没有创建一个特定的类。但是,在/dev/input/eventX上搜索,其中X似乎是0或1,找到了这两个独立的帖子:Read from /dev/input和linux keypress events

kyvafyod

kyvafyod2#

您的程序可以从标准输入中读取字符。
您可以使用fgets()库函数来执行阅读。
例如,参见:

pbgvytdp

pbgvytdp3#

在Linux中,你可以用途:getchar头文件中的getchar函数下面是一个例子:

#include <iostream>
#include <stdio.h>
int main() {
char pressedKey;
std::cout << "Press the key 'A' to continue: ";
pressedKey = getchar();
if(pressedKey == 'A') {
std::cout << "Lets continue\n";
} else {
return;
}
}

或者在windowsOS上,可以在conio. h头文件中使用getch()示例:

#include <iostream>
#include <conio.h>
int main() {
std::cout << "Press any key to continue: ";
int key = getch();
std::cout << "You pressed: " << key << "\n";
if(key == 'k' || key == 'K') {
std::cout << "You pressed k, i love letter k.\n";
}
}

相关问题