开发者社区> 问答> 正文

如何从用户空间访问输入设备驱动程序

我目前正在开发用于触摸屏的输入子系统驱动程序。我不知道如何从用户空间访问设备,例如,如何打开应在文件系统中创建的文件。到目前为止,我所做的是:在对驱动程序进行insmod之后,在dmesg中得到以下消息:

输入:driver_name为/devices/platform/soc/3f804000.i2c/i2c-1/1-0038/input/input0

现在,当我到这个位置时,我发现了input0,它是一个目录。在此目录中,我可以找到诸如name,properties,uevent之类的文件,但此处没有文件包含触摸数据。

我的问题是,我打电话后输入子系统在哪里放置触摸数据

input_report_abs(data.input, ABS_X, coord_x);
input_report_abs(data.input, ABS_Y, coord_y);
input_sync(data.input);

展开
收起
祖安文状元 2020-01-06 15:19:55 412 0
1 条回答
写回答
取消 提交回答
  • 已解决:一旦执行insmod,在/ dev / input下会创建一个新文件,在我的情况下是event0文件。为了测试功能,您可以执行evtest input0。可以通过以下方式从用户空间程序使用此文件:

    struct input_event ev;
    FILE* fd = open("/dev/input/event0", O_RDWR);
    while(1)
    {
        int count = read(fd, &ev, sizeof(struct input_event);
        for(int i = 0; i < (int)count / sizeof(struct input_event); i++)
        {
            if(EV_KEY == ev.type) // printf ...
            if(EV_ABS == ev.type) // printf ...
        }
    }
    
    2020-01-06 15:20:01
    赞同 展开评论 打赏
问答分类:
SoC
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载