'\" t .\" Title: struct input_handler .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: January 2017 .\" Manual: Input Subsystem .\" Source: Kernel Hackers Manual 4.8.15 .\" Language: English .\" .TH "STRUCT INPUT_HANDLER" "9" "January 2017" "Kernel Hackers Manual 4\&.8\&." "Input Subsystem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" struct_input_handler \- implements one of interfaces for input devices .SH "SYNOPSIS" .sp .nf 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; }; .fi .SH "MEMBERS" .PP private .RS 4 driver\-specific data .RE .PP event .RS 4 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 .RE .PP events .RS 4 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 .RE .PP filter .RS 4 similar to \fIevent\fR; separates normal event handlers from \(lqfilters\(rq\&. .RE .PP match .RS 4 called after comparing device\*(Aqs id with handler\*(Aqs id_table to perform fine\-grained matching between device and handler .RE .PP connect .RS 4 called when attaching a handler to an input device .RE .PP disconnect .RS 4 disconnects a handler from input device .RE .PP start .RS 4 starts handler for given handle\&. This function is called by input core right after \fBconnect\fR method and also when a process that \(lqgrabbed\(rq a device releases it .RE .PP legacy_minors .RS 4 set to \fBtrue\fR by drivers using legacy minor ranges .RE .PP minor .RS 4 beginning of range of 32 legacy minors for devices this driver can provide .RE .PP name .RS 4 name of the handler, to be shown in /proc/bus/input/handlers .RE .PP id_table .RS 4 pointer to a table of input_device_ids this driver can handle .RE .PP h_list .RS 4 list of input handles associated with the handler .RE .PP node .RS 4 for placing the driver onto input_handler_list .RE .SH "DESCRIPTION" .PP 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\&. .PP 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 \fBtrue\fR from their \fBfilter\fR method)\&. .PP Note that input core serializes calls to \fBconnect\fR and \fBdisconnect\fR methods\&. .SH "COPYRIGHT" .br