ricardoquesada / bluepad32

Bluetooth gamepad, mouse and keyboard support for ESP32 and PicoW
https://bluepad32.readthedocs.io/
Other
566 stars 59 forks source link

Support for "TikTok Ring Remote Controller" #68

Closed M4rkoV2 closed 7 months ago

M4rkoV2 commented 7 months ago

I have THIS bluetooth remote controller with 5 buttons that I would like connect with bluepad32.

I was able to connect it fast, but output is same (idx=0) for all keys. Can support for this controller be added?

Firmware: Bluepad32 for Arduino v4.0-beta1
BD Addr: AC: B:FB:25:9F:7E
CALLBACK: Controller is connected, index=0
Controller model: Keyboard, VID=0x05ac, PID=0x022c
idx=0
idx=0
idx=0
idx=0
ricardoquesada commented 7 months ago

For controllers that are not supported and that I don't have in my invetory is:

(details here: https://bit.ly/bluepad32-help )

For this particular case, the cost of the controller + shipping is $6 (US dollars). If you are Ok with it, let me know and I'll send you my paypal account.

M4rkoV2 commented 7 months ago

I'm ok with it. Send me paypal.

Is it possible to Serial Print raw info of the button?

ricardoquesada commented 7 months ago

Paypal: https://www.paypal.com/paypalme/RicardoQuesada

From Arduino IDE, you cannot print the raw packet.

But if you use "Arduino + ESP-IDF" you can add a printf_hexdump(report, report_len); somewhere here to see the raw data: https://github.com/ricardoquesada/bluepad32/blob/main/src/components/bluepad32/parser/uni_hid_parser.c#L14

ricardoquesada commented 7 months ago

Controller should arrive in ~2 weeks.

ricardoquesada commented 7 months ago

What's interesting is that this device reports itself as a keyboard... wondering if Bluepad32 should honor that and treat it as keyboard, or as a gamepad.

Since it has a sort of Dpad, I'd guess that Bluepad32 should override that and treat it as gamepad.

ricardoquesada commented 7 months ago

Events generated by

array up:

02 07 06 70 03 F4 03 01 00                                                                                                                                                                                                                                                                                     
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x3f4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 4C 04 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x44c
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 78 05 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x578
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 A4 06 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x6a4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 D0 07 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x7d0
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 FC 08 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 28 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xa28
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 54 0B 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xb54
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 80 0C 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xc80
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 06 70 03 AC 0D 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xdac
Keyboard: page: 0x000d, usage: 0x0054, value=0x0

Arrow down:

02 07 06 70 03 FC 08 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 D0 07 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x7d0
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 A4 06 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x6a4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 78 05 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x578
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 4C 04 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x44c
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 20 03 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x320
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 F4 01 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x1f4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 06 70 03 C8 00 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xc8
Keyboard: page: 0x000d, usage: 0x0054, value=0x0

left:

02 07 04 B4 01 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x1b4
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 E2 02 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x2e2
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 0E 03 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x30e
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 3A 04 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x43a
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 66 06 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x666
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 92 08 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x892
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 BE 09 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x9be
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 EA 0A 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0xaea
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 04 16 0A 70 0A 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0xa16
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x0

right:

02 07 04 55 06 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x655
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 6C 05 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x56c
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 40 04 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x440
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 14 03 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x314
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 E8 02 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x2e8
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 BC 01 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x1bc
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 79 00 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x79
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 04 9C 00 70 0A 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x9c
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x0

middle:

02 07 06 70 03 FC 08 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 06 70 03 FC 08 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x0
02 00 06 70 03 FC 08 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x0

long up:

03 02 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x1
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0

long down:

03 01 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x1
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0

long left:

03 10 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x1
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0

long rigth:

03 04 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x1
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0

long center:

03 01 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x1
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0

"long center" and "long down" appear to be the same.

Each button generates a lot of events since it is simulating a mouse movement... at least that was my impression of connecting it to an Android phone

ricardoquesada commented 7 months ago

Fixed.

The JX-05 controller is not a good controller to control generic devices. It injects multiple packets per button to simulate mouse events on Android (iOS too I guess).

So, it does NOT translate ok as a regular d-pad.

That being said, since the JX-05 impersonates itself as a keyboard, I'm converting the "mouse" packets into cursor key events.

So:

also, since it injects multiple packets per button, latency is not that great.

In any case, support for it is complete, even though I wouldn't recommend using this controller... works for very basic use cases, and that's it.

M4rkoV2 commented 6 months ago

Thank you. Do I need to update Arduino library for this to work for me? because i did it and I still only get "idx=0" event

ricardoquesada commented 6 months ago

@M4rkoV2 you should be able to see the new events with latest arduino... but remember it is recognized as a keyboard.

Your code should be here: https://github.com/ricardoquesada/esp-idf-arduino-bluepad32-template/blob/main/main/sketch.cpp#L100

I guess I need to add code that shows how to parse it when it is a keyboard

ricardoquesada commented 6 months ago

@M4rkoV2 actually the example already has some code that shows how to use it. See:

https://github.com/ricardoquesada/esp-idf-arduino-bluepad32-template/blob/main/main/sketch.cpp#L176

The controller emits spacebar, and arrows.