]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/planck/keymaps/tylerwince/keymap.c
[Keymap] add planck/tylerwince (#6169)
[qmk_firmware.git] / keyboards / planck / keymaps / tylerwince / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "muse.h"
3
4 enum planck_keycodes {
5   RGB_SLD = SAFE_RANGE,
6   TOGGLE_LAYER_COLOR,
7 };
8
9 enum planck_layers {
10   _BASE,
11   _LOWER,
12   _RAISE,
13   _ADJUST,
14   _LAYER4,
15 };
16
17 //Tap Dance Declarations
18 enum {
19   TD_SEMI_COLON,
20 };
21
22 qk_tap_dance_action_t tap_dance_actions[] = {
23   [TD_SEMI_COLON] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
24 };
25
26 #define LOWER MO(_LOWER)
27 #define RAISE MO(_RAISE)
28
29 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30   [_BASE] = LAYOUT_planck_grid(
31             /* _BASE
32              * ,-----------------------------------------------------------------------------------.
33              * | Tab  |   '  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  |   /  |
34              * |------+------+------+------+------+-------------+------+------+------+------+------|
35              * |CtlEsc|   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  | Bksp |
36              * |------+------+------+------+------+------|------+------+------+------+------+------|
37              * |      |   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
38              * |------+------+------+------+------+------+------+------+------+------+------+------|
39              * |      | Ctrl | Alt  | GUI  |LOWER | Shift/Space | RAISE|      |      |      |      |
40              * `-----------------------------------------------------------------------------------'
41              */
42           KC_TAB,            KC_QUOTE,          KC_COMMA, KC_DOT,  KC_P,  KC_Y,             KC_F,  KC_G,  KC_C,    KC_R,    KC_L,    KC_SLASH,
43           LCTL_T(KC_ESCAPE), KC_A,              KC_O,     KC_E,    KC_U,  KC_I,             KC_D,  KC_H,  KC_T,    KC_N,    KC_S,    KC_BSPACE,
44           _______,           TD(TD_SEMI_COLON), KC_Q,     KC_J,    KC_K,  KC_X,             KC_B,  KC_M,  KC_W,    KC_V,    KC_Z,    KC_ENTER,
45           _______,           KC_LCTRL,          KC_LALT,  KC_LGUI, LOWER, LSFT_T(KC_SPACE), KC_NO, RAISE, _______, _______, _______, _______
46           ),
47
48   [_LOWER] = LAYOUT_planck_grid(
49             /* _LOWER
50              * ,-----------------------------------------------------------------------------------.
51              * |  `   |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   \  |
52              * |------+------+------+------+------+-------------+------+------+------+------+------|
53              * |  ~   |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   |  |
54              * |------+------+------+------+------+------|------+------+------+------+------+------|
55              * |      |      |      |      |      |      |      |   _  |   +  |   {  |   }  |Delete|
56              * |------+------+------+------+------+------+------+------+------+------+------+------|
57              * |      | Ctrl | Alt  | GUI  |LOWER | Shift/Space | RAISE|      |   [  |   ]  |      |
58              * `-----------------------------------------------------------------------------------'
59              */
60           KC_GRAVE, KC_1,     KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,        KC_0,        KC_BSLASH,
61           KC_TILD,  KC_EXLM,  KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN,     KC_RPRN,     KC_PIPE,
62           _______,  _______,  _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR,     KC_RCBR,     KC_DELETE,
63           _______,  KC_LCTRL, KC_LALT, KC_LGUI, _______, _______, KC_NO,   _______, _______, KC_LBRACKET, KC_RBRACKET, _______
64           ),
65
66   [_RAISE] = LAYOUT_planck_grid(
67             /* _RAISE
68              * ,-----------------------------------------------------------------------------------.
69              * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |      |      |      |      |RIGHT |      |
70              * |------+------+------+------+------+-------------+------+------+------+------+------|
71              * |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      | LEFT |      |      |      |Delete|
72              * |------+------+------+------+------+------|------+------+------+------+------+------|
73              * |      |      |      | DOWN |  UP  |      |      |   -  |   =  |      |      |      |
74              * |------+------+------+------+------+------+------+------+------+------+------+------|
75              * |THINGS|1PASS |      |      |LOWER | Shift/Space | RAISE|      |      |      |      |
76              * `-----------------------------------------------------------------------------------'
77              */
78
79           KC_F1,          KC_F2,           KC_F3,   KC_F4,   KC_F5,   KC_F6,   _______, _______,  _______,  _______, KC_RIGHT, _______,
80           KC_F7,          KC_F8,           KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, KC_LEFT,  _______,  _______, _______,  KC_DELETE,
81           _______,        _______,         _______, KC_DOWN, KC_UP,   _______, _______, KC_MINUS, KC_EQUAL, _______, _______,  _______,
82           LALT(KC_SPACE), LGUI(KC_BSLASH), _______, _______, _______, _______, KC_NO,   _______,  _______,  _______, _______,  _______
83           ),
84
85   [_ADJUST] = LAYOUT_planck_grid(
86             /* _LOWER
87              * ,-----------------------------------------------------------------------------------.
88              * |Reset |      |      |      |      |WIN-TL|WIN-TR|      |      |      |WIN-R |      |
89              * |------+------+------+------+------+-------------+------+------+------+------+------|
90              * |      |      |      |      |      |WIN-BL|WIN-BR|WIN-L |      |      |      |      |
91              * |------+------+------+------+------+------|------+------+------+------+------+------|
92              * |      |      |      |WIN-B |WIN-T |      |      |      |      |      |      |      |
93              * |------+------+------+------+------+------+------+------+------+------+------+------|
94              * | BASE |LAYER4|      |      |LOWER | Shift/Space | RAISE|VOL-DN| BR-DN|BR-UP |VOL-UP|
95              * `-----------------------------------------------------------------------------------'
96              */
97
98           RESET,   _______, _______, _______,          _______,          LALT(LCTL(KC_7)), LALT(LCTL(KC_8)), _______,          _______,           _______, LALT(LCTL(KC_L)), _______, 
99           _______, _______, _______, _______,          _______,          LALT(LCTL(KC_U)), LALT(LCTL(KC_I)), LALT(LCTL(KC_H)), _______,           _______, _______,          _______,          
100           _______, _______, _______, LALT(LCTL(KC_J)), LALT(LCTL(KC_K)), _______,          _______,          _______,          _______,           _______, _______,          LALT(LCTL(KC_ENTER)),
101           TO(0),   TO(4),   _______, _______,          _______,          _______,          KC_NO,            _______,          KC_AUDIO_VOL_DOWN, KC_F14,  KC_F15,           KC_AUDIO_VOL_UP
102           ),
103
104   [_LAYER4] = LAYOUT_planck_grid(
105             /* _LOWER
106              * ,-----------------------------------------------------------------------------------.
107              * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |   '  |
108              * |------+------+------+------+------+-------------+------+------+------+------+------|
109              * |CtlEsc|   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  | Bksp |
110              * |------+------+------+------+------+------|------+------+------+------+------+------|
111              * |      |   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
112              * |------+------+------+------+------+------+------+------+------+------+------+------|
113              * |      | Ctrl | Alt  | GUI  |LOWER | Shift/Space | RAISE|      |      |      |      |
114              * `-----------------------------------------------------------------------------------'
115              */
116
117           KC_TAB,            KC_Q,    KC_W,    KC_E,    KC_R,  KC_T,             KC_Y,  KC_U,  KC_I,     KC_O,    KC_P,      KC_QUOTE,
118           LCTL_T(KC_ESCAPE), KC_A,    KC_S,    KC_D,    KC_F,  KC_G,             KC_H,  KC_J,  KC_K,     KC_L,    KC_SCOLON, KC_BSPACE,
119           _______,           KC_Z,    KC_X,    KC_C,    KC_V,  KC_B,             KC_N,  KC_M,  KC_COMMA, KC_DOT,  KC_SLASH,  KC_ENTER,
120           _______,           KC_LCTL, KC_LALT, KC_LGUI, LOWER, LSFT_T(KC_SPACE), KC_NO, RAISE, _______,  _______, _______,   _______
121           ),
122
123 };
124
125 extern bool g_suspend_state;
126 extern rgb_config_t rgb_matrix_config;
127 bool disable_layer_color = 0;
128
129 void keyboard_post_init_user(void) {
130   rgb_matrix_enable();
131 }
132
133 const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = {
134     [0] = { {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,204,255}, {169,120,255}, {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255},
135             {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,204,255}, {169,120,255}, {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255},
136             {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,204,255}, {169,120,255}, {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255}, 
137             {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,0,0},     {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255} },
138
139     [1] = { {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255},
140             {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255},
141             {0,0,0},     {0,0,0},     {0,0,0},     {0,0,0},     {0,0,0},     {0,0,0},     {0,0,0},     {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255},
142             {0,0,0},     {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,0,0},     {0,0,0},     {0,0,0},     {0,204,255}, {0,204,255}, {0,0,0} },
143
144     [2] = { {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255}, {0,0,0},
145             {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {0,0,0}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255},
146             {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0},
147             {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
148
149     [4] = { {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255} },
150
151 };
152
153 void set_layer_color(int layer) {
154   for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
155     HSV hsv = {
156       .h = pgm_read_byte(&ledmap[layer][i][0]),
157       .s = pgm_read_byte(&ledmap[layer][i][1]),
158       .v = pgm_read_byte(&ledmap[layer][i][2]),
159     };
160     if (!hsv.h && !hsv.s && !hsv.v) {
161         rgb_matrix_set_color( i, 0, 0, 0 );
162     } else {
163         RGB rgb = hsv_to_rgb( hsv );
164         rgb_matrix_set_color( i, rgb.r, rgb.g, rgb.b );
165     }
166   }
167 }
168
169 void rgb_matrix_indicators_user(void) {
170   if (g_suspend_state || disable_layer_color) { return; }
171   switch (biton32(layer_state)) {
172     case 0:
173       set_layer_color(0);
174       break;
175     case 1:
176       set_layer_color(1);
177       break;
178     case 2:
179       set_layer_color(2);
180       break;
181     case 4:
182       set_layer_color(4);
183       break;
184   }
185 }
186
187 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
188   switch (keycode) {
189     case RGB_SLD:
190       if (record->event.pressed) {
191         rgblight_mode(1);
192       }
193       return false;
194     case RGB_TOG:
195   if (record->event.pressed) {
196     if (rgb_matrix_config.val) {
197       rgb_matrix_sethsv(rgb_matrix_config.hue, rgb_matrix_config.sat, 0);
198     } else {
199       rgb_matrix_sethsv(rgb_matrix_config.hue, rgb_matrix_config.sat, 255);
200     }
201   }
202   return false;
203     case TOGGLE_LAYER_COLOR:
204       if (record->event.pressed) {
205         disable_layer_color ^= 1;
206       }
207       return false;
208   }
209   return true;
210 }
211
212 bool muse_mode = false;
213 uint8_t last_muse_note = 0;
214 uint16_t muse_counter = 0;
215 uint8_t muse_offset = 70;
216 uint16_t muse_tempo = 50;
217
218 void encoder_update(bool clockwise) {
219     if (muse_mode) {
220         if (IS_LAYER_ON(_RAISE)) {
221             if (clockwise) {
222                 muse_offset++;
223             } else {
224                 muse_offset--;
225             }
226         } else {
227             if (clockwise) {
228                 muse_tempo+=1;
229             } else {
230                 muse_tempo-=1;
231             }
232         }
233     } else {
234         if (clockwise) {
235         #ifdef MOUSEKEY_ENABLE
236             tap_code(KC_MS_WH_DOWN);
237         #else
238             tap_code(KC_PGDN);
239         #endif
240         } else {
241         #ifdef MOUSEKEY_ENABLE
242             tap_code(KC_MS_WH_UP);
243         #else
244             tap_code(KC_PGUP);
245         #endif
246         }
247     }
248 }
249
250 void matrix_scan_user(void) {
251 #ifdef AUDIO_ENABLE
252     if (muse_mode) {
253         if (muse_counter == 0) {
254             uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
255             if (muse_note != last_muse_note) {
256                 stop_note(compute_freq_for_midi_note(last_muse_note));
257                 play_note(compute_freq_for_midi_note(muse_note), 0xF);
258                 last_muse_note = muse_note;
259             }
260         }
261         muse_counter = (muse_counter + 1) % muse_tempo;
262     }
263 #endif
264 }
265
266 bool music_mask_user(uint16_t keycode) {
267     switch (keycode) {
268     case RAISE:
269     case LOWER:
270         return false;
271     default:
272         return true;
273     }
274 }
275 uint32_t layer_state_set_user(uint32_t state) {
276     palClearPad(GPIOB, 8);
277     palClearPad(GPIOB, 9);
278     uint8_t layer = biton32(state);
279     switch (layer) {
280         case _LOWER:
281             palSetPad(GPIOB, 9);
282             break;
283         case _RAISE:
284             palSetPad(GPIOB, 8);
285             break;
286         case _ADJUST:
287             palSetPad(GPIOB, 9);
288             palSetPad(GPIOB, 8);
289             break;
290         default:
291             break;
292     }
293     return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
294 }