/*
* Event types
*/
#define EV_SYN 0x00
#define EV_KEY 0x01
#define EV_REL 0x02
#define EV_ABS 0x03
#define EV_MSC 0x04
#define EV_SW 0x05
#define EV_LED 0x11
#define EV_SND 0x12
#define EV_REP 0x14
#define EV_FF 0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX+1)
以上这么多事件。
但是需要你的系统支持那类事件就要设置
struct input_dev {
。。。。。。
unsigned long keybit[BITS_TO_LONGS(KEY_CNT)];
unsigned long relbit[BITS_TO_LONGS(REL_CNT)];
unsigned long absbit[BITS_TO_LONGS(ABS_CNT)];
unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];
unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];
unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];
unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
unsigned long swbit[BITS_TO_LONGS(SW_CNT)];
。。。。。。
}
set_bit(EV_KEY, buttons_dev->evbit);
set_bit(KEY_L, buttons_dev->keybit);
evbit数组是利用位图来表示支持那些事件(比如要是支持EV_KEY,就要把第数组下标为1设为1),然后还要设置每类事件里所支持哪些事件,因为一类事件可以支持很多事件,比如,按键事件,里面可以包含很多按键。
set_bit(EV_REP, buttons_dev->evbit);
这里是设置发送重复事件,所谓的重复事件,就是像我们平时电脑打字一样,上面按住某个按键不放,就会一直出现字符。这里就是在上报事件那里实现的,当你上报的事件为按下的时候,就会一直上报 input_event(buttons_dev, EV_KEY, KEY_L, 1); /* 松开 : 最后一个参数: 0-松开, 1-按下 */,直到你再次上报 input_event(buttons_dev, EV_KEY, KEY_L, 0); 这时候才认为按键松开了,才停止上报