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
|