Hello,
I would like to know if anyone else has faced this issue. Indeed, if i want all the consumer control interpreted in the right way, i need to add a keyboard in my report map. If i don't do that (adding a keyboard map), some commands will be wrongly interpreted such as the "scan next" and "scan previous" that are respectively replaced with "volume down" and "volume up". On some phone, this configuration (without keyboard) can work very well.
My purpose is to not have the keyboard map because my phone ask for the configuration of a physical keyboard if it identifies a keyboard in the HID report map.
Here is my map :
0x05, 0x0C, // Usage Pg (Consumer Devices) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x01, // Report Id (2) 0x09, 0x02, // Usage (Numeric Key Pad) 0xA1, 0x02, // Collection (Logical) 0x05, 0x09, // Usage Pg (Button) 0x19, 0x01, // Usage Min (Button 1) 0x29, 0x0A, // Usage Max (Button 10) 0x15, 0x01, // Logical Min (1) 0x25, 0x0A, // Logical Max (10) 0x75, 0x04, // Report Size (4) 0x95, 0x01, // Report Count (1) 0x81, 0x40, // Input (Data, Ary, Abs, Null state)) 0xC0, // End Collection 0x05, 0x0C, // Usage Pg (Consumer Devices) 0x09, 0x86, // Usage (Channel) 0x09, 0xE0, // Usage (Volume) 0x15, 0xFF, // Logical Min (-1) 0x25, 0x01, // Logical Max (1) 0x75, 0x02, // Report Size (2) 0x95, 0x02, // Report Count (2) 0x81, 0x26, // Input (Data, Var, Rel, Null) 0x09, 0xE2, // Usage (Mute) 0x09, 0x30, // Usage (Power) 0x09, 0x83, // Usage (Recall Last) 0x09, 0xCF, // Usage (Voice assistant) 0x09, 0xB0, // Usage (Play) 0x09, 0xB1, // Usage (Pause) 0x09, 0xB2, // Usage (Record) 0x09, 0xB3, // Usage (Fast Forward) 0x09, 0xB4, // Usage (Rewind) 0x09, 0xB5, // Usage (Scan Next) 0x09, 0xB6, // Usage (Scan Prev) 0x09, 0xB7, // Usage (Stop) 0x09, 0xE9, // Usage (Volume Up) 0x09, 0xEA, // Usage (Volume Down) 0x15, 0x01, // Logical Min (1) 0x25, 0x0E, // Logical Max (14) 0x75, 0x04, // Report Size (4) 0x95, 0x01, // Report Count (1) 0x81, 0x40, // Input (Data, Ary, Abs, Null state) 0x09, 0x80, // Usage (Selection) 0xA1, 0x02, // Collection (Logical) 0x05, 0x09, // Usage Pg (Button) 0x19, 0x01, // Usage Min (Button 1) 0x29, 0x03, // Usage Max (Button 3) 0x15, 0x01, // Logical Min (1) 0x25, 0x03, // Logical Max (3) 0x75, 0x02, // Report Size (2) 0x95, 0x01, // Report Count (1) 0x81, 0x40, // Input (Data, Ary, Abs, Null state) 0xC0, // End Collection 0x75, 0x02, // Report Size (8) 0x95, 0x02, // Report Count (1) 0x81, 0x03, // Input (Const, Var, Abs) 0xC0, // End Collection
Regards,
Aurélien