2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00

Input: Add and document BTN_GRIP*

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>
This commit is contained in:
Vicki Pfau 2025-07-27 01:15:17 -07:00 committed by Dmitry Torokhov
parent a43a503df9
commit 97c01e65ef
3 changed files with 20 additions and 0 deletions

View File

@ -190,6 +190,19 @@ Gamepads report the following events:
Rumble is advertised as FF_RUMBLE. 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: - Profile:
Some pads provide a multi-value profile selection switch. Examples include Some pads provide a multi-value profile selection switch. Examples include

View File

@ -3291,6 +3291,8 @@ static const char *keys[KEY_MAX + 1] = {
[BTN_TR2] = "BtnTR2", [BTN_SELECT] = "BtnSelect", [BTN_TR2] = "BtnTR2", [BTN_SELECT] = "BtnSelect",
[BTN_START] = "BtnStart", [BTN_MODE] = "BtnMode", [BTN_START] = "BtnStart", [BTN_MODE] = "BtnMode",
[BTN_THUMBL] = "BtnThumbL", [BTN_THUMBR] = "BtnThumbR", [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_PEN] = "ToolPen", [BTN_TOOL_RUBBER] = "ToolRubber",
[BTN_TOOL_BRUSH] = "ToolBrush", [BTN_TOOL_PENCIL] = "ToolPencil", [BTN_TOOL_BRUSH] = "ToolBrush", [BTN_TOOL_PENCIL] = "ToolPencil",
[BTN_TOOL_AIRBRUSH] = "ToolAirbrush", [BTN_TOOL_FINGER] = "ToolFinger", [BTN_TOOL_AIRBRUSH] = "ToolAirbrush", [BTN_TOOL_FINGER] = "ToolFinger",

View File

@ -601,6 +601,11 @@
#define BTN_DPAD_LEFT 0x222 #define BTN_DPAD_LEFT 0x222
#define BTN_DPAD_RIGHT 0x223 #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_ALS_TOGGLE 0x230 /* Ambient light sensor */
#define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */ #define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */
#define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */ #define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */