Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

struct_input_handler(9) [centos man page]

STRUCT 
INPUT_HANDLER(9) Input Subsystem STRUCT INPUT_HANDLER(9) NAME
struct_input_handler - implements one of interfaces for input devices SYNOPSIS
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; }; MEMBERS
private driver-specific data event event handler. This method is being called by input core with interrupts disabled and dev->event_lock spinlock held and so it may not sleep events event sequence handler. This method is being called by input core with interrupts disabled and dev->event_lock spinlock held and so it may not sleep filter similar to event; separates normal event handlers from "filters". match called after comparing device's id with handler's id_table to perform fine-grained matching between device and handler connect called when attaching a handler to an input device disconnect disconnects a handler from input device start starts handler for given handle. This function is called by input core right after connect method and also when a process that "grabbed" a device releases it legacy_minors set to true by drivers using legacy minor ranges minor beginning of range of 32 legacy minors for devices this driver can provide name name of the handler, to be shown in /proc/bus/input/handlers id_table pointer to a table of input_device_ids this driver can handle h_list list of input handles associated with the handler node for placing the driver onto input_handler_list DESCRIPTION
Input handlers attach to input devices and create input handles. There are likely several handlers attached to any given input device at the same time. All of them will get their copy of input event generated by the device. The very same structure is used to implement input filters. Input core allows filters to run first and will not pass event to regular handlers if any of the filters indicate that the event should be filtered (by returning true from their filter method). Note that input core serializes calls to connect and disconnect methods. COPYRIGHT
Kernel Hackers Manual 3.10 June 2014 STRUCT INPUT_HANDLER(9)

Check Out this Related Man Page

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,unsigned int scancode, unsigned int keycode); int (* getkeycode) (struct input_dev *dev,unsigned int scancode, unsigned 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; bool going_away; struct device dev; struct list_head h_list; struct list_head node; }; 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. The method is being called while holding event_lock and thus must not sleep getkeycode optional method to retrieve current keymap. 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 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) absres[ABS_MAX + 1] resolution used for events coming form absolute axes 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 COPYRIGHT
Kernel Hackers Manual 2.6. July 2010 STRUCT INPUT_DEV(9)
Man Page