#include #include #include "inline.h" #include "keymap.h" #define CMD_SERIAL Serial1 #define CMD_SERIAL_SPEED 115200 #define INLINE inline __attribute__((always_inline)) INLINE void cmdResetHid() { CMD_SERIAL.read(); // unused now CMD_SERIAL.read(); // unused now CMD_SERIAL.read(); // unused now Keyboard.releaseAll(); } INLINE void cmdKeyEvent() { uint8_t state = CMD_SERIAL.read(); KeyboardKeycode code = keymap((uint8_t)CMD_SERIAL.read()); if (code != KEY_ERROR_UNDEFINED) { if (state) { Keyboard.press(code); } else { Keyboard.release(code); } } } void setup() { CMD_SERIAL.begin(CMD_SERIAL_SPEED); Keyboard.begin(); } void loop() { if (CMD_SERIAL.available() >= 4) { switch ((uint8_t)CMD_SERIAL.read()) { case 0: cmdResetHid(); break; case 1: cmdKeyEvent(); break; default: break; } } }