#include "rainbowUnicorn.h" #include "pcoves.h" static struct { bool enabled; uint8_t color; char string[2]; uint8_t mods; } state = {false, 0}; bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* record) { if (keycode == RAINBOW_UNICORN_TOGGLE) { state.enabled ^= true; return false; } if (!state.enabled) return true; switch (keycode) { case KC_A ... KC_Z: case KC_1 ... KC_0: case ALT_T(KC_A)... ALT_T(KC_Z): case CTL_T(KC_A)... CTL_T(KC_Z): case GUI_T(KC_A)... GUI_T(KC_Z): case SFT_T(KC_A)... SFT_T(KC_Z): if (record->event.pressed) { state.mods = get_mods(); clear_mods(); tap_code16(C(KC_C)); itoa(state.color + 3, state.string, 10); send_string(state.string); set_mods(state.mods); } else { state.color = (state.color + 1) % 11; } } return true; }