linux4.9版本增加event事件上报流程
1:先声明一个input_dev设备,并初始化为空。
static struct input_dev* sif_input_dev = NULL;
2:在驱动入口函数中申请input_dev设备空间。
sif_input_dev = input_allocate_device();
3:设置event事件名
sif_input_dev->name = "sif_event";
4:配置event事件类型和code
set_bit(EV_MSC, sif_input_dev->evbit);
set_bit(MSC_RAW, sif_input_dev->mscbit);
5:将初始化后的event事件注册进入input子系统
input_register_device(sif_input_dev)
6:设置event事件对应code的值和上报
input_event(sif_input_dev, EV_MSC, MSC_RAW, 1);
input_sync(sif_input_dev);
应用层监听该event事件
1:使用阻塞方式打开上述驱动创建的设备节点
open(INPUT_DEV, O_RDONLY);
2:阻塞读取该设备数据
read(fd, &event, sizeof(event));
3:获取底层上报的类型/code/和code的值
printf("type:%d, code:%d, value:%d\n", event.type, event.code, event.value);