Re: Trouble parsing HID reports from PDP PS4 remote
From: Benjamin Tissoires <hidden>
Date: 2021-12-20 19:02:25
On Mon, Dec 20, 2021 at 7:04 PM Jeremy Slemp [off-list ref] wrote:
On Mon, Dec 20, 2021 at 6:44 AM Benjamin Tissoires [off-list ref] wrote:quoted
Basically, we might need to add support for this remote in the hid-sony driver. Can you attach the full output of hid-recorder (from the hid-tools[3] repository) when you press all of these buttons? This should give us enough information to reply the event sequence locally and fix the drivers if we need.Sure thing! The remote looks like this: https://www.pdp.com/universal-media-remote-for-playstationr4 hid-recorder output:
Thanks for the logs (though your email client mangled the long lines, but not an issue TBH). So this device is not known to the HID stack nor hid-sony or hid-playstation. We will need to add a special case in one of those 2 drivers because as you realized, the way these keys are used is not standard. But I'd like to compare these logs to the PS5 remote that I have here. Maybe the proprietary fields 0xff000021 is something common in the PS4/PS5 world. Also, what happens if you press 2 "special" keys at the same time (pause and enter for example)? However, I can not promise I'll work on that tomorrow. And then I'll take a year end break. If you don't see anything coming from me tomorrow or in early January, feel free to re-raise this thread. Cheers, Benjamin
# PDP Media Remote # 0x05, 0x01, // Usage Page (Generic Desktop) 0 # 0x09, 0x05, // Usage (Game Pad) 2 # 0xa1, 0x01, // Collection (Application) 4 # 0x85, 0x01, // Report ID (1) 6 # 0x09, 0x39, // Usage (Hat switch) 8 # 0x15, 0x00, // Logical Minimum (0) 10 # 0x25, 0x07, // Logical Maximum (7) 12 # 0x35, 0x00, // Physical Minimum (0) 14 # 0x46, 0x3b, 0x01, // Physical Maximum (315) 16 # 0x65, 0x14, // Unit (EnglishRotation: deg) 19 # 0x75, 0x04, // Report Size (4) 21 # 0x95, 0x01, // Report Count (1) 23 # 0x81, 0x42, // Input (Data,Var,Abs,Null) 25 # 0x65, 0x00, // Unit (None) 27 # 0x05, 0x09, // Usage Page (Button) 29 # 0x19, 0x01, // Usage Minimum (1) 31 # 0x29, 0x0e, // Usage Maximum (14) 33 # 0x15, 0x00, // Logical Minimum (0) 35 # 0x25, 0x01, // Logical Maximum (1) 37 # 0x75, 0x01, // Report Size (1) 39 # 0x95, 0x0e, // Report Count (14) 41 # 0x81, 0x02, // Input (Data,Var,Abs) 43 # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 45 # 0x09, 0x20, // Usage (Vendor Usage 0x20) 48 # 0x75, 0x06, // Report Size (6) 50 # 0x95, 0x01, // Report Count (1) 52 # 0x81, 0x02, // Input (Data,Var,Abs) 54 # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 56 # 0x09, 0x21, // Usage (Vendor Usage 0x21) 59 # 0x75, 0x08, // Report Size (8) 61 # 0x95, 0x06, // Report Count (6) 63 # 0x81, 0x02, // Input (Data,Var,Abs) 65 # 0x85, 0x03, // Report ID (3) 67 # 0x0a, 0x83, 0xa7, // Usage (Vendor Usage 0xa783) 69 # 0x95, 0x09, // Report Count (9) 72 # 0xb1, 0x02, // Feature (Data,Var,Abs) 74 # 0xc0, // End Collection 76 # 0x06, 0xf0, 0xff, // Usage Page (Vendor Usage Page 0xfff0) 77