----------------------------------------------------------------------------------------------------------------
----------------关于 事件类型,代码,已经报告的值
初始化的时候:
button_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT(EV_SYN);
//set_bit(EV_KEY, button_dev->evbit)//支持EV_KEY事件set_bit(KEY_1, button_dev->keybit);
set_bit(KEY_2, button_dev->keybit);
set_bit(KEY_3, button_dev->keybit);
set_bit(KEY_4, button_dev->keybit);
set_bit(KEY_5, button_dev->keybit);
set_bit(KEY_6, button_dev->keybit);
在按键中断函数中
input_report_key(button_dev, KEY_1, 0);
input_report_key(button_dev, KEY_1, 1);
KEY_1只是一个逻辑值,自己定义的值。当应用程序去读的时候就发送出去,具体有什么含义自己定义。
struct input_event ev_key;
buttons_fd = open("/dev/event0", O_RDWR);
read(buttons_fd,&ev_key,sizeof(struct input_event));
printf("type:%d,code:%d,value:%d\n", ev_key.type,ev_key.code-1,ev_key.value);
结果如果读取就会打印 其中type就是事件类型EV_KEY,value表示按下还是弹起0或者1,code代表哪一个按键比如KEY_1。
------------------------------------------------------------------------------------------------
--------------初始化
button_dev = input_allocate_device();
if (!button_dev) {
printk(KERN_ERR "Unable to allocate the input device !!\n");
return -ENOMEM;
}
button_dev->name = "s3c2440_button";
button_dev->id.bustype = BUS_RS232;
button_dev->id.vendor = 0xDEAD;
button_dev->id.product = 0xBEEF;
button_dev->id.version = 0x0100;