STRUCT INPUT_DEV(9) | Input Subsystem | STRUCT INPUT_DEV(9) |
NAME¶
struct_input_dev - represents an input device
SYNOPSIS¶
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 (* 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;
bool going_away;
struct device dev;
struct list_head h_list;
struct list_head node; #ifndef __GENKSYMS__
unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)];
unsigned int hint_events_per_packet;
struct input_mt * mt; #endif };
MEMBERS¶
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)
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
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
getkeycode
optional method to retrieve current keymap. If not
supplied default mechanism will be used
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
sync
set to 1 when there were no new events since last
EV_SYNC
abs[ABS_MAX + 1]
current values for reports from absolute axes
rep[REP_MAX + 1]
current values for autorepeat parameters (delay,
rate)
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
absmax[ABS_MAX + 1]
maximum values for events coming from absolute axes
absmin[ABS_MAX + 1]
minimum values for events coming from absolute axes
absfuzz[ABS_MAX + 1]
describes noisiness for axes
absflat[ABS_MAX + 1]
size of the center flat position (used by joydev)
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.
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
propbit[BITS_TO_LONGS(INPUT_PROP_CNT)]
bitmap of device properties and quirks
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.
mt
pointer to multitouch state
COPYRIGHT¶
May 2024 | Kernel Hackers Manual 2.6. |