hid-remapper icon indicating copy to clipboard operation
hid-remapper copied to clipboard

Logitech Extreme 3D Pro flight joystick button 54

Open controllercustom opened this issue 10 months ago • 1 comments

The Logitech Extreme 3D Pro flight joystick works fine except for the throttle slider. It is reported as button 54. It might be due to the report descriptor using push/pop.

Image

Bus 001 Device 014: ID 046d:c215 Logitech, Inc. Extreme 3D Pro
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x046d Logitech, Inc.
  idProduct          0xc215 Extreme 3D Pro
  bcdDevice            2.04
  iManufacturer           1 Logitech
  iProduct                2 Logitech Extreme 3D
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0022
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               30mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode           33 US
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     122
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0007  1x 7 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)

usbhid-dump

 05 01 09 04 A1 01 A1 02 95 02 75 0A 15 00 26 FF
 03 35 00 46 FF 03 09 30 09 31 81 02 75 04 95 01
 25 07 46 3B 01 66 14 00 09 39 81 42 65 00 75 08
 26 FF 00 46 FF 00 09 35 81 02 A4 95 08 75 01 25
 01 45 01 05 09 19 01 29 08 81 02 B4 09 36 81 02
 95 04 75 01 25 01 45 01 05 09 19 09 29 0C 81 02
 95 04 81 01 C0 A1 02 95 04 75 08 26 FF 00 46 FF
 00 06 00 FF 09 01 B1 02 C0 C0

0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x04,        // Usage (Joystick)
0xA1, 0x01,        // Collection (Application)
0xA1, 0x02,        //   Collection (Logical)
0x95, 0x02,        //     Report Count (2)
0x75, 0x0A,        //     Report Size (10)
0x15, 0x00,        //     Logical Minimum (0)
0x26, 0xFF, 0x03,  //     Logical Maximum (1023)
0x35, 0x00,        //     Physical Minimum (0)
0x46, 0xFF, 0x03,  //     Physical Maximum (1023)
0x09, 0x30,        //     Usage (X)
0x09, 0x31,        //     Usage (Y)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x04,        //     Report Size (4)
0x95, 0x01,        //     Report Count (1)
0x25, 0x07,        //     Logical Maximum (7)
0x46, 0x3B, 0x01,  //     Physical Maximum (315)
0x66, 0x14, 0x00,  //     Unit (System: English Rotation, Length: Centimeter)
0x09, 0x39,        //     Usage (Hat switch)
0x81, 0x42,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,Null State)
0x65, 0x00,        //     Unit (None)
0x75, 0x08,        //     Report Size (8)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x46, 0xFF, 0x00,  //     Physical Maximum (255)
0x09, 0x35,        //     Usage (Rz)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xA4,              //     Push
0x95, 0x08,        //       Report Count (8)
0x75, 0x01,        //       Report Size (1)
0x25, 0x01,        //       Logical Maximum (1)
0x45, 0x01,        //       Physical Maximum (1)
0x05, 0x09,        //       Usage Page (Button)
0x19, 0x01,        //       Usage Minimum (0x01)
0x29, 0x08,        //       Usage Maximum (0x08)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xB4,              //     Pop
0x09, 0x36,        //     Usage (Slider)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x04,        //     Report Count (4)
0x75, 0x01,        //     Report Size (1)
0x25, 0x01,        //     Logical Maximum (1)
0x45, 0x01,        //     Physical Maximum (1)
0x05, 0x09,        //     Usage Page (Button)
0x19, 0x09,        //     Usage Minimum (0x09)
0x29, 0x0C,        //     Usage Maximum (0x0C)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x04,        //     Report Count (4)
0x81, 0x01,        //     Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0xA1, 0x02,        //   Collection (Logical)
0x95, 0x04,        //     Report Count (4)
0x75, 0x08,        //     Report Size (8)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x46, 0xFF, 0x00,  //     Physical Maximum (255)
0x06, 0x00, 0xFF,  //     Usage Page (Vendor Defined 0xFF00)
0x09, 0x01,        //     Usage (0x01)
0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              //   End Collection
0xC0,              // End Collection

// 122 bytes

controllercustom avatar Feb 12 '25 22:02 controllercustom

I admit I didn't implement Push/Pop as I have never seen it used in the wild. I will look into it.

jfedor2 avatar Feb 12 '25 22:02 jfedor2