43 lines
1 KiB
C
43 lines
1 KiB
C
|
#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;
|
||
|
}
|