aboutsummaryrefslogtreecommitdiff
path: root/users/pcoves/rainbowUnicorn.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/pcoves/rainbowUnicorn.c')
-rw-r--r--users/pcoves/rainbowUnicorn.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/users/pcoves/rainbowUnicorn.c b/users/pcoves/rainbowUnicorn.c
new file mode 100644
index 000000000..952041505
--- /dev/null
+++ b/users/pcoves/rainbowUnicorn.c
@@ -0,0 +1,42 @@
1#include "rainbowUnicorn.h"
2#include "pcoves.h"
3
4static struct {
5 bool enabled;
6 uint8_t color;
7 char string[2];
8 uint8_t mods;
9} state = {false, 0};
10
11bool process_record_rainbowUnicorn(uint16_t keycode, keyrecord_t* record) {
12 if (keycode == RAINBOW_UNICORN_TOGGLE) {
13 state.enabled ^= true;
14 return false;
15 }
16
17 if (!state.enabled) return true;
18
19 switch (keycode) {
20 case KC_A ... KC_Z:
21 case KC_1 ... KC_0:
22 case ALT_T(KC_A)... ALT_T(KC_Z):
23 case CTL_T(KC_A)... CTL_T(KC_Z):
24 case GUI_T(KC_A)... GUI_T(KC_Z):
25 case SFT_T(KC_A)... SFT_T(KC_Z):
26 if (record->event.pressed) {
27 state.mods = get_mods();
28 clear_mods();
29
30 tap_code16(C(KC_C));
31
32 itoa(state.color + 3, state.string, 10);
33 send_string(state.string);
34
35 set_mods(state.mods);
36 } else {
37 state.color = (state.color + 1) % 11;
38 }
39 }
40
41 return true;
42}