* [PATCH v3 0/3] Input: joystick: xpad: Add X-Box Adaptive Controller support @ 2022-08-13 18:53 Nate Yocom 2022-08-13 18:53 ` [PATCH v3 1/3] " Nate Yocom ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Nate Yocom @ 2022-08-13 18:53 UTC (permalink / raw) To: dmitry.torokhov; +Cc: nate, linux-input, linux-kernel, hadess Adds support for the X-Box Adaptive Controller, which is protocol compatible with the XTYPE_XBOXONE support in the driver with two deltas: - The X-Box button sets 0x02 as its activation ID, where others set 0x01 - The controller has an additional "Layer" button with 4 active states, which this change maps to an Axis control with 4 possible values Patch series adds device to the supported table, adds support for the Layer button, and adds support for the X-Box button as distinct changes. Signed-off-by: Nate Yocom <nate@yocom.org> Nate Yocom (3): Input: joystick: xpad: Add X-Box Adaptive Controller support Input: joystick: xpad: Add X-Box Adaptive Controller Layer button Input: joystick: xpad: Add X-Box Adaptive Controller XBox button v2: Fix warning Reported-by: kernel test robot <lkp@intel.com> v3: Break into multi-part and remove VID/PID check for XBox button drivers/input/joystick/xpad.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) base-commit: 15205c2829ca2cbb5ece5ceaafe1171a8470e62b -- 2.30.2 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/3] Input: joystick: xpad: Add X-Box Adaptive Controller support 2022-08-13 18:53 [PATCH v3 0/3] Input: joystick: xpad: Add X-Box Adaptive Controller support Nate Yocom @ 2022-08-13 18:53 ` Nate Yocom 2022-08-17 10:37 ` Bastien Nocera 2022-08-13 18:53 ` [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button Nate Yocom 2022-08-13 18:53 ` [PATCH v3 3/3] Input: joystick: xpad: Add X-Box Adaptive Controller XBox button Nate Yocom 2 siblings, 1 reply; 11+ messages in thread From: Nate Yocom @ 2022-08-13 18:53 UTC (permalink / raw) To: dmitry.torokhov; +Cc: nate, linux-input, linux-kernel, hadess Adds correct VID/PID for this XTYPE_XBOXONE compatible controller to xpad_device[] table. Signed-off-by: Nate Yocom <nate@yocom.org> --- drivers/input/joystick/xpad.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 18190b529bca..c8b38bb73d34 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -131,6 +131,7 @@ static const struct xpad_device { { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, XTYPE_XBOXONE }, { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, XTYPE_XBOXONE }, { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, + { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", 0, XTYPE_XBOXONE }, { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", MAP_SELECT_BUTTON, XTYPE_XBOXONE }, { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 }, { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 }, -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/3] Input: joystick: xpad: Add X-Box Adaptive Controller support 2022-08-13 18:53 ` [PATCH v3 1/3] " Nate Yocom @ 2022-08-17 10:37 ` Bastien Nocera 2022-08-17 17:36 ` Nate Yocom 0 siblings, 1 reply; 11+ messages in thread From: Bastien Nocera @ 2022-08-17 10:37 UTC (permalink / raw) To: Nate Yocom, dmitry.torokhov; +Cc: linux-input, linux-kernel On Sat, 2022-08-13 at 11:53 -0700, Nate Yocom wrote: > Adds correct VID/PID for this XTYPE_XBOXONE compatible controller to > xpad_device[] table. > > Signed-off-by: Nate Yocom <nate@yocom.org> Have you tested the device in Bluetooth mode? My controller's battery is still charging. Tested-by: Bastien Nocera <hadess@hadess.net> > --- > drivers/input/joystick/xpad.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/input/joystick/xpad.c > b/drivers/input/joystick/xpad.c > index 18190b529bca..c8b38bb73d34 100644 > --- a/drivers/input/joystick/xpad.c > +++ b/drivers/input/joystick/xpad.c > @@ -131,6 +131,7 @@ static const struct xpad_device { > { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, > XTYPE_XBOXONE }, > { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, > XTYPE_XBOXONE }, > { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", > MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, > + { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", 0, > XTYPE_XBOXONE }, > { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", > MAP_SELECT_BUTTON, XTYPE_XBOXONE }, > { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 > }, > { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 > }, ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/3] Input: joystick: xpad: Add X-Box Adaptive Controller support 2022-08-17 10:37 ` Bastien Nocera @ 2022-08-17 17:36 ` Nate Yocom 0 siblings, 0 replies; 11+ messages in thread From: Nate Yocom @ 2022-08-17 17:36 UTC (permalink / raw) To: Bastien Nocera; +Cc: dmitry.torokhov, linux-input, linux-kernel On Wed, Aug 17, 2022 at 12:37:02PM +0200, Bastien Nocera wrote: > On Sat, 2022-08-13 at 11:53 -0700, Nate Yocom wrote: > > Adds correct VID/PID for this XTYPE_XBOXONE compatible controller to > > xpad_device[] table. > > > > Signed-off-by: Nate Yocom <nate@yocom.org> > > Have you tested the device in Bluetooth mode? My controller's battery > is still charging. I have tried, but haven't been successful in getting it connected with, or without my changes (i.e. no change), so was focused on cabled support first. > Tested-by: Bastien Nocera <hadess@hadess.net> Thanks! > > > --- > > drivers/input/joystick/xpad.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/input/joystick/xpad.c > > b/drivers/input/joystick/xpad.c > > index 18190b529bca..c8b38bb73d34 100644 > > --- a/drivers/input/joystick/xpad.c > > +++ b/drivers/input/joystick/xpad.c > > @@ -131,6 +131,7 @@ static const struct xpad_device { > > { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, > > XTYPE_XBOXONE }, > > { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, > > XTYPE_XBOXONE }, > > { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", > > MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, > > + { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", 0, > > XTYPE_XBOXONE }, > > { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", > > MAP_SELECT_BUTTON, XTYPE_XBOXONE }, > > { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 > > }, > > { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 > > }, > ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button 2022-08-13 18:53 [PATCH v3 0/3] Input: joystick: xpad: Add X-Box Adaptive Controller support Nate Yocom 2022-08-13 18:53 ` [PATCH v3 1/3] " Nate Yocom @ 2022-08-13 18:53 ` Nate Yocom 2022-08-17 10:37 ` Bastien Nocera 2022-08-13 18:53 ` [PATCH v3 3/3] Input: joystick: xpad: Add X-Box Adaptive Controller XBox button Nate Yocom 2 siblings, 1 reply; 11+ messages in thread From: Nate Yocom @ 2022-08-13 18:53 UTC (permalink / raw) To: dmitry.torokhov; +Cc: nate, linux-input, linux-kernel, hadess Adds a new quirk for controllers that have a Layer button which has 4 states, reflected as an ABS_MISC axis with 4 values. Signed-off-by: Nate Yocom <nate@yocom.org> --- drivers/input/joystick/xpad.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index c8b38bb73d34..83a4f4d07af5 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -80,6 +80,7 @@ #define MAP_TRIGGERS_TO_BUTTONS (1 << 1) #define MAP_STICKS_TO_NULL (1 << 2) #define MAP_SELECT_BUTTON (1 << 3) +#define MAP_LAYER_BUTTON (1 << 4) #define DANCEPAD_MAP_CONFIG (MAP_DPAD_TO_BUTTONS | \ MAP_TRIGGERS_TO_BUTTONS | MAP_STICKS_TO_NULL) @@ -131,7 +132,7 @@ static const struct xpad_device { { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, XTYPE_XBOXONE }, { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, XTYPE_XBOXONE }, { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, - { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", 0, XTYPE_XBOXONE }, + { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", MAP_LAYER_BUTTON, XTYPE_XBOXONE }, { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", MAP_SELECT_BUTTON, XTYPE_XBOXONE }, { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 }, { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 }, @@ -927,6 +928,10 @@ static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char (__u16) le16_to_cpup((__le16 *)(data + 8))); } + /* Layer button has a value of 0-4, so it is reported as an axis */ + if (xpad->mapping & MAP_LAYER_BUTTON) + input_report_abs(dev, ABS_MISC, data[34]); + input_sync(dev); } @@ -1623,6 +1628,9 @@ static void xpad_set_up_abs(struct input_dev *input_dev, signed short abs) case ABS_HAT0Y: /* the d-pad (only if dpad is mapped to axes */ input_set_abs_params(input_dev, abs, -1, 1, 0, 0); break; + case ABS_MISC: /* 4 value layer button (such as on XAC) */ + input_set_abs_params(input_dev, abs, 0, 4, 0, 0); + break; default: input_set_abs_params(input_dev, abs, 0, 0, 0, 0); break; @@ -1715,6 +1723,10 @@ static int xpad_init_input(struct usb_xpad *xpad) xpad_set_up_abs(input_dev, xpad_abs_triggers[i]); } + /* setup layer button as an axis with 4 possible values */ + if (xpad->mapping & MAP_LAYER_BUTTON) + xpad_set_up_abs(input_dev, ABS_MISC); + error = xpad_init_ff(xpad); if (error) goto err_free_input; -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button 2022-08-13 18:53 ` [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button Nate Yocom @ 2022-08-17 10:37 ` Bastien Nocera 2022-08-17 17:42 ` Nate Yocom 2022-08-24 15:36 ` Bastien Nocera 0 siblings, 2 replies; 11+ messages in thread From: Bastien Nocera @ 2022-08-17 10:37 UTC (permalink / raw) To: Nate Yocom, dmitry.torokhov, Benjamin Tissoires; +Cc: linux-input, linux-kernel On Sat, 2022-08-13 at 11:53 -0700, Nate Yocom wrote: > Adds a new quirk for controllers that have a Layer button which has 4 > states, reflected as an ABS_MISC axis with 4 values. It's called the "Profile Button" in the official documentation: https://support.xbox.com/en-US/help/account-profile/accessibility/get-to-know-adaptive-controller so best to call it that. I wonder we have any other examples of profile handling in input drivers. The xpadneo driver implements the profiles in the kernel driver directly. Benjamin? Tested-by: Bastien Nocera <hadess@hadess.net> > > Signed-off-by: Nate Yocom <nate@yocom.org> > --- > drivers/input/joystick/xpad.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/input/joystick/xpad.c > b/drivers/input/joystick/xpad.c > index c8b38bb73d34..83a4f4d07af5 100644 > --- a/drivers/input/joystick/xpad.c > +++ b/drivers/input/joystick/xpad.c > @@ -80,6 +80,7 @@ > #define MAP_TRIGGERS_TO_BUTTONS (1 << 1) > #define MAP_STICKS_TO_NULL (1 << 2) > #define MAP_SELECT_BUTTON (1 << 3) > +#define MAP_LAYER_BUTTON (1 << 4) > #define DANCEPAD_MAP_CONFIG (MAP_DPAD_TO_BUTTONS > | \ > MAP_TRIGGERS_TO_BUTTONS | > MAP_STICKS_TO_NULL) > > @@ -131,7 +132,7 @@ static const struct xpad_device { > { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, > XTYPE_XBOXONE }, > { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, > XTYPE_XBOXONE }, > { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", > MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, > - { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", 0, > XTYPE_XBOXONE }, > + { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", > MAP_LAYER_BUTTON, XTYPE_XBOXONE }, > { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", > MAP_SELECT_BUTTON, XTYPE_XBOXONE }, > { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 > }, > { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 > }, > @@ -927,6 +928,10 @@ static void xpadone_process_packet(struct > usb_xpad *xpad, u16 cmd, unsigned char > (__u16) le16_to_cpup((__le16 *)(data > + 8))); > } > > + /* Layer button has a value of 0-4, so it is reported as an > axis */ > + if (xpad->mapping & MAP_LAYER_BUTTON) > + input_report_abs(dev, ABS_MISC, data[34]); > + > input_sync(dev); > } > > @@ -1623,6 +1628,9 @@ static void xpad_set_up_abs(struct input_dev > *input_dev, signed short abs) > case ABS_HAT0Y: /* the d-pad (only if dpad is mapped to axes > */ > input_set_abs_params(input_dev, abs, -1, 1, 0, 0); > break; > + case ABS_MISC: /* 4 value layer button (such as on XAC) */ > + input_set_abs_params(input_dev, abs, 0, 4, 0, 0); > + break; > default: > input_set_abs_params(input_dev, abs, 0, 0, 0, 0); > break; > @@ -1715,6 +1723,10 @@ static int xpad_init_input(struct usb_xpad > *xpad) > xpad_set_up_abs(input_dev, > xpad_abs_triggers[i]); > } > > + /* setup layer button as an axis with 4 possible values */ > + if (xpad->mapping & MAP_LAYER_BUTTON) > + xpad_set_up_abs(input_dev, ABS_MISC); > + > error = xpad_init_ff(xpad); > if (error) > goto err_free_input; ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button 2022-08-17 10:37 ` Bastien Nocera @ 2022-08-17 17:42 ` Nate Yocom 2022-08-24 15:36 ` Bastien Nocera 1 sibling, 0 replies; 11+ messages in thread From: Nate Yocom @ 2022-08-17 17:42 UTC (permalink / raw) To: Bastien Nocera Cc: dmitry.torokhov, Benjamin Tissoires, linux-input, linux-kernel On Wed, Aug 17, 2022 at 12:37:25PM +0200, Bastien Nocera wrote: > On Sat, 2022-08-13 at 11:53 -0700, Nate Yocom wrote: > > Adds a new quirk for controllers that have a Layer button which has 4 > > states, reflected as an ABS_MISC axis with 4 values. > > It's called the "Profile Button" in the official documentation: > https://support.xbox.com/en-US/help/account-profile/accessibility/get-to-know-adaptive-controller > so best to call it that. Agreed - thanks for the pointer, will send a v4 shortly. > I wonder we have any other examples of profile handling in input > drivers. The xpadneo driver implements the profiles in the kernel > driver directly. > > Benjamin? > > Tested-by: Bastien Nocera <hadess@hadess.net> > > > > > Signed-off-by: Nate Yocom <nate@yocom.org> > > --- > > drivers/input/joystick/xpad.c | 14 +++++++++++++- > > 1 file changed, 13 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/input/joystick/xpad.c > > b/drivers/input/joystick/xpad.c > > index c8b38bb73d34..83a4f4d07af5 100644 > > --- a/drivers/input/joystick/xpad.c > > +++ b/drivers/input/joystick/xpad.c > > @@ -80,6 +80,7 @@ > > #define MAP_TRIGGERS_TO_BUTTONS (1 << 1) > > #define MAP_STICKS_TO_NULL (1 << 2) > > #define MAP_SELECT_BUTTON (1 << 3) > > +#define MAP_LAYER_BUTTON (1 << 4) > > #define DANCEPAD_MAP_CONFIG (MAP_DPAD_TO_BUTTONS > > | \ > > MAP_TRIGGERS_TO_BUTTONS | > > MAP_STICKS_TO_NULL) > > > > @@ -131,7 +132,7 @@ static const struct xpad_device { > > { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, > > XTYPE_XBOXONE }, > > { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, > > XTYPE_XBOXONE }, > > { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", > > MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, > > - { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", 0, > > XTYPE_XBOXONE }, > > + { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", > > MAP_LAYER_BUTTON, XTYPE_XBOXONE }, > > { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", > > MAP_SELECT_BUTTON, XTYPE_XBOXONE }, > > { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 > > }, > > { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 > > }, > > @@ -927,6 +928,10 @@ static void xpadone_process_packet(struct > > usb_xpad *xpad, u16 cmd, unsigned char > > (__u16) le16_to_cpup((__le16 *)(data > > + 8))); > > } > > > > + /* Layer button has a value of 0-4, so it is reported as an > > axis */ > > + if (xpad->mapping & MAP_LAYER_BUTTON) > > + input_report_abs(dev, ABS_MISC, data[34]); > > + > > input_sync(dev); > > } > > > > @@ -1623,6 +1628,9 @@ static void xpad_set_up_abs(struct input_dev > > *input_dev, signed short abs) > > case ABS_HAT0Y: /* the d-pad (only if dpad is mapped to axes > > */ > > input_set_abs_params(input_dev, abs, -1, 1, 0, 0); > > break; > > + case ABS_MISC: /* 4 value layer button (such as on XAC) */ > > + input_set_abs_params(input_dev, abs, 0, 4, 0, 0); > > + break; > > default: > > input_set_abs_params(input_dev, abs, 0, 0, 0, 0); > > break; > > @@ -1715,6 +1723,10 @@ static int xpad_init_input(struct usb_xpad > > *xpad) > > xpad_set_up_abs(input_dev, > > xpad_abs_triggers[i]); > > } > > > > + /* setup layer button as an axis with 4 possible values */ > > + if (xpad->mapping & MAP_LAYER_BUTTON) > > + xpad_set_up_abs(input_dev, ABS_MISC); > > + > > error = xpad_init_ff(xpad); > > if (error) > > goto err_free_input; > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button 2022-08-17 10:37 ` Bastien Nocera 2022-08-17 17:42 ` Nate Yocom @ 2022-08-24 15:36 ` Bastien Nocera 2022-08-25 22:21 ` Nate Yocom 1 sibling, 1 reply; 11+ messages in thread From: Bastien Nocera @ 2022-08-24 15:36 UTC (permalink / raw) To: Nate Yocom, dmitry.torokhov, Benjamin Tissoires, Dmitry Torokhov Cc: linux-input, linux-kernel On Wed, 2022-08-17 at 12:37 +0200, Bastien Nocera wrote: > On Sat, 2022-08-13 at 11:53 -0700, Nate Yocom wrote: > > Adds a new quirk for controllers that have a Layer button which has > > 4 > > states, reflected as an ABS_MISC axis with 4 values. > > It's called the "Profile Button" in the official documentation: > https://support.xbox.com/en-US/help/account-profile/accessibility/get-to-know-adaptive-controller > so best to call it that. > > I wonder we have any other examples of profile handling in input > drivers. The xpadneo driver implements the profiles in the kernel > driver directly. > > Benjamin? After speaking to Benjamin, it was clear that ABS_MISC wasn't the right absolute axis to use. I think that adding a new ABS_* axes in include/uapi/linux/input-event- codes.h would be the best, for example ABS_PROFILE as 0x21. Dmitry, what do you think? The idea here is to encode a hardware controlled switch that has 4 possible values. Its state will be sent with every input event in order for user-space to (maybe) apply a specific profile to the events. This would also be used by the XBox Elite 2 controller driver. Cheers ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button 2022-08-24 15:36 ` Bastien Nocera @ 2022-08-25 22:21 ` Nate Yocom 0 siblings, 0 replies; 11+ messages in thread From: Nate Yocom @ 2022-08-25 22:21 UTC (permalink / raw) To: Bastien Nocera, dmitry.torokhov Cc: Benjamin Tissoires, linux-input, linux-kernel On Wed, Aug 24, 2022 at 05:36:30PM +0200, Bastien Nocera wrote: > On Wed, 2022-08-17 at 12:37 +0200, Bastien Nocera wrote: > > On Sat, 2022-08-13 at 11:53 -0700, Nate Yocom wrote: > > > Adds a new quirk for controllers that have a Layer button which has > > > 4 > > > states, reflected as an ABS_MISC axis with 4 values. > > > > It's called the "Profile Button" in the official documentation: > > https://support.xbox.com/en-US/help/account-profile/accessibility/get-to-know-adaptive-controller > > so best to call it that. > > > > I wonder we have any other examples of profile handling in input > > drivers. The xpadneo driver implements the profiles in the kernel > > driver directly. > > > > Benjamin? > > After speaking to Benjamin, it was clear that ABS_MISC wasn't the right > absolute axis to use. > > I think that adding a new ABS_* axes in include/uapi/linux/input-event- > codes.h would be the best, for example ABS_PROFILE as 0x21. Makes sense to me. > Dmitry, what do you think? I'll submit a v5 with ABS_PROFILE defined jic. > > The idea here is to encode a hardware controlled switch that has 4 > possible values. Its state will be sent with every input event in order > for user-space to (maybe) apply a specific profile to the events. > > This would also be used by the XBox Elite 2 controller driver. > > Cheers ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 3/3] Input: joystick: xpad: Add X-Box Adaptive Controller XBox button 2022-08-13 18:53 [PATCH v3 0/3] Input: joystick: xpad: Add X-Box Adaptive Controller support Nate Yocom 2022-08-13 18:53 ` [PATCH v3 1/3] " Nate Yocom 2022-08-13 18:53 ` [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button Nate Yocom @ 2022-08-13 18:53 ` Nate Yocom 2022-08-17 10:37 ` Bastien Nocera 2 siblings, 1 reply; 11+ messages in thread From: Nate Yocom @ 2022-08-13 18:53 UTC (permalink / raw) To: dmitry.torokhov; +Cc: nate, linux-input, linux-kernel, hadess Adaptive controller sets 0x02 bit for this button, all others set 0x01 so presence of either is used for BTN_MODE. Signed-off-by: Nate Yocom <nate@yocom.org> --- drivers/input/joystick/xpad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 83a4f4d07af5..bea71721b6cd 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -859,7 +859,7 @@ static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char if (data[1] == 0x30) xpadone_ack_mode_report(xpad, data[2]); - input_report_key(dev, BTN_MODE, data[4] & 0x01); + input_report_key(dev, BTN_MODE, data[4] & 0x03); input_sync(dev); return; } -- 2.30.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/3] Input: joystick: xpad: Add X-Box Adaptive Controller XBox button 2022-08-13 18:53 ` [PATCH v3 3/3] Input: joystick: xpad: Add X-Box Adaptive Controller XBox button Nate Yocom @ 2022-08-17 10:37 ` Bastien Nocera 0 siblings, 0 replies; 11+ messages in thread From: Bastien Nocera @ 2022-08-17 10:37 UTC (permalink / raw) To: Nate Yocom, dmitry.torokhov; +Cc: linux-input, linux-kernel On Sat, 2022-08-13 at 11:53 -0700, Nate Yocom wrote: > Adaptive controller sets 0x02 bit for this button, all others set > 0x01 > so presence of either is used for BTN_MODE. > > Signed-off-by: Nate Yocom <nate@yocom.org> Tested-by: Bastien Nocera <hadess@hadess.net> > --- > drivers/input/joystick/xpad.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/input/joystick/xpad.c > b/drivers/input/joystick/xpad.c > index 83a4f4d07af5..bea71721b6cd 100644 > --- a/drivers/input/joystick/xpad.c > +++ b/drivers/input/joystick/xpad.c > @@ -859,7 +859,7 @@ static void xpadone_process_packet(struct > usb_xpad *xpad, u16 cmd, unsigned char > if (data[1] == 0x30) > xpadone_ack_mode_report(xpad, data[2]); > > - input_report_key(dev, BTN_MODE, data[4] & 0x01); > + input_report_key(dev, BTN_MODE, data[4] & 0x03); > input_sync(dev); > return; > } ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-08-25 22:22 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-08-13 18:53 [PATCH v3 0/3] Input: joystick: xpad: Add X-Box Adaptive Controller support Nate Yocom 2022-08-13 18:53 ` [PATCH v3 1/3] " Nate Yocom 2022-08-17 10:37 ` Bastien Nocera 2022-08-17 17:36 ` Nate Yocom 2022-08-13 18:53 ` [PATCH v3 2/3] Input: joystick: xpad: Add X-Box Adaptive Controller Layer button Nate Yocom 2022-08-17 10:37 ` Bastien Nocera 2022-08-17 17:42 ` Nate Yocom 2022-08-24 15:36 ` Bastien Nocera 2022-08-25 22:21 ` Nate Yocom 2022-08-13 18:53 ` [PATCH v3 3/3] Input: joystick: xpad: Add X-Box Adaptive Controller XBox button Nate Yocom 2022-08-17 10:37 ` Bastien Nocera
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).