linux -- input子系统重要的数据结构

来源:互联网 发布:淘宝内衣模特名字大全 编辑:程序博客网 时间:2024/05/29 01:55
struct input_event {    struct timeval time;    __u16 type;    __u16 code;    __s32 value;};struct input_id {    __u16 bustype;    __u16 vendor;    __u16 product;    __u16 version;};struct input_absinfo {    __s32 value;    __s32 minimum;    __s32 maximum;    __s32 fuzz;    __s32 flat;    __s32 resolution;};struct input_keymap_entry {#define INPUT_KEYMAP_BY_INDEX   (1 << 0)    __u8  flags;    __u8  len;    __u16 index;    __u32 keycode;    __u8  scancode[32];};struct input_value {    __u16 type;    __u16 code;    __s32 value;};struct input_dev {    const char *name;    const char *phys;    const char *uniq;    struct input_id id;    unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)];    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 hint_events_per_packet;    unsigned int keycodemax;    unsigned int keycodesize;    void *keycode;    int (*setkeycode)(struct input_dev *dev,              const struct input_keymap_entry *ke,              unsigned int *old_keycode);    int (*getkeycode)(struct input_dev *dev,              struct input_keymap_entry *ke);    struct ff_device *ff;    unsigned int repeat_key;    struct timer_list timer;    int rep[REP_CNT];    struct input_mt *mt;    struct input_absinfo *absinfo;    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 (*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 __rcu *grab;    spinlock_t event_lock;    struct mutex mutex;    unsigned int users;    bool going_away;    struct device dev;    struct list_head    h_list;    struct list_head    node;    unsigned int num_vals;    unsigned int max_vals;    struct input_value *vals;    bool devres_managed;};struct input_handler {    void *private;    void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);    void (*events)(struct input_handle *handle,               const struct input_value *vals, unsigned int count);    bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value);    bool (*match)(struct input_handler *handler, struct input_dev *dev);    int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);    void (*disconnect)(struct input_handle *handle);    void (*start)(struct input_handle *handle);    bool legacy_minors;    int minor;    const char *name;    const struct input_device_id *id_table;    struct list_head    h_list;    struct list_head    node;};struct input_handle {    void *private;    int open;    const char *name;    struct input_dev *dev;    struct input_handler *handler;    struct list_head    d_node;    struct list_head    h_node;};extern struct class input_class;struct ff_device {}
原创粉丝点击