From: Thomas H H. <th...@us...> - 2002-04-08 00:37:05
|
Update of /cvsroot/linuxconsole/ruby/linux/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv4435/linux/include/linux Modified Files: Tag: thomash-2002_04_07 input.h Log Message: BRANCH: thomash-2002_04_07 evdev.c: Added new IOCTL's to get and set the entire keymap in one shot. Added two helper functions for pointer-translation to eliminate some redundancies in the ioctl function. Added a LOT of comments to the file, mostly function headers. input.c: Added new IOCTL constants. Added new structure for use with the bulk-transfer keymap IOCTL constants. STATUS: compiles against 2.5.7 / Code is NOT Tested. Index: input.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/include/linux/input.h,v retrieving revision 1.64 retrieving revision 1.64.2.1 diff -u -d -r1.64 -r1.64.2.1 --- input.h 10 Mar 2002 12:20:56 -0000 1.64 +++ input.h 8 Apr 2002 00:37:00 -0000 1.64.2.1 @@ -55,28 +55,61 @@ /* * IOCTLs (0x00 - 0x7f) */ +#define EVIOC_MAGIC 'E' -#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ -#define EVIOCGID _IOR('E', 0x02, short[4]) /* get device ID */ -#define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */ -#define EVIOCSREP _IOW('E', 0x03, int[2]) /* get repeat settings */ -#define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */ -#define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */ +/* get driver version */ +#define EVIOCGVERSION _IOR(EVIOC_MAGIC, 0x01, int) +/* Get Device ID */ +#define EVIOCGID _IOR(EVIOC_MAGIC, 0x02, short[4]) +/* Get/Set Repeat Settings */ +#define EVIOCGREP _IOR(EVIOC_MAGIC, 0x03, int[2]) +#define EVIOCSREP _IOW(EVIOC_MAGIC, 0x03, int[2]) +/* Get/Set Scan Code to Keycode Mappings */ +#define EVIOCGKEYCODE _IOR(EVIOC_MAGIC, 0x04, int[2]) +#define EVIOCSKEYCODE _IOW(EVIOC_MAGIC, 0x04, int[2]) +/* Get/Set Scan Code to Keycode Mappings all-at-once */ +#define EVIOCGKEYMAP _IOR(EVIOC_MAGIC, 0x05, struct input_keymap) +#define EVIOCSKEYMAP _IOW(EVIOC_MAGIC, 0x05, struct input_keymap) -#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */ -#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) /* get physical location */ -#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) /* get unique identifier */ +/* Get Device Name */ +#define EVIOCGNAME(len) _IOC(_IOC_READ, EVIOC_MAGIC, 0x06, len) +/* Get Physical Location */ +#define EVIOCGPHYS(len) _IOC(_IOC_READ, EVIOC_MAGIC, 0x07, len) +/* Get Unique Identifier */ +#define EVIOCGUNIQ(len) _IOC(_IOC_READ, EVIOC_MAGIC, 0x08, len) -#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) /* get global keystate */ -#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */ -#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds status */ +/* Get Global Keystate */ +#define EVIOCGKEY(len) _IOC(_IOC_READ, EVIOC_MAGIC, 0x18, len) +/* Get All LEDS */ +#define EVIOCGLED(len) _IOC(_IOC_READ, EVIOC_MAGIC, 0x19, len) +/* Get all sounds status */ +#define EVIOCGSND(len) _IOC(_IOC_READ, EVIOC_MAGIC, 0x1a, len) -#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + ev, len) /* get event bits */ -#define EVIOCGABS(abs) _IOR('E', 0x40 + abs, int[5]) /* get abs value/limits */ +/* Get event bits */ +#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, EVIOC_MAGIC, 0x20 + ev, len) +/* Get abs value/limits */ +#define EVIOCGABS(abs) _IOR(EVIOC_MAGIC, 0x40 + abs, int[5]) -#define EVIOCSFF _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect)) /* send a force effect to a force feedback device */ -#define EVIOCRMFF _IOW('E', 0x81, int) /* Erase a force effect */ -#define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */ +/* send a force effect to a force feedback device */ +#define EVIOCSFF _IOW(EVIOC_MAGIC, 0x80, struct ff_effect) +/* Erase a Force Effect */ +#define EVIOCRMFF _IOW(EVIOC_MAGIC, 0x81, int) +/* Report number of effects playable at the same time */ +#define EVIOCGEFFECTS _IOR(EVIOC_MAGIC, 0x84, int) + +/* + * Constants defined for the input_keymap structure, and for scan=code to + * key-code mappings in general + */ +#define EVKEYMAP_MAXSIZE 512 + +/* + * Structure for the EVIOCGKEYMAP and EVIOCSKEYMAP ioctl's + */ +struct input_keymap { + __u32 ik_size; /* How many elements in the keymap */ + __u32 ik_keys[EVKEYMAP_MAXSIZE]; /* The key data */ +}; /* * Event types |