Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

input: document gamepad API and add extra keycodes

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>

authored by

David Herrmann and committed by
Jiri Kosina
d09bbfd2 5b22b91a

+9
+9
include/uapi/linux/input.h
··· 507 507 508 508 #define BTN_GAMEPAD 0x130 509 509 #define BTN_A 0x130 510 + #define BTN_SOUTH 0x130 510 511 #define BTN_B 0x131 512 + #define BTN_EAST 0x131 511 513 #define BTN_C 0x132 512 514 #define BTN_X 0x133 515 + #define BTN_NORTH 0x133 513 516 #define BTN_Y 0x134 517 + #define BTN_WEST 0x134 514 518 #define BTN_Z 0x135 515 519 #define BTN_TL 0x136 516 520 #define BTN_TR 0x137 ··· 710 706 #define KEY_ATTENDANT_OFF 0x21c 711 707 #define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */ 712 708 #define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */ 709 + 710 + #define BTN_DPAD_UP 0x220 711 + #define BTN_DPAD_DOWN 0x221 712 + #define BTN_DPAD_LEFT 0x222 713 + #define BTN_DPAD_RIGHT 0x223 713 714 714 715 #define BTN_TRIGGER_HAPPY 0x2c0 715 716 #define BTN_TRIGGER_HAPPY1 0x2c0