博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux Kernel input设备之描述
阅读量:4153 次
发布时间:2019-05-25

本文共 5947 字,大约阅读时间需要 19 分钟。

/**
 * struct input_dev - represents an input device * @name: name of the device * @phys: physical path to the device in the system hierarchy * @uniq: unique identification code for the device (if device has it) * @id: id of the device (struct input_id) * @propbit: bitmap of device properties and quirks * @evbit: bitmap of types of events supported by the device (EV_KEY, *	EV_REL, etc.) * @keybit: bitmap of keys/buttons this device has * @relbit: bitmap of relative axes for the device * @absbit: bitmap of absolute axes for the device * @mscbit: bitmap of miscellaneous events supported by the device * @ledbit: bitmap of leds present on the device * @sndbit: bitmap of sound effects supported by the device * @ffbit: bitmap of force feedback effects supported by the device * @swbit: bitmap of switches present on the device * @hint_events_per_packet: average number of events generated by the *	device in a packet (between EV_SYN/SYN_REPORT events). Used by *	event handlers to estimate size of the buffer needed to hold *	events. * @keycodemax: size of keycode table * @keycodesize: size of elements in keycode table * @keycode: map of scancodes to keycodes for this device * @getkeycode: optional legacy method to retrieve current keymap. * @setkeycode: optional method to alter current keymap, used to implement *	sparse keymaps. If not supplied default mechanism will be used. *	The method is being called while holding event_lock and thus must *	not sleep * @ff: force feedback structure associated with the device if device *	supports force feedback effects * @repeat_key: stores key code of the last key pressed; used to implement *	software autorepeat * @timer: timer for software autorepeat * @rep: current values for autorepeat parameters (delay, rate) * @mt: pointer to multitouch state * @absinfo: array of &struct input_absinfo elements holding information *	about absolute axes (current value, min, max, flat, fuzz, *	resolution) * @key: reflects current state of device's keys/buttons * @led: reflects current state of device's LEDs * @snd: reflects current state of sound effects * @sw: reflects current state of device's switches * @open: this method is called when the very first user calls *	input_open_device(). The driver must prepare the device *	to start generating events (start polling thread, *	request an IRQ, submit URB, etc.) * @close: this method is called when the very last user calls *	input_close_device(). * @flush: purges the device. Most commonly used to get rid of force *	feedback effects loaded into the device when disconnecting *	from it * @event: event handler for events sent _to_ the device, like EV_LED *	or EV_SND. The device is expected to carry out the requested *	action (turn on a LED, play sound, etc.) The call is protected *	by @event_lock and must not sleep * @grab: input handle that currently has the device grabbed (via *	EVIOCGRAB ioctl). When a handle grabs a device it becomes sole *	recipient for all input events coming from the device * @event_lock: this spinlock is taken when input core receives *	and processes a new event for the device (in input_event()). *	Code that accesses and/or modifies parameters of a device *	(such as keymap or absmin, absmax, absfuzz, etc.) after device *	has been registered with input core must take this lock. * @mutex: serializes calls to open(), close() and flush() methods * @users: stores number of users (input handlers) that opened this *	device. It is used by input_open_device() and input_close_device() *	to make sure that dev->open() is only called when the first *	user opens device and dev->close() is called when the very *	last user closes the device * @going_away: marks devices that are in a middle of unregistering and *	causes input_open_device*() fail with -ENODEV. * @dev: driver model's view of this device * @h_list: list of input handles associated with the device. When *	accessing the list dev->mutex must be held * @node: used to place the device onto input_dev_list * @num_vals: number of values queued in the current frame * @max_vals: maximum number of values queued in a frame * @vals: array of values queued in the current frame * @devres_managed: indicates that devices is managed with devres framework *	and needs not be explicitly unregistered or freed. */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;};

转载地址:http://swhti.baihongyu.com/

你可能感兴趣的文章
tf.tile() 用法介绍及示例
查看>>
tf.transpose()转置函数介绍
查看>>
修改numpy array的数据类型
查看>>
解决TypeError: No conversion path for dtype: dtype(‘<U39‘)错误
查看>>
np.r_和np.c_用法解析
查看>>
pandas学习笔记----日期时间类型数据运算
查看>>
求两个列表的交集、并集和补集
查看>>
数据分析中判断数据类型常用方法汇总(pandas)
查看>>
解决cannot import name ‘CuDNNLSTM‘问题
查看>>
numpy中不同维度矩阵的加减和卷积操作
查看>>
tf.round()
查看>>
pandas学习笔记------set_index()
查看>>
dataframe中类别列转数值列
查看>>
Jupyter NotebooK去掉警告
查看>>
CSPNet论文笔记
查看>>
scipy.signal.peak_prominences解析
查看>>
python产生不重复随机数
查看>>
无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
查看>>
ubuntu安装tensorflow2.1、2.2、2.3、2.4
查看>>
ubuntu18.04 安装搜狗输入法时Manage Installed Language打不开
查看>>