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

时间:2019-07-03 15:34:40

标签: linux linux-kernel linux-device-driver

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

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

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

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

[^\\/]+

1 个答案:

答案 0 :(得分:0)

已解决: 完成 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 ...
    }
}

希望这对某人有帮助,因为我觉得文档中对此没有足够的介绍。