繁体   English   中英

在C中使用系统调用读取键盘事件

[英]Using system calls in C to read keyboard events

只是想寻求了解。 我正在编写一个小程序,该程序将从键盘读取按键事件,并触发某些事件(使用switch语句)。 我正在做一些假设,并尝试将键盘像要读取的txt文件一样对待。

最简单的方法让我有些困惑。

我想做的是打开文件(键盘event4),并使用fgets之类的东西在无限的while循环中逐字符读取它,然后使用switch语句退出循环并退出。

我陷入困境的是这些是系统调用,而我基本上不确定如何处理它们。

下面的代码绝对不会编译,只是将其放在此处以粗略地展示我正在尝试做的事情。

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    // errors on opening
    int fd = open("/dev/input/event4", O_RDONLY);
    if(fd < 0)
    {
        printf("error while opening/n");
        return 1;
    }

    int keystroke = 0;

    while (1)
    {
       keystroke = fgetsc(fd);

       switch(keystroke)
       {
           case '1' :
              break;
           case '2' :
              break;
           case '3' : 
              break;
           default:
              printf("waiting for 1, 2, 3/n");
          }

    close(fd);
    return 0;
}

1)读取“原始键盘输入”通常取决于操作系统。 例如,如果您使用的是Windows vs Linux,则API和技术的差异可能很大。

2)听起来您使用的是* nix变体(例如Linux或MacOS)。 如果您想自己做所有的“垃圾”工作,这里有个很棒的“方法”:

3)您需要将键盘设备置于“原始”,“无缓冲”模式才能读取击键。 除其他事项外...

4)但是,我鼓励您利用更高级别的库,例如ncursesSDL

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM