]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox_ez/keymaps/default/keymap.c
[Keyboard] Add QMK configurator JSON for Alice PCB (#6397)
[qmk_firmware.git] / keyboards / ergodox_ez / keymaps / default / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "version.h"
3
4 #define BASE 0 // default layer
5 #define SYMB 1 // symbols
6 #define MDIA 2 // media keys
7
8 enum custom_keycodes {
9   EPRM = SAFE_RANGE,
10   VRSN,
11   RGB_SLD
12 };
13
14 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 /* Keymap 0: Basic layer
16  *
17  * ,--------------------------------------------------.           ,--------------------------------------------------.
18  * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    |
19  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
20  * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    |
21  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
22  * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd |
23  * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
24  * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
25  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
26  *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
27  *   `----------------------------------'                                       `----------------------------------'
28  *                                        ,-------------.       ,-------------.
29  *                                        | App  | LGui |       | Alt  |Ctrl/Esc|
30  *                                 ,------|------|------|       |------+--------+------.
31  *                                 |      |      | Home |       | PgUp |        |      |
32  *                                 | Space|Backsp|------|       |------|  Tab   |Enter |
33  *                                 |      |ace   | End  |       | PgDn |        |      |
34  *                                 `--------------------'       `----------------------'
35  */
36 [BASE] = LAYOUT_ergodox(
37   // left hand
38   KC_EQL,          KC_1,        KC_2,          KC_3,    KC_4,    KC_5,    KC_LEFT,
39   KC_DELT,         KC_Q,        KC_W,          KC_E,    KC_R,    KC_T,    TG(SYMB),
40   KC_BSPC,         KC_A,        KC_S,          KC_D,    KC_F,    KC_G,
41   KC_LSFT,         CTL_T(KC_Z), KC_X,          KC_C,    KC_V,    KC_B,    ALL_T(KC_NO),
42   LT(SYMB,KC_GRV), KC_QUOT,     LALT(KC_LSFT), KC_LEFT, KC_RGHT,
43                                                            ALT_T(KC_APP), KC_LGUI,
44                                                                           KC_HOME,
45                                                          KC_SPC, KC_BSPC, KC_END,
46   // right hand
47   KC_RGHT,      KC_6,    KC_7,    KC_8,    KC_9,              KC_0,           KC_MINS,
48   TG(SYMB),     KC_Y,    KC_U,    KC_I,    KC_O,              KC_P,           KC_BSLS,
49   KC_H,         KC_J,    KC_K,    KC_L,    LT(MDIA, KC_SCLN), GUI_T(KC_QUOT),
50   MEH_T(KC_NO), KC_N,    KC_M,    KC_COMM, KC_DOT,            CTL_T(KC_SLSH), KC_RSFT,
51   KC_UP,        KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB),
52   KC_LALT, CTL_T(KC_ESC),
53   KC_PGUP,
54   KC_PGDN, KC_TAB, KC_ENT
55 ),
56 /* Keymap 1: Symbol Layer
57  *
58  * ,---------------------------------------------------.           ,--------------------------------------------------.
59  * |Version  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
60  * |---------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
61  * |         |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
62  * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
63  * |         |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
64  * |---------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
65  * |         |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
66  * `---------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
67  *   | EPRM  |      |      |      |      |                                       |      |    . |   0  |   =  |      |
68  *   `-----------------------------------'                                       `----------------------------------'
69  *                                        ,-------------.       ,-------------.
70  *                                        |Animat|      |       |Toggle|Solid |
71  *                                 ,------|------|------|       |------+------+------.
72  *                                 |Bright|Bright|      |       |      |Hue-  |Hue+  |
73  *                                 |ness- |ness+ |------|       |------|      |      |
74  *                                 |      |      |      |       |      |      |      |
75  *                                 `--------------------'       `--------------------'
76  */
77 [SYMB] = LAYOUT_ergodox(
78   // left hand
79   VRSN,    KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,
80   KC_TRNS, KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
81   KC_TRNS, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,
82   KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,
83   EPRM,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
84                                                RGB_MOD, KC_TRNS,
85                                                         KC_TRNS,
86                                       RGB_VAD, RGB_VAI, KC_TRNS,
87   // right hand
88   KC_TRNS, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
89   KC_TRNS, KC_UP,   KC_7,    KC_8,    KC_9,    KC_ASTR, KC_F12,
90   KC_DOWN, KC_4,    KC_5,    KC_6,    KC_PLUS, KC_TRNS,
91   KC_TRNS, KC_AMPR, KC_1,    KC_2,    KC_3,    KC_BSLS, KC_TRNS,
92   KC_TRNS, KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
93   RGB_TOG, RGB_SLD,
94   KC_TRNS,
95   KC_TRNS, RGB_HUD, RGB_HUI
96 ),
97 /* Keymap 2: Media and mouse keys
98  *
99  * ,--------------------------------------------------.           ,--------------------------------------------------.
100  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
101  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
102  * |        |      |      | MsUp |      |      |      |           |      |      |      |      |      |      |        |
103  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
104  * |        |      |MsLeft|MsDown|MsRght|      |------|           |------|      |      |      |      |      |  Play  |
105  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
106  * |        |      |      |      |      |      |      |           |      |      |      | Prev | Next |      |        |
107  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
108  *   |      |      |      | Lclk | Rclk |                                       |VolUp |VolDn | Mute |      |      |
109  *   `----------------------------------'                                       `----------------------------------'
110  *                                        ,-------------.       ,-------------.
111  *                                        |      |      |       |      |      |
112  *                                 ,------|------|------|       |------+------+------.
113  *                                 |      |      |      |       |      |      |Brwser|
114  *                                 |      |      |------|       |------|      |Back  |
115  *                                 |      |      |      |       |      |      |      |
116  *                                 `--------------------'       `--------------------'
117  */
118 [MDIA] = LAYOUT_ergodox(
119   // left hand
120   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
121   KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
122   KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
123   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
124   KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
125                                                KC_TRNS, KC_TRNS,
126                                                         KC_TRNS,
127                                       KC_TRNS, KC_TRNS, KC_TRNS,
128   // right hand
129   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
130   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
131            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
132   KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
133                     KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
134   KC_TRNS, KC_TRNS,
135   KC_TRNS,
136   KC_TRNS, KC_TRNS, KC_WBAK
137 ),
138 };
139
140 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
141   if (record->event.pressed) {
142     switch (keycode) {
143       case EPRM:
144         eeconfig_init();
145         return false;
146       case VRSN:
147         SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
148         return false;
149       #ifdef RGBLIGHT_ENABLE
150       case RGB_SLD:
151         rgblight_mode(1);
152         return false;
153       #endif
154     }
155   }
156   return true;
157 }
158
159 // Runs just one time when the keyboard initializes.
160 void matrix_init_user(void) {
161 #ifdef RGBLIGHT_COLOR_LAYER_0
162   rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
163 #endif
164 };
165
166 // Runs whenever there is a layer state change.
167 uint32_t layer_state_set_user(uint32_t state) {
168   ergodox_board_led_off();
169   ergodox_right_led_1_off();
170   ergodox_right_led_2_off();
171   ergodox_right_led_3_off();
172
173   uint8_t layer = biton32(state);
174   switch (layer) {
175       case 0:
176         #ifdef RGBLIGHT_COLOR_LAYER_0
177           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
178         #else
179         #ifdef RGBLIGHT_ENABLE
180           rgblight_init();
181         #endif
182         #endif
183         break;
184       case 1:
185         ergodox_right_led_1_on();
186         #ifdef RGBLIGHT_COLOR_LAYER_1
187           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1);
188         #endif
189         break;
190       case 2:
191         ergodox_right_led_2_on();
192         #ifdef RGBLIGHT_COLOR_LAYER_2
193           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2);
194         #endif
195         break;
196       case 3:
197         ergodox_right_led_3_on();
198         #ifdef RGBLIGHT_COLOR_LAYER_3
199           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3);
200         #endif
201         break;
202       case 4:
203         ergodox_right_led_1_on();
204         ergodox_right_led_2_on();
205         #ifdef RGBLIGHT_COLOR_LAYER_4
206           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4);
207         #endif
208         break;
209       case 5:
210         ergodox_right_led_1_on();
211         ergodox_right_led_3_on();
212         #ifdef RGBLIGHT_COLOR_LAYER_5
213           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5);
214         #endif
215         break;
216       case 6:
217         ergodox_right_led_2_on();
218         ergodox_right_led_3_on();
219         #ifdef RGBLIGHT_COLOR_LAYER_6
220           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6);
221         #endif
222         break;
223       case 7:
224         ergodox_right_led_1_on();
225         ergodox_right_led_2_on();
226         ergodox_right_led_3_on();
227         #ifdef RGBLIGHT_COLOR_LAYER_7
228           rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7);
229         #endif
230         break;
231       default:
232         break;
233     }
234
235   return state;
236 };