https://github.com/pumafpv/pmk

Highly featured HID ecosystem

First I wanted to build a keyboard, then make it wireless, then split full wireless.

With USB dongle for optimal compatibility (All OS, computer, phone… BIOS, etc). So if the dongle can work as a keyboard, why not a mouse as well? Oh you want a gamepad too? ok, fine! App volume control with Deej? Here take it…


As of today, the dual split keyboard works with the dongle with minimal latency (software limited to ~100Hz).

The dongle is an ESP32S2 and has most of the complexity of the firmware, every other device firmware is as simple as possible, ie: only sends and receive raw data - As little process as possible is done on the devices. This way anyone should be able to write custom device code and bind it to the dongle.

Devices can be: keypad, mouse, gamepad, or other… (See full list in protocol description)

The dongle appears as a USB key and hosts the config file for each device. If you need to change a keybind, this is where it is happening.

Currently all the hardware is based on the ESP32S2 chip that consums a LOT of power (yes bad idea for a wireless keyboard, but it was easier this way…). Later it will be based on nRF52840, which is a real low power MCU.

Adding a custom device is really easy, with just a few lines of code. An exemple script will be made

Benchmark

How to add changes to PMK protocol:

Testing

With every release, here is what should be tested: