求高手解答input_dev各个成员的含义?
struct input_dev {
const char *name;
const char *phys;
const char *uniq;
struct input_id id;
unsigned long evbit[BITS_TO_LONGS(EV_CNT)];
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)];
unsigned int keycodemax;
unsigned int keycodesize;
void *keycode;
int (*setkeycode)(struct input_dev *dev, int scancode, int keycode);
int (*getkeycode)(struct input_dev *dev, int scancode, int *keycode);
struct ff_device *ff;
unsigned int repeat_key;
struct timer_list timer;
int sync;
int abs[ABS_MAX + 1];
int rep[REP_MAX + 1];
unsigned long key[BITS_TO_LONGS(KEY_CNT)];
unsigned long led[BITS_TO_LONGS(LED_CNT)];
unsigned long snd[BITS_TO_LONGS(SND_CNT)];
unsigned long sw[BITS_TO_LONGS(SW_CNT)];
int absmax[ABS_MAX + 1];
int absmin[ABS_MAX + 1];
int absfuzz[ABS_MAX + 1];
int absflat[ABS_MAX + 1];
int absres[ABS_MAX + 1];
int (*open)(struct input_dev *dev);
void (*close)(struct input_dev *dev);
int (*flush)(struct input_dev *dev, struct file *file);
int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
struct input_handle *grab;
spinlock_t event_lock;
struct mutex mutex;
unsigned int users;
int going_away;
struct device dev;
struct list_head h_list;
struct list_head node;
};
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
constchar *name; /*设备名 */
constchar *phys;
constchar *uniq;
structinput_id id; /*用于匹配事件处理层handler */
unsignedlong evbit[BITS_TO_LONGS(EV_CNT)]; /*用于记录支持的事件类型的位图*/
unsignedlong keybit[BITS_TO_LONGS(KEY_CNT)]; /*记录支持的按键值的位图 */
unsignedlong relbit[BITS_TO_LONGS(REL_CNT)]; /*记录支持的相对坐标的位图 */
unsignedlong absbit[BITS_TO_LONGS(ABS_CNT)]; /*记录支持的绝对坐标的位图 */
unsignedlong mscbit[BITS_TO_LONGS(MSC_CNT)];
unsignedlong ledbit[BITS_TO_LONGS(LED_CNT)]; /*led */
unsignedlong sndbit[BITS_TO_LONGS(SND_CNT)]; /*beep */
unsignedlong ffbit[BITS_TO_LONGS(FF_CNT)];
unsignedlong swbit[BITS_TO_LONGS(SW_CNT)];
unsignedint keycodemax; /*支持的按键值的个数 */
unsignedint keycodesize; /*每个键值的字节数 */
void *keycode; /*存储按键值的数组首地址 */
int(*setkeycode)(struct input_dev *dev, int scancode, int keycode); /* 修改键值的函数,可选 */
int(*getkeycode)(struct input_dev *dev, int scancode, int *keycode); /* 获取扫描码的键值,可选 */
structff_device *ff;
unsignedint repeat_key; /*最近一次按键值,用于连击 */
structtimer_list timer; /*自动连击计时器 */
intsync; /*最后一次同步后没有新的事件置1*/
intabs[ABS_MAX + 1]; /* 当前各个坐标的值 */
int rep[REP_MAX + 1]; /*自动连击的参数 */
unsigned longkey[BITS_TO_LONGS(KEY_CNT)]; /*反映当前按键状态的位图 */
unsignedlong led[BITS_TO_LONGS(LED_CNT)]; /*反映当前led状态的位图 */
unsignedlong snd[BITS_TO_LONGS(SND_CNT)]; /*反映当前beep状态的位图 */
unsignedlong sw[BITS_TO_LONGS(SW_CNT)];
intabsmax[ABS_MAX + 1]; /*记录各个坐标的最大值 */
intabsmin[ABS_MAX + 1]; /*记录各个坐标的最小值 */
intabsfuzz[ABS_MAX + 1]; /*记录各个坐标的分辨率 */
intabsflat[ABS_MAX + 1]; /*记录各个坐标的基准值 */
int(*open)(struct input_dev *dev); /*打开函数 */
void(*close)(struct input_dev *dev); /*关闭函数 */
int(*flush)(struct input_dev *dev, struct file *file); /* 断开连接时冲洗数据 */
int(*event)(struct input_dev *dev, unsigned int type, unsigned int code, intvalue); /* 回调函数,可选 */
structinput_handle *grab;
spinlock_tevent_lock;
structmutex mutex;
unsignedint users;
intgoing_away;
structdevice dev;
structlist_head h_list; /*handle链表 */ structlist_head node; /*input_dev链表 */
};
//设备名字,如键盘名字。
char *phys;
//设备文件节点名,如input/kbd0。
char *uniq;
//全球唯一的ID号。
一周热门 更多>