]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Input: Add and document BTN_GRIP*
authorVicki Pfau <vi@endrift.com>
Sun, 27 Jul 2025 08:15:17 +0000 (01:15 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 27 Jul 2025 08:41:20 +0000 (01:41 -0700)
Many controllers these days have started including grip buttons. As
there has been no particular assigned BTN_* constants for these, they've
been haphazardly assigned to BTN_TRIGGER_HAPPY*. Unfortunately, the
assignment of these has varied significantly between drivers.

Add and document new constants for these grip buttons.

Signed-off-by: Vicki Pfau <vi@endrift.com>
Link: https://lore.kernel.org/r/20250702040102.125432-2-vi@endrift.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Documentation/input/gamepad.rst
drivers/hid/hid-debug.c
include/uapi/linux/input-event-codes.h

index 2bba721aa20b6dc2015baec75c4e4f9711053814..0c918b6f288b3cfef66846e866db35f30103f381 100644 (file)
@@ -190,6 +190,19 @@ Gamepads report the following events:
 
   Rumble is advertised as FF_RUMBLE.
 
+- Grip buttons:
+
+  Many pads include buttons on the rear, usually referred to as either grip or
+  rear buttons, or paddles. These are often reprogrammable by the firmware to
+  appear as "normal" buttons, but are sometimes exposed to software too. Some
+  notable examples of this are the Steam Deck, which has R4, R5, L4, and L5 on
+  the back; the Xbox Elite pads, which have P1-P4; and the Switch 2 Pro
+  Controller, which has GL and GR.
+
+  For these controllers, BTN_GRIPR and BTN_GRIPR2 should be used for the top
+  and bottom (if present) right grip button(s), and BTN_GRIPL and BTN_GRIPL2
+  should be used for the top and bottom (if present) left grip button(s).
+
 - Profile:
 
   Some pads provide a multi-value profile selection switch. Examples include
index 8433306148d57887f855578b8386bd0473cad612..3cd9c1150cdfff46caf27c460b5c412c28f49c95 100644 (file)
@@ -3291,6 +3291,8 @@ static const char *keys[KEY_MAX + 1] = {
        [BTN_TR2] = "BtnTR2",                   [BTN_SELECT] = "BtnSelect",
        [BTN_START] = "BtnStart",               [BTN_MODE] = "BtnMode",
        [BTN_THUMBL] = "BtnThumbL",             [BTN_THUMBR] = "BtnThumbR",
+       [BTN_GRIPL] = "BtnGripL",               [BTN_GRIPR] = "BtnGripR",
+       [BTN_GRIPL2] = "BtnGripL2",             [BTN_GRIPR2] = "BtnGripR2",
        [BTN_TOOL_PEN] = "ToolPen",             [BTN_TOOL_RUBBER] = "ToolRubber",
        [BTN_TOOL_BRUSH] = "ToolBrush",         [BTN_TOOL_PENCIL] = "ToolPencil",
        [BTN_TOOL_AIRBRUSH] = "ToolAirbrush",   [BTN_TOOL_FINGER] = "ToolFinger",
index 5a199f3d4a26a22a94e51d4b53aeed3767c97bce..5426297d93fdb327e207d32c4a683d1ce41c9b2e 100644 (file)
 #define BTN_DPAD_LEFT          0x222
 #define BTN_DPAD_RIGHT         0x223
 
+#define BTN_GRIPL              0x224
+#define BTN_GRIPR              0x225
+#define BTN_GRIPL2             0x226
+#define BTN_GRIPR2             0x227
+
 #define KEY_ALS_TOGGLE         0x230   /* Ambient light sensor */
 #define KEY_ROTATE_LOCK_TOGGLE 0x231   /* Display rotation lock */
 #define KEY_REFRESH_RATE_TOGGLE        0x232   /* Display refresh rate toggle */