other versions
- wheezy 3.2.78-1
STRUCT INPUT_DEV(9) | Input Subsystem | STRUCT INPUT_DEV(9) |
NAME¶
struct_input_dev - represents an input deviceSYNOPSIS¶
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_slot * mt; int mtsize; int slot; int trkid; 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; bool sync; struct device dev; struct list_head h_list; struct list_head node; };
MEMBERS¶
namename 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[BITS_TO_LONGS(INPUT_PROP_CNT)]
bitmap of device properties and quirks
evbit[BITS_TO_LONGS(EV_CNT)]
bitmap of types of events supported by the
device (EV_KEY, EV_REL, etc.)
keybit[BITS_TO_LONGS(KEY_CNT)]
bitmap of keys/buttons this device has
relbit[BITS_TO_LONGS(REL_CNT)]
bitmap of relative axes for the device
absbit[BITS_TO_LONGS(ABS_CNT)]
bitmap of absolute axes for the device
mscbit[BITS_TO_LONGS(MSC_CNT)]
bitmap of miscellaneous events supported by
the device
ledbit[BITS_TO_LONGS(LED_CNT)]
bitmap of leds present on the device
sndbit[BITS_TO_LONGS(SND_CNT)]
bitmap of sound effects supported by the
device
ffbit[BITS_TO_LONGS(FF_CNT)]
bitmap of force feedback effects supported by
the device
swbit[BITS_TO_LONGS(SW_CNT)]
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
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
getkeycode
optional legacy method to retrieve current
keymap.
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[REP_CNT]
current values for autorepeat parameters
(delay, rate)
mt
pointer to array of struct input_mt_slot
holding current values of tracked contacts
mtsize
number of MT slots the device uses
slot
MT slot currently being transmitted
trkid
stores MT tracking ID for the current
contact
absinfo
array of struct input_absinfo elements holding
information about absolute axes (current value, min, max, flat, fuzz,
resolution)
key[BITS_TO_LONGS(KEY_CNT)]
reflects current state of device's
keys/buttons
led[BITS_TO_LONGS(LED_CNT)]
reflects current state of device's LEDs
snd[BITS_TO_LONGS(SND_CNT)]
reflects current state of sound effects
sw[BITS_TO_LONGS(SW_CNT)]
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 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.
sync
set to true when there were no new
events since last EV_SYN
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
COPYRIGHT¶
March 2016 | Kernel Hackers Manual 3.2. |