input: document gamepad API and add extra keycodes
authorDavid Herrmann <dh.herrmann@gmail.com>
Sat, 15 Jun 2013 13:32:44 +0000 (15:32 +0200)
committerJiri Kosina <jkosina@suse.cz>
Thu, 27 Jun 2013 09:51:31 +0000 (11:51 +0200)
Until today all gamepad input drivers report their data differently. It is
nearly impossible to write applications for more than one device in a
generic way. Therefore, this patch introduces a uniform gamepad API which
will be used for all new drivers.

Instead of mapping buttons by their labels, we now map them by position.
This allows applications to work with any gamepad regardless of the labels
on the buttons. Furthermore, we standardize the ABS_* codes for analog
triggers and sticks.

For D-Pads the long overdue BTN_DPAD_* codes are introduced. They should
be fairly obvious how to use. To avoid confusion, the action buttons now
have BTN_EAST/SOUTH/WEST/NORTH aliases.

Reported-by: Todd Showalter <todd@electronjump.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
include/uapi/linux/input.h

index 4649ee35b6052e7ef967b6323003344879774826..8f82ad29fc309fe5a8a816039ecbb165bdc4205b 100644 (file)
@@ -507,10 +507,14 @@ struct input_keymap_entry {
 
 #define BTN_GAMEPAD            0x130
 #define BTN_A                  0x130
+#define BTN_SOUTH              0x130
 #define BTN_B                  0x131
+#define BTN_EAST               0x131
 #define BTN_C                  0x132
 #define BTN_X                  0x133
+#define BTN_NORTH              0x133
 #define BTN_Y                  0x134
+#define BTN_WEST               0x134
 #define BTN_Z                  0x135
 #define BTN_TL                 0x136
 #define BTN_TR                 0x137
@@ -707,6 +711,11 @@ struct input_keymap_entry {
 #define KEY_ATTENDANT_TOGGLE   0x21d   /* Attendant call on or off */
 #define KEY_LIGHTS_TOGGLE      0x21e   /* Reading light on or off */
 
+#define BTN_DPAD_UP            0x220
+#define BTN_DPAD_DOWN          0x221
+#define BTN_DPAD_LEFT          0x222
+#define BTN_DPAD_RIGHT         0x223
+
 #define BTN_TRIGGER_HAPPY              0x2c0
 #define BTN_TRIGGER_HAPPY1             0x2c0
 #define BTN_TRIGGER_HAPPY2             0x2c1