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