]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/preonic/keymaps/blake-newman/keymap.c
layout(preonic): blake-newman's layout (#2483)
[qmk_firmware.git] / keyboards / preonic / keymaps / blake-newman / keymap.c
1 /* Copyright 2015-2017 Jack Humbert
2  *
3  * This program is free software: you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation, either version 2 of the License, or
6  * (at your option) any later version.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 #include "preonic.h"
18 #include "action_layer.h"
19
20 enum preonic_layers {
21   _QWERTY,
22   _COLEMAK,
23   _DVORAK,
24   _NUMPAD,
25   _LOWER,
26   _RAISE,
27   _ADJUST
28 };
29
30 enum preonic_keycodes {
31   QWERTY = SAFE_RANGE,
32   COLEMAK,
33   DVORAK,
34   NUMPAD,
35   LOWER,
36   RAISE,
37   BACKLIT
38 };
39
40 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41
42   /* Qwerty
43   * ,-----------------------------------------------------------------------------------.
44   * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |
45   * |------+------+------+------+------+------+------+------+------+------+------+------|
46   * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
47   * |------+------+------+------+------+-------------+------+------+------+------+------|
48   * | Bksp |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
49   * |------+------+------+------+------+------|------+------+------+------+------+------|
50   * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Shift|
51   * |------+------+------+------+------+------+------+------+------+------+------+------|
52   * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise |      |  Alt | Ctrl | Shift|
53   * `-----------------------------------------------------------------------------------'
54   */
55   [_QWERTY] = {
56     {KC_GRV,  KC_1,    KC_2,    KC_5,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL},
57     {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
58     {KC_BSPC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
59     {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
60     {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   _______, KC_RALT, KC_RCTL, KC_RSFT}
61   },
62
63   /* Colemak
64   * ,-----------------------------------------------------------------------------------.
65   * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |
66   * |------+------+------+------+------+------+------+------+------+------+------+------|
67   * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
68   * |------+------+------+------+------+-------------+------+------+------+------+------|
69   * | Bksp |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
70   * |------+------+------+------+------+------|------+------+------+------+------+------|
71   * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  | Shift|
72   * |------+------+------+------+------+------+------+------+------+------+------+------|
73   * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise |      |  Alt | Ctrl | Shift|
74   * `-----------------------------------------------------------------------------------'
75   */
76   [_COLEMAK] = {
77     {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL},
78     {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
79     {KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
80     {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT},
81     {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   _______, KC_RALT, KC_RCTL, KC_RSFT}
82   },
83
84   /* Dvorak
85   * ,-----------------------------------------------------------------------------------.
86   * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Del  |
87   * |------+------+------+------+------+------+------+------+------+------+------+------|
88   * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
89   * |------+------+------+------+------+-------------+------+------+------+------+------|
90   * | Bksp |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
91   * |------+------+------+------+------+------|------+------+------+------+------+------|
92   * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  | Shift|
93   * |------+------+------+------+------+------+------+------+------+------+------+------|
94   * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise |      |  Alt | Ctrl | Shift|
95   * `-----------------------------------------------------------------------------------'
96   */
97   [_DVORAK] = {
98     {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL},
99     {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
100     {KC_BSPC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
101     {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSFT},
102     {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   _______, KC_RALT, KC_RCTL, KC_RSFT}
103   },
104
105   /* Numpad
106   * ,-----------------------------------------------------------------------------------.
107   * | Esc  |      |      | PgDn | PgUp | Home |  End  |      |   /  |   *  |   -  | Del  |
108   * |------+------+------+------+------+------+------+------+------+------+------+------|
109   * | Tab  |      |  Up  |      |      |      |      |   7  |   8  |   9  |   +  | Bksp |
110   * |------+------+------+------+------+-------------+------+------+------+------+------|
111   * | Bksp | Left | Down | Right|      |      |      |   4  |   5  |   6  |      |  "   |
112   * |------+------+------+------+------+------|------+------+------+------+------+------|
113   * | Shift|      |      |      |      |      |   ,  |   1  |   2  |   3  |      | Shift|
114   * |------+------+------+------+------+------+------+------+------+------+------+------|
115   * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise |   0  |   .  | Ctrl | Shift|
116   * `-----------------------------------------------------------------------------------'
117   */
118   [_NUMPAD] = {
119     {KC_ESC,  _______, _______, KC_PGDN, KC_PGUP, KC_END,  KC_HOME, _______, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL},
120     {KC_TAB,  _______, KC_UP,   _______, _______, _______, _______, KC_P7,   KC_P8,   KC_P9,   KC_PPLS, KC_BSPC},
121     {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_P4,   KC_P5,   KC_P6,   _______, KC_QUOT},
122     {KC_LSFT, _______, _______, _______, _______, _______, KC_COMM, KC_P1,   KC_P2,   KC_P3,   _______, KC_RSFT},
123     {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_P0,   KC_PDOT, KC_RCTL, KC_RSFT}
124   },
125
126
127   /* Lower
128   * ,-----------------------------------------------------------------------------------.
129   * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
130   * |------+------+------+------+------+-------------+------+------+------+------+------|
131   * |  Esc |      |  Up  |      |      |      |      |   -_ |   -  |   +  |   =  | Bksp |
132   * |------+------+------+------+------+-------------+------+------+------+------+------|
133   * |  Bksp| Left | Down | Right|      |      |      |   {  |   }  |   [  |   ]  |   \  |
134   * |------+------+------+------+------+------|------+------+------+------+------+------|
135   * | Shift|   |  |      |      |      |      |      |      |      |   ¢  |   €  | Shift|
136   * |------+------+------+------+------+------+------+------+------+------+------+------|
137   * | Brite| Ctrl | Alt  | GUI  |Lower |    Enter    |Raise |      |  Alt | Ctrl | Shift|
138   * `-----------------------------------------------------------------------------------'
139   */
140   [_LOWER] = {
141     {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12},
142     {KC_ESC,  _______, KC_UP,   _______, _______, _______, _______, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL,  KC_BSPC},
143     {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_BSLS},
144     {KC_LSFT, KC_PIPE, _______, _______, _______, _______, _______, _______, ALGR_T(KC_4), ALGR_T(KC_5), _______,  KC_RSFT},
145     {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_ENT,  KC_ENT,  RAISE,   _______, KC_RALT, KC_RCTL, KC_RSFT}
146   },
147
148   /* Raise
149   * ,-----------------------------------------------------------------------------------.
150   * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
151   * |------+------+------+------+------+-------------+------+------+------+------+------|
152   * |  Esc |      |  Up  |      |      |      |      |   -  |   _  |   =  |   +  | Bksp |
153   * |------+------+------+------+------+-------------+------+------+------+------+------|
154   * | Bksp | Left | Down | Right|      |      |      |   [  |  ]   |   {  |   }  |   |  |
155   * |------+------+------+------+------+------|------+------+------+------+------+------|
156   * | Shift|  \   |      |      |      |      |      |      |      |   £  |  $   | Shift|
157   * |------+------+------+------+------+------+------+------+------+------+------+------|
158   * | Brite| Ctrl | Alt  | GUI  |Lower |    Enter    |Raise |      |  Alt | Ctrl | Shift|
159   * `-----------------------------------------------------------------------------------'
160   */
161   [_RAISE] = {
162     {KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12},
163     {KC_ESC,  _______, KC_UP,   _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_EQL,  KC_PLUS, KC_BSPC},
164     {KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_PIPE},
165     {KC_LSFT, KC_BSLS, _______, _______, _______, _______, _______, _______, _______, ALGR_T(KC_DLR), KC_DLR,  KC_RSFT},
166     {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_ENT,  KC_ENT,  RAISE,   _______, KC_RALT, KC_RCTL, KC_RSFT}
167   },
168
169   /* Adjust (Lower + Raise)
170   * ,-----------------------------------------------------------------------------------.
171   * |      |      |      |      |      |      |      |      |      |      |      |      |
172   * |------+------+------+------+------+------+------+------+------+------+------+------|
173   * |      | Reset| Debug|      |      |      |      |      |      | aPscr| sPscr| Pscr |
174   * |------+------+------+------+------+-------------+------+------+------+------+------|
175   * | Caps |      |      |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Numpad|Insert|
176   * |------+------+------+------+------+------|------+------+------+------+------+------|
177   * |      |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff|      |      |      |      |      |
178   * |------+------+------+------+------+------+------+------+------+------+------+------|
179   * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
180   * `-----------------------------------------------------------------------------------'
181   */
182   [_ADJUST] = {
183     {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
184     {_______, RESET,   DEBUG,   _______, _______, _______, _______, TERM_ON, TERM_OFF,LALT(KC_PSCR), LCTL(KC_PSCR), KC_PSCR},
185     {KC_CAPS, _______, MU_MOD,  AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  NUMPAD,  KC_INS},
186     {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
187     {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
188   }
189
190 };
191
192 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
193   switch (keycode) {
194         case QWERTY:
195           if (record->event.pressed) {
196             set_single_persistent_default_layer(_QWERTY);
197           }
198           return false;
199           break;
200         case COLEMAK:
201           if (record->event.pressed) {
202             set_single_persistent_default_layer(_COLEMAK);
203           }
204           return false;
205           break;
206         case DVORAK:
207           if (record->event.pressed) {
208             set_single_persistent_default_layer(_DVORAK);
209           }
210           return false;
211           break;
212         case NUMPAD:
213           if (record->event.pressed) {
214             set_single_persistent_default_layer(_NUMPAD);
215           }
216           return false;
217           break;
218         case LOWER:
219           if (record->event.pressed) {
220             layer_on(_LOWER);
221             update_tri_layer(_LOWER, _RAISE, _ADJUST);
222           } else {
223             layer_off(_LOWER);
224             update_tri_layer(_LOWER, _RAISE, _ADJUST);
225           }
226           return false;
227           break;
228         case RAISE:
229           if (record->event.pressed) {
230             layer_on(_RAISE);
231             update_tri_layer(_LOWER, _RAISE, _ADJUST);
232           } else {
233             layer_off(_RAISE);
234             update_tri_layer(_LOWER, _RAISE, _ADJUST);
235           }
236           return false;
237           break;
238         case BACKLIT:
239           if (record->event.pressed) {
240             register_code(KC_RSFT);
241             #ifdef BACKLIGHT_ENABLE
242               backlight_step();
243             #endif
244             PORTE &= ~(1<<6);
245           } else {
246             unregister_code(KC_RSFT);
247             PORTE |= (1<<6);
248           }
249           return false;
250           break;
251       }
252     return true;
253 };