|
79 | 79 | #define MAP_DPAD_TO_BUTTONS (1 << 0)
|
80 | 80 | #define MAP_TRIGGERS_TO_BUTTONS (1 << 1)
|
81 | 81 | #define MAP_STICKS_TO_NULL (1 << 2)
|
| 82 | +#define MAP_SELECT_BUTTON (1 << 3) |
82 | 83 | #define DANCEPAD_MAP_CONFIG (MAP_DPAD_TO_BUTTONS | \
|
83 | 84 | MAP_TRIGGERS_TO_BUTTONS | MAP_STICKS_TO_NULL)
|
84 | 85 |
|
@@ -130,6 +131,7 @@ static const struct xpad_device {
|
130 | 131 | { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, XTYPE_XBOXONE },
|
131 | 132 | { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, XTYPE_XBOXONE },
|
132 | 133 | { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W },
|
| 134 | + { 0x045e, 0x0b12, "Microsoft Xbox One X pad", MAP_SELECT_BUTTON, XTYPE_XBOXONE }, |
133 | 135 | { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 },
|
134 | 136 | { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 },
|
135 | 137 | { 0x046d, 0xc21f, "Logitech Gamepad F710", 0, XTYPE_XBOX360 },
|
@@ -864,6 +866,8 @@ static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char
|
864 | 866 | /* menu/view buttons */
|
865 | 867 | input_report_key(dev, BTN_START, data[4] & 0x04);
|
866 | 868 | input_report_key(dev, BTN_SELECT, data[4] & 0x08);
|
| 869 | + if (xpad->mapping & MAP_SELECT_BUTTON) |
| 870 | + input_report_key(dev, KEY_RECORD, data[22] & 0x01); |
867 | 871 |
|
868 | 872 | /* buttons A,B,X,Y */
|
869 | 873 | input_report_key(dev, BTN_A, data[4] & 0x10);
|
@@ -1674,6 +1678,8 @@ static int xpad_init_input(struct usb_xpad *xpad)
|
1674 | 1678 | xpad->xtype == XTYPE_XBOXONE) {
|
1675 | 1679 | for (i = 0; xpad360_btn[i] >= 0; i++)
|
1676 | 1680 | input_set_capability(input_dev, EV_KEY, xpad360_btn[i]);
|
| 1681 | + if (xpad->mapping & MAP_SELECT_BUTTON) |
| 1682 | + input_set_capability(input_dev, EV_KEY, KEY_RECORD); |
1677 | 1683 | } else {
|
1678 | 1684 | for (i = 0; xpad_btn[i] >= 0; i++)
|
1679 | 1685 | input_set_capability(input_dev, EV_KEY, xpad_btn[i]);
|
|
0 commit comments