我正在开发一个在Linux系统上使用的CHIP-8模拟器。据我所知,我需要从(任何)16个键获取键盘输入并将其Map到十六进制键盘。一旦我获得输入,我就可以毫不费力地将它们Map到16个CHIP-8键。然而,我不知道如何实际判断一个键是否被按下。我相信在Java中我会使用keylistener,但我在C++中找不到任何类似的Linux。有没有一种方法可以告诉我在任何给定的时间按下了什么(如果有的话)特定的键?类似于我可以调用的getKeyState函数?先谢谢你了。
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。
ncurses
ncurses.h
curses.h
/usr/include
/dev/input/eventX
kyvafyod2#
您的程序可以从标准输入中读取字符。您可以使用fgets()库函数来执行阅读。例如,参见:
fgets()
pbgvytdp3#
在Linux中,你可以用途:getchar头文件中的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"; } }
3条答案
按热度按时间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。kyvafyod2#
您的程序可以从标准输入中读取字符。
您可以使用
fgets()
库函数来执行阅读。例如,参见:
pbgvytdp3#
在Linux中,你可以用途:
getchar
头文件中的getchar
函数下面是一个例子:或者在windowsOS上,可以在conio. h头文件中使用getch()示例: