File 0001-use-standard-button-names.patch of Package xf86-input-joystick
From af5d3c8f977c0c9c8626eed919975435a8ed3754 Mon Sep 17 00:00:00 2001
From: theofficialgman <dofficialgman@gmail.com>
Date: Mon, 13 May 2024 11:59:45 -0400
Subject: [PATCH] use standard mouse button names for left/right/middle click
and scroll wheel
also fixes incorrect labeling of absolute and relative axis
---
src/jstk.c | 55 +++++++++++++++++++++++++++++++++---------------------
1 file changed, 34 insertions(+), 21 deletions(-)
diff --git a/src/jstk.c b/src/jstk.c
index 158d77a..51f6a73 100644
--- a/src/jstk.c
+++ b/src/jstk.c
@@ -315,8 +315,9 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
int i;
InputInfoPtr pInfo = (InputInfoPtr)pJstk->public.devicePrivate;
JoystickDevPtr priv = pInfo->private;
- Atom btn_labels[BUTTONMAP_SIZE+1] = {0}; /* TODO: fillme */
- Atom axes_labels[MAXAXES] = {0}; /* TODO: fillme */
+ Atom btn_labels[BUTTONMAP_SIZE+1] = {0};
+ Atom xorg_btn_labels[11] = {0};
+ Atom axes_labels[MAXAXES] = {0};
switch (what) {
case DEVICE_INIT: {
@@ -333,15 +334,26 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
priv->close_proc(priv);
}
- for (m=0; m<=BUTTONMAP_SIZE; m++) {
- sprintf(str, "Button %d", m);
+ xorg_btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
+ xorg_btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
+ xorg_btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
+ xorg_btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP);
+ xorg_btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN);
+ xorg_btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT);
+ xorg_btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT);
+ xorg_btn_labels[7] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_SIDE);
+ xorg_btn_labels[8] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_EXTRA);
+ xorg_btn_labels[9] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_FORWARD);
+ xorg_btn_labels[10] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_BACK);
+ for (m=0; m<=BUTTONMAP_SIZE; m++) {
+ if (m <= 10) {
+ btn_labels[m] = xorg_btn_labels[m];
+ }
buttonmap[m] = m;
- btn_labels[m] = MakeAtom(str, strlen(str), TRUE);
}
-
if (InitButtonClassDeviceStruct(pJstk, BUTTONMAP_SIZE,
btn_labels,
buttonmap) == FALSE) {
@@ -370,33 +382,34 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
InitValuatorAxisStruct(pJstk,
0, /* valuator num */
XIGetKnownProperty(AXIS_LABEL_PROP_REL_X),
- 0, /* min val */
- screenInfo.screens[0]->width, /* max val */
- 1, /* resolution */
+ -1, /* min val */
+ -1, /* max val */
+ 0, /* resolution */
0, /* min_res */
- 1, /* max_res */
- Absolute);
+ 0, /* max_res */
+ Relative);
InitValuatorAxisStruct(pJstk,
1, /* valuator num */
XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y),
- 0, /* min val */
- screenInfo.screens[0]->height, /* max val */
- 1, /* resolution */
+ -1, /* min val */
+ -1, /* max val */
+ 0, /* resolution */
0, /* min_res */
- 1, /* max_res */
- Absolute);
+ 0, /* max_res */
+ Relative);
for (i=0; i<MAXAXES; i++)
if (priv->axis[i].valuator != -1)
{
+
InitValuatorAxisStruct(pJstk,
priv->axis[i].valuator,
axes_labels[i],
- -32768, /* min val */
- 32767, /* max val */
- 1, /* resolution */
+ -1, /* min val */
+ -1, /* max val */
+ 0, /* resolution */
0, /* min_res */
- 1, /* max_res */
- Absolute);
+ 0, /* max_res */
+ Relative);
}
/* allocate the motion history buffer if needed */
xf86MotionHistoryAllocate(pInfo);
--
GitLab