以下代码可能存在一些问题。在搜索了在linux中获取键盘输入的方法之后在网上找到它。我已经验证了键盘输入的正确事件。它对我来说似乎有点可疑的原因是无论我放在文件路径中,它似乎总是通过错误检查(open调用返回大于0的东西)。有些事情显然是错误的,所以欢迎提出建议。
除非您将exe作为su运行,否则这将无法正常运行。
当我想读取我的击键时,我是否只是在无限循环中使用文件描述符上的fgets之类的东西(甚至可以工作)?我希望它能够不断轮询键盘输入。有关解码键盘事件输入的任何提示?
再次感谢!我的这个项目可能过于雄心勃勃,因为我做了任何编码已经很长时间了。
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <fcntl.h>
#include <linux/input.h>
#include <unistd.h>
// Edit this line to reflect your filepath
#define FILE_PATH "/dev/input/event4"
int main()
{
printf("Starting KeyEvent Module\n");
size_t file; //will change this to int file; to make it possible to be negative
const char *str = FILE_PATH;
printf("File Path: %s\n", str);
error check here
if((file = open(str, O_RDONLY)) < 0)
{
printf("ERROR:File can not open\n");
exit(0);
}
struct input_event event[64];
size_t reader;
reader = read(file, event, sizeof(struct input_event) * 64);
printf("DO NOT COME HERE...\n");
close(file);
return 0;
}
答案 0 :(得分:2)
问题在于:
size_t file;
size_t是无符号的,因此它总是> gt = = 0
应该是:int file;
答案 1 :(得分:0)
open调用返回大于0的内容
open
会返回int
,但您输入的是无符号变量(size_t
通常是无符号的),因此您无法检测到它何时为<0