]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/vitamins_included/keymaps/juno/keymap.c
Update KBD67 readme so that it mentions the KBD65 PCB (#5143)
[qmk_firmware.git] / keyboards / vitamins_included / keymaps / juno / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "eeconfig.h"
3
4 extern keymap_config_t keymap_config;
5
6 #define _QWERTY 0
7 #define _COLEMAK 1
8 #define _DVORAK 2
9 #define _LOWER 3
10 #define _RAISE 4
11 #define _ADJUST 16
12
13 #define _FN1 5
14 #define _DPAD 6
15 #define _DPADNUM 7
16
17 enum custom_keycodes {
18   QWERTY = SAFE_RANGE,
19   COLEMAK,
20   DVORAK,
21   LOWER,
22   RAISE,
23   ADJUST,
24   
25   FN1,
26   DP_ON,
27   DP_OFF
28 };
29
30 #define XXXXXXX KC_NO
31
32 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33
34 /* Qwerty
35  * ,-----------------------------------------------------------------------------------.
36  * | ESC  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
37  * |------+------+------+------+------+-------------+------+------+------+------+------|
38  * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
39  * |------+------+------+------+------+------|------+------+------+------+------+------|
40  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
41  * |------+------+------+------+------+------+------+------+------+------+------+------|
42  * |  App | Ctrl | GUI  |  Alt |Lower |   SpaceFn   |Raise | Left | Down |  Up  |Right |
43  * `-----------------------------------------------------------------------------------'
44  */
45 [_QWERTY] = LAYOUT_ortho_4x12( \
46   KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
47   KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
48   KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, RSFT_T(KC_ENT), \
49   KC_APP,  KC_LCTL, KC_LGUI, KC_LALT, LOWER,   LT(_FN1, KC_SPC), 
50                                                                                            LT(_FN1, KC_SPC), RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT \
51 ),
52
53 /* Colemak
54  * ,-----------------------------------------------------------------------------------.
55  * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
56  * |------+------+------+------+------+-------------+------+------+------+------+------|
57  * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  '   |
58  * |------+------+------+------+------+------|------+------+------+------+------+------|
59  * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
60  * |------+------+------+------+------+------+------+------+------+------+------+------|
61  * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
62  * `-----------------------------------------------------------------------------------'
63  */
64 [_COLEMAK] = LAYOUT_ortho_4x12( \
65   KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
66   KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
67   KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
68   ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
69 ),
70
71 /* Dvorak
72  * ,-----------------------------------------------------------------------------------.
73  * | Tab  |   '  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
74  * |------+------+------+------+------+-------------+------+------+------+------+------|
75  * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
76  * |------+------+------+------+------+------|------+------+------+------+------+------|
77  * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
78  * |------+------+------+------+------+------+------+------+------+------+------+------|
79  * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
80  * `-----------------------------------------------------------------------------------'
81  */
82 [_DVORAK] = LAYOUT_ortho_4x12( \
83   KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
84   KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
85   KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT , \
86   ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
87 ),
88
89 /* Lower
90  * ,-----------------------------------------------------------------------------------.
91  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
92  * |------+------+------+------+------+-------------+------+------+------+------+------|
93  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
94  * |------+------+------+------+------+------|------+------+------+------+------+------|
95  * |RESET |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
96  * |------+------+------+------+------+------+------+------+------+------+------+------|
97  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
98  * `-----------------------------------------------------------------------------------'
99  */
100 [_LOWER] = LAYOUT_ortho_4x12( \
101   KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
102   KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
103   RESET,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______, \
104   _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
105 ),
106
107 /* Raise
108  * ,-----------------------------------------------------------------------------------.
109  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
110  * |------+------+------+------+------+-------------+------+------+------+------+------|
111  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
112  * |------+------+------+------+------+------|------+------+------+------+------+------|
113  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |RESET |
114  * |------+------+------+------+------+------+------+------+------+------+------+------|
115  * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
116  * `-----------------------------------------------------------------------------------'
117  */
118 [_RAISE] = LAYOUT_ortho_4x12( \
119   KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
120   KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
121   _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, RESET, \
122   _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
123 ),
124
125 /* Adjust (Lower + Raise)
126  * ,-----------------------------------------------------------------------------------.
127  * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
128  * |------+------+------+------+------+-------------+------+------+------+------+------|
129  * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
130  * |------+------+------+------+------+------|------+------+------+------+------+------|
131  * |      |      |      |      |      |      |      |      |      |      |      |      |
132  * |------+------+------+------+------+------+------+------+------+------+------+------|
133  * |      |      |      |      |      |             |      |      |      |      |RGB_MOD|
134  * `-----------------------------------------------------------------------------------'
135  */
136  
137 [_ADJUST] =  LAYOUT_ortho_4x12( \
138   _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
139   _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
140   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
141   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD \
142 ),
143
144 // Two personal additional layers below
145 // There's no brite key
146
147 /* Function (personal function layer)
148  * ,-----------------------------------------------------------------------------------.
149  * |      | Vol+ | PgUp |  Up  | PdDn | Ins  |      |      |  Up  |      | PScr |      |
150  * |------+------+------+------+------+-------------+------+------+------+------+------|
151  * |      | Vol- | Left | Down | Right| Home |      | Left | Down |Right |      | Del  |
152  * |------+------+------+------+------+------|------+------+------+------+------+------|
153  * |      | Prev | Play | Next |      | End  |      |      | Vol- | Vol+ | Mute |      |
154  * |------+------+------+------+------+------+------+------+------+------+------+------|
155  * | Caps |      |      |      |      |    Space    |      | DP_ON|      |      |      |
156  * `-----------------------------------------------------------------------------------'
157  */
158
159 [_FN1] = LAYOUT_ortho_4x12( \
160   _______, KC_VOLU, KC_PGUP, KC_UP,   KC_PGDN, KC_INS,  _______, _______, KC_UP,   _______, KC_PSCR, _______, \
161   _______, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL,  \
162   _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_END,  _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, \
163   KC_CAPS, _______, _______, _______, _______, _______, _______, _______, DP_ON,   _______, _______, _______ \
164 ),
165
166 /* DPAD layer, for active arrow cluster at the bottom right corner
167
168  * ,-----------------------------------------------------------------------------------.
169  * | ESC  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
170  * |------+------+------+------+------+-------------+------+------+------+------+------|
171  * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
172  * |------+------+------+------+------+------|------+------+------+------+------+------|
173  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |  Up  |Enter |
174  * |------+------+------+------+------+------+------+------+------+------+------+------|
175  * | Ctrl | GUI  | Alt  |      |DNUM  |    Space    |      |DP_OFF| Left | Down |Right |
176  * `-----------------------------------------------------------------------------------'
177  */
178
179 [_DPAD] = LAYOUT_ortho_4x12( \
180   KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
181   KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
182   KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_UP,   KC_ENT , \
183   KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, MO(_DPADNUM),
184                                                                                            KC_SPC,  KC_SPC,  LOWER,   DP_OFF,  KC_LEFT, KC_DOWN, KC_RGHT \
185 ),
186
187 // Extended layer for weapon switchings
188
189 [_DPADNUM] = LAYOUT_ortho_4x12( \
190   XXXXXXX, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    XXXXXXX  , \
191   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6  , \
192   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12 , \
193   _______, _______, _______, XXXXXXX, MO(_DPADNUM),
194                                                                                            XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX,   XXXXXXX,   XXXXXXX,   XXXXXXX   \
195 )
196
197 };
198
199 void persistent_default_layer_set(uint16_t default_layer) {
200   eeconfig_update_default_layer(default_layer);
201   default_layer_set(default_layer);
202 }
203
204 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
205   switch (keycode) {
206     case QWERTY:
207       if (record->event.pressed) {
208         persistent_default_layer_set(1UL<<_QWERTY);
209       }
210       return false;
211       break;
212     case COLEMAK:
213       if (record->event.pressed) {
214         persistent_default_layer_set(1UL<<_COLEMAK);
215       }
216       return false;
217       break;
218     case DVORAK:
219       if (record->event.pressed) {
220         persistent_default_layer_set(1UL<<_DVORAK);
221       }
222       return false;
223       break;
224     case LOWER:
225       if (record->event.pressed) {
226         layer_on(_LOWER);
227         update_tri_layer(_LOWER, _RAISE, _ADJUST);
228       } else {
229         layer_off(_LOWER);
230         update_tri_layer(_LOWER, _RAISE, _ADJUST);
231       }
232       return false;
233       break;
234     case RAISE:
235       if (record->event.pressed) {
236         layer_on(_RAISE);
237         update_tri_layer(_LOWER, _RAISE, _ADJUST);
238       } else {
239         layer_off(_RAISE);
240         update_tri_layer(_LOWER, _RAISE, _ADJUST);
241       }
242       return false;
243       break;
244     case ADJUST:
245       if (record->event.pressed) {
246         layer_on(_ADJUST);
247       } else {
248         layer_off(_ADJUST);
249       }
250       return false;
251       break;
252           
253          // Additional personal custom functions          
254
255         case KC_CAPS:
256                 if (record->event.pressed) {
257                         #ifdef AUDIO_ENABLE
258                         if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
259                         //      PLAY_SONG(caps_song_off);
260                         } else {
261                         //      PLAY_SONG(caps_song_on);
262                         }
263                         #endif
264                 }
265                 return true; // process the actual function of Caps Lock
266                 //break;
267                 
268         case DP_ON:
269                 if (record->event.pressed) {
270                         
271                 } else {
272                         // activated upon release
273                         #ifdef AUDIO_ENABLE
274                         // PLAY_SONG(dpad_song_on);
275                         #endif
276                         
277                         layer_off(_FN1);
278                         layer_on(_DPAD);
279                 }
280                 
281         case DP_OFF:
282                 if (record->event.pressed) {
283                         // deactivated upon pressdown
284                         #ifdef AUDIO_ENABLE     
285                         // PLAY_SONG(dpad_song_off);
286                         #endif
287                         
288                         //layer_off(_FN1); // do not put in this line
289                         layer_off(_DPAD);       
290                 }
291   }
292   return true;
293 }