October 2017
Intermediate to advanced
586 pages
14h 8m
English
First of all, the main file to include, in order to interface with the input subsystem is linux/input.h:
#include <linux/input.h>
No matter what type of input device it is, and what type of event it sends, an input device is represented in the kernel as an instance of struct input_dev:
struct input_dev { const char *name; const char *phys; 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 int repeat_key; int rep[REP_CNT]; struct input_absinfo *absinfo; unsigned long key[BITS_TO_LONGS(KEY_CNT)]; int (*open)(struct input_dev *dev); ...