From a383facdaf5d1d9220d9a87865e446a85a1fc9f2 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Wed, 27 Jul 2022 00:40:17 +0200 Subject: Correct info about Sixaxis and add the Linux standard and a 6-button extension of it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libgamepad.h | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/libgamepad.h b/libgamepad.h index 404e526..3e884cc 100644 --- a/libgamepad.h +++ b/libgamepad.h @@ -583,9 +583,9 @@ enum libgamepad_game_controller { * Released 2006-11-11 for PlayStation 3 * * Note: - * - Newer Linux drivers no longer report pressure on the D-pad - * (reason: "there is no good way for reporting them") - * - Newer Linux drivers no longer report pressure L1, L2, Triangle, Square, Cross, or Circle + * - Newer Linux drivers no longer report pressure on the D-pad, L1, and R1 + * (reason: "there is no good way for reporting them", a standard is however defined) + * - Newer Linux drivers no longer report pressure Triangle, Square, Cross, or Circle * (reason: "there is no good way for reporting them") * - Newer Linux drivers no longer report gyroscope readings * (reason: "very difficult to manage from within the driver even to get @@ -1059,7 +1059,61 @@ enum libgamepad_game_controller { * Digital "START" (colour: blue, shape: corda-cut circle) * button north of right thumb position */ - LIBGAMEPAD_CONTROLLER_GAME_GEAR + LIBGAMEPAD_CONTROLLER_GAME_GEAR, + + /** + * Linux reference gamepad layout + * + * Version documented since Linux 4.12 in Documentation/input/gamepad + * + * There are multiple substandard, this one includes all features + * + * Layout: + * Analogue BTN_DPAD_{LEFT,RIGHT,UP,DOWN}/ABS_HAT0X/ABS_HAT0Y D-pad at upper left thumb position + * Clickable analogue BTN_THUMBL/ABS_X/ABS_Y stick at lower left thumb position + * Clickable analogue BTN_THUMBR/ABS_RX/ABS_RY stick at lower right thumb position + * 4 digital buttons at upper right thumb position: + * - North = BTN_NORTH (= BTN_X) + * - West = BTN_WEST (= BTN_Y) + * - South = BTN_SOUTH (= BTN_A) + * - East = BTN_EAST (= BTN_B) + * Analogue button BTN_TL/ABS_HAT1Y at upper left index finger position + * Analogue button BTN_TR/ABS_HAT1X at upper right index finger position + * Analogue button BTN_TL2/ABS_HAT1Y at lower left index finger position + * Analogue button BTN_TR2/ABS_HAT1X at lower right index finger position + * 3 digital button north of the centre + * - West = BTN_SELECT + * - East = BTN_START + * - South = BTN_MODE + */ + LIBGAMEPAD_CONTROLLER_LINUX_4_12, + + /** + * 6-button extension of `LIBGAMEPAD_CONTROLLER_LINUX_4_12` + * + * There are multiple substandard, this one includes all features + * + * Layout: + * Analogue BTN_DPAD_{LEFT,RIGHT,UP,DOWN}/ABS_HAT0X/ABS_HAT0Y D-pad at upper left thumb position + * Clickable analogue BTN_THUMBL/ABS_X/ABS_Y stick at lower left thumb position + * Clickable analogue BTN_THUMBR/ABS_RX/ABS_RY stick at lower right thumb position + * 4 digital buttons at upper right thumb position: + * - NE of N = BTN_X (= BTN_NORTH) + * - North = BTN_Y (= BTN_WEST) + * - West = BTN_Z + * - South = BTN_A (= BTN_SOUTH) + * - East = BTN_B (= BTN_EAST) + * - NE of E = BTN_C + * Analogue button BTN_TL/ABS_HAT1Y at upper left index finger position + * Analogue button BTN_TR/ABS_HAT1X at upper right index finger position + * Analogue button BTN_TL2/ABS_HAT1Y at lower left index finger position + * Analogue button BTN_TR2/ABS_HAT1X at lower right index finger position + * 3 digital button north of the centre + * - West = BTN_SELECT + * - East = BTN_START + * - South = BTN_MODE + */ + LIBGAMEPAD_CONTROLLER_LINUX_4_12_6BTN_EXT }; -- cgit v1.2.3-70-g09d2