aboutsummaryrefslogtreecommitdiff
path: root/keyboards/clueboard/66/keymaps/magicmonty/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/clueboard/66/keymaps/magicmonty/keymap.c')
-rw-r--r--keyboards/clueboard/66/keymaps/magicmonty/keymap.c222
1 files changed, 222 insertions, 0 deletions
diff --git a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c
new file mode 100644
index 000000000..56d4c4707
--- /dev/null
+++ b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c
@@ -0,0 +1,222 @@
1#include QMK_KEYBOARD_H
2
3// Each layer gets a name for readability, which is then used in the keymap matrix below.
4// The underscores don't mean anything - you can have a layer called STUFF or any other name.
5// Layer names don't all need to be of the same length, obviously, and you can also skip them
6// entirely and just use numbers.
7#define _BL 0 // BASE Layer
8#define _FL 1 // Function Layer
9#define _ME 2 // Media Layer
10#define _CL 3 // Control Layer
11#define _ML 4 // Mouse Layer
12#if defined(MIDI_ENABLE)
13 #define _MI 5 // MIDI Layer
14 #define TO_MIDI TO(_MI)
15#else
16 #define TO_MIDI _______
17#endif
18
19// go back to base layer
20#define TO_BASE TO(_BL)
21
22// switch to function layer while helde
23#define MO_FUNC MO(_FL)
24
25// switch to media layer while held
26#define MEDIA MO(_ME)
27
28// switch to Control layer while helde
29#define MO_CTL MO(_CL)
30
31// switch to mouse layer if held, else space
32#define L_MOUSE LT(_ML, KC_SPC)
33
34// Function key when held, else ESC
35#define ESC_FUN LT(_FL, KC_ESC)
36
37// Hyper (CTRL+ALT+SHIFT+SUPER) when held, TAB when tapped
38#define HPR_TAB ALL_T(KC_TAB)
39
40// CTRL when held, ESC when tapped
41#define CTL_ESC CTL_T(KC_ESC)
42
43enum custom_keycodes {
44 RGB_RST = SAFE_RANGE
45};
46
47const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
48 /* Keymap _BL: Base Layer (Default Layer) */
49 [_BL] = LAYOUT(
50 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS,
51 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
52 ESC_FUN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
53 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_RSFT, KC_UP,
54 KC_LCTL, KC_LGUI, KC_LALT,_______, L_MOUSE, L_MOUSE, _______, KC_RALT, KC_RCTL, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT),
55
56 /* Keymap _FL: Function layer */
57 [_FL] = LAYOUT(
58 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP,
59 _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, KC_PAUS, _______, _______, _______, _______,
60 _______, _______, MO_CTL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
61 KC_LSPO, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, TO_MIDI, _______, KC_RSPC, KC_PGUP,
62 _______, _______, _______, _______, _______, _______, _______, _______, _______, MO_FUNC, KC_HOME, KC_PGDN, KC_END),
63
64 /* Keymap _ME: Media layer */
65 [_ME] = LAYOUT(
66 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU,
67 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
69 _______, _______, _______, _______, _______, _______, _______, _______, MEDIA, _______, _______, _______, _______, _______, _______,
70 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT),
71
72 /* Keymap _CL: Control layer */
73 [_CL] = LAYOUT(
74 _______, RGB_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
75 _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD,
76 _______, _______, MO_CTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
77 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
78 _______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
79
80 /* Keymap _ML: Mouse layer */
81 [_ML] = LAYOUT(
82 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
83 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
84 _______, _______, KC_BTN2, KC_BTN3, KC_BTN1, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, _______,
85 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U,
86 _______, _______, _______, _______, L_MOUSE, L_MOUSE, _______, KC_BTN1, KC_BTN3, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_R),
87
88#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
89 /* Keymap _MI: MIDI layer (Advanced)*/
90 [_MI] = LAYOUT(
91 TO_BASE,MI_VEL_1,MI_VEL_2,MI_VEL_3,MI_VEL_4,MI_VEL_5,MI_VEL_6,MI_VEL_7,MI_VEL_8,MI_VEL_9,MI_VEL_10, MI_CHD, MI_CHU, XXXXXXX, XXXXXXX, XXXXXXX,
92 XXXXXXX, XXXXXXX, MI_Cs, MI_Ds, XXXXXXX, MI_Fs, MI_Gs, MI_As, XXXXXXX, MI_Cs_1, MI_Ds_1, XXXXXXX, MI_Fs_1, XXXXXXX, XXXXXXX,
93 MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, MI_G_1, XXXXXXX,
94 MI_SUS, XXXXXXX, MI_OCTD, MI_OCTU,MI_MODSD,MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD,MI_TRNSU,MI_TRNS_0, MI_SUS, XXXXXXX,
95 XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, MI_ALLOFF, MI_ALLOFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX),
96#elif defined(MIDI_ENABLE) && defined(MIDI_BASIC)
97 /* Keymap _MI: MIDI layer (Basic)*/
98 [_MI] = LAYOUT(
99 TO_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
100 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
101 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
102 XXXXXXX, XXXXXXX, MI_ON, MI_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
103 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX),
104#endif
105};
106
107bool process_record_user(uint16_t keycode, keyrecord_t *record) {
108 switch (keycode) {
109 case RGB_RST:
110 if (record->event.pressed) {
111 rgblight_mode(1);
112 rgblight_sethsv(206, 255, 255);
113 }
114 return false;
115 }
116 return true;
117}
118
119enum layer_id {
120 LAYER_BASE,
121 LAYER_FUNCTION,
122 LAYER_MEDIA,
123 LAYER_CONTROL,
124 LAYER_MOUSE,
125#if defined(MIDI_ENABLE)
126 LAYER_MIDI
127#endif
128};
129
130void clueboard_set_led(uint8_t id, uint8_t val) {
131 switch (id) {
132 case LAYER_BASE:
133 rgblight_sethsv_noeeprom(135, 255, val);
134 break;
135 case LAYER_FUNCTION:
136 rgblight_sethsv_noeeprom(32, 255, val);
137 break;
138 case LAYER_MEDIA:
139 rgblight_sethsv_noeeprom(60, 255, val);
140 break;
141 case LAYER_CONTROL:
142 rgblight_sethsv_noeeprom(245, 255, val);
143 break;
144 case LAYER_MOUSE:
145 rgblight_sethsv_noeeprom(146, 255, val);
146 break;
147#if defined(MIDI_ENABLE)
148 case LAYER_MIDI:
149 rgblight_sethsv_noeeprom(224, 255, val);
150 break;
151#endif
152 }
153};
154
155const uint16_t oct_hues[10] = {
156 0,
157 20,
158 40,
159 60,
160 80,
161 100,
162 120,
163 140,
164 160,
165 180
166};
167
168#define MAX_OCT 9
169
170void clueboard_set_midi_led(uint8_t base_oct, uint8_t val)
171{
172 uint8_t sat = 255;
173
174 for (uint8_t i = 0; i < RGBLED_NUM; i++) {
175 sethsv(oct_hues[base_oct], sat, val, (LED_TYPE *)&led[i]);
176 }
177
178 uint8_t next_oct = base_oct < MAX_OCT ? base_oct + 1 : base_oct;
179
180 uint16_t next_hue = base_oct < MAX_OCT ? oct_hues[next_oct] : 0;
181 uint8_t next_val = base_oct < MAX_OCT ? val : 0;
182 uint8_t next_sat = base_oct < MAX_OCT ? sat : 0;
183
184
185 for (uint8_t i = 0; i < 3; i++) {
186 sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]);
187 }
188
189 for (uint8_t i = 11; i < 14; i++) {
190 sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]);
191 }
192
193 rgblight_set();
194}
195
196void matrix_scan_user(void) {
197 rgblight_config_t rgblight_config;
198 rgblight_config.raw = eeconfig_read_rgblight();
199
200 if (!rgblight_config.enable || rgblight_config.mode != 1) { return; }
201
202 uint32_t layer = layer_state;
203 uint8_t val = rgblight_config.val;
204
205 if (layer & (1<<_FL)) {
206 if (layer & (1<<_ME)) {
207 clueboard_set_led(LAYER_MEDIA, val);
208 } else if (layer & (1<<_CL)) {
209 clueboard_set_led(LAYER_CONTROL, val);
210 } else {
211 clueboard_set_led(LAYER_FUNCTION, val);
212 }
213 } else if (layer & (1<<_ML)) {
214 clueboard_set_led(LAYER_MOUSE, val);
215#if defined(MIDI_ENABLE)
216 } else if (layer & (1<<_MI)) {
217 clueboard_set_midi_led(midi_config.octave, val);
218#endif
219 } else {
220 clueboard_set_led(LAYER_BASE, val);
221 }
222};