有谁知道这些的定义

2019-08-01 18:19发布

求高手解答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;
};
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
jiahy
1楼-- · 2019-08-01 20:16
struct input_dev {
          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链表                        */
};
wyjie
2楼-- · 2019-08-01 22:46
char *name;

       //设备名字,如键盘名字。

char *phys;

       //设备文件节点名,如input/kbd0。

char *uniq;

       //全球唯一的ID号。
jiahy
3楼-- · 2019-08-02 03:20
嗯,补充的好
jlyuan
4楼-- · 2019-08-02 04:07
 精彩回答 2  元偷偷看……
午夜粪车
5楼-- · 2019-08-02 08:02
好详细,多谢了哈
huangfeng33
6楼-- · 2019-08-02 10:02
进来学习一下,太多成员了,往往不知道使用时要设置哪些成员了。

一周热门 更多>