2 // ,------------------------------------. ,------------------------------------.
3 // | | | | | | | | | | | | | | | |
4 // |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
5 // | | | | | | | | | | | | | | | |
6 // |------+----+----+----x----x----| | | |----x----x----+----+----+------|
7 // | | | | | | |----| |----| | | | | | |
8 // |------+----+----+----x----x----| | | |----x----x----+----+----+------|
9 // | | | | | | | | | | | | | | | |
10 // `------+----+----+----+----+---------' `---------+----+----+----+----+------'
11 // | | | | | | | | | | | |
12 // `------------------------' `------------------------'
13 // ,---------. ,---------.
15 // ,----+----+----| |----+----+----.
17 // | | |----| |----| | |
19 // `--------------' `--------------'
22 #include QMK_KEYBOARD_H
35 TD_LAYR, // SYSCTL and MOUSE layer switch
38 // application selection
39 // this is sending ctrl-alt-gui-<key>, and this is picked up by hammerspoon
40 #define AP_SLCK ALLM(KC_S)
41 #define AP_XCOD ALLM(KC_X)
42 #define AP_MSGR ALLM(KC_M)
45 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46 // ,------------------------------------. ,------------------------------------.
47 // |4xFLSH| | | | | |Opt | | | | | | | | |
48 // |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
49 // | Tab | | | | | | | | | | | | | | |
50 // |------+----+----+----x----x----| | | |----x----x----+----+----+------|
51 // |EscCtl| | | | | |----| |----| | | | | | Ent |
52 // |------+----+----+----x----x----| | | |----x----x----+----+----+------|
53 // |LShift| | | | | | | | | | | | | |RShift|
54 // `------+----+----+----+----+---------' `---------+----+----+----+----+------'
55 // | | | | |Cmd | | | | | | |
56 // `------------------------' `------------------------'
57 // ,---------. ,---------.
59 // ,----+----+----| |----+----+----.
60 // | Ba | L | | | | | |
61 // | ck |Shi |----| |----| |Spc |
62 // | spc| ft | | | | | |
63 // `--------------' `--------------'
64 [LR_BASE] = LAYOUT_ergodox_pretty_wrapper(
65 TD_3FLS, _______, _______, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______,
66 KC_TAB , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
67 PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT ,
68 KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
69 _______, _______, _______, KC_LGUI, SYMBOL , SYSCTL , KC_RALT, _______, _______, _______,
70 QWERTY , CARPALX, _______, _______,
72 KC_BSPC, _______, _______, _______, _______, KC_SPC
75 // ,------------------------------------. ,------------------------------------.
76 // | | NUMBERS_L | | | - | NUMBERS_R | = |
77 // |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
78 // | | | [ | | ] | | |
79 // |------+ | | | | +------|
80 // | | QWERTY_L |----| |----| QWERTY_R | |
81 // |------+ | ( | | ) | +------|
83 // `------+----+----+----+----+---------' `---------+----+----+----+----+------'
84 // | | ` | | | | | | | | ' | |
85 // `------------------------' `------------------------'
86 // ,---------. ,---------.
88 // ,----+----+----| |----+----+----.
90 // | | |----| |----| | |
92 // `--------------' `--------------'
93 // See `users/pvinis/pvinis.h`
94 [LR_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
95 _______, ________________NUMBERS_L__________________, _______, KC_MINS, ________________NUMBERS_R__________________, KC_EQL ,
96 _______, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R1_________________, _______,
97 _______, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, _______,
98 _______, _________________QWERTY_L3_________________, KC_LPRN, KC_RPRN, _________________QWERTY_R3_________________, _______,
99 _______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_QUOT , _______,
100 _______, _______, _______, _______,
102 _______, _______, _______, _______, _______, _______
105 // ,------------------------------------. ,------------------------------------.
106 // | | NUMBERS_L | | | | NUMBERS_R | |
107 // |------+----+----+----+----+---------| |----+----+----+----+----+----+------|
109 // |------+ | | | | +------|
110 // | | CARPALX_L |----| |----| CARPALX_R | |
111 // |------+ | | | | +------|
113 // `------+----+----+----+----+---------' `---------+----+----+----+----+------'
114 // | | | | | | | | | | | |
115 // `------------------------' `------------------------'
116 // ,---------. ,---------.
118 // ,----+----+----| |----+----+----.
120 // | | |----| |----| | |
122 // `--------------' `--------------'
123 // See `users/pvinis/pvinis.h`
124 [LR_CARPALX] = LAYOUT_ergodox_pretty_wrapper(
125 _______, ________________NUMBERS_L__________________, _______, _______, ________________NUMBERS_R__________________, _______,
126 _______, ________________CARPALX_L1_________________, _______, _______, ________________CARPALX_R1_________________, _______,
127 _______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______,
128 _______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______,
129 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
130 _______, _______, _______, _______,
132 _______, _______, _______, _______, _______, _______
135 // See `users/pvinis/pvinis.h`
136 [LR_SYMBOL] = LAYOUT_ergodox_pretty_wrapper(
137 _______, ______________________F_L__________________, KC_F11 , KC_F12 , ______________________F_R__________________, _______,
138 _______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______,
139 _______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
140 _______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______,
141 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
142 _______, _______, _______, _______,
144 _______, _______, _______, _______, _______, _______
147 // See `users/pvinis/pvinis.h`
148 [LR_SYSCTL] = LAYOUT_ergodox_pretty_wrapper(
149 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
150 _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______,
151 _______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______,
152 _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______,
153 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
155 _______, _______, _______, _______,
157 _______, _______, _______, _______, _______, _______
160 // See `users/pvinis/pvinis.h`
161 [LR_KBCTL] = LAYOUT_ergodox_pretty_wrapper(
162 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
163 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R1_________________, XXXXXXX,
164 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R2_________________, XXXXXXX,
165 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX,
166 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
168 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
170 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
174 * a keymap to control my system.
176 * ,--------------------------------------------------. ,--------------------------------------------------.
177 * | ^ | | | | | | | | | | | | | | |
178 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
179 * | | | | | | | | | | | | MsUp | | | |
180 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
181 * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | |
182 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
183 * | | | | | | | | | | | | | | | |
184 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
185 * | | | | | | | | | | | |
186 * `----------------------------------' `----------------------------------'
187 * ,-------------. ,-------------.
189 * ,------|------|------| |------+------+------.
190 * | | | | | |Left |Right |
191 * | | |------| |------| Click| Click|
193 * `--------------------' `--------------------'
195 [MOUSE] = LAYOUT_ergodox_pretty(
196 KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
197 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
198 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
199 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
200 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
204 ,KC_NO ,KC_NO ,KC_TRNS
206 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
207 ,KC_NO ,KC_NO ,KC_NO ,KC_MS_U ,KC_NO ,KC_NO ,KC_NO
208 ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
209 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
210 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
219 // keyboard initialization
220 void keyboard_post_init_user_local(void) {
221 ergodox_led_all_on();
222 for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
223 ergodox_led_all_set(i);
227 for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
228 ergodox_led_all_set(i);
231 ergodox_led_all_off();
233 // restore default brightness for future use
234 ergodox_led_all_set(LED_BRIGHTNESS_HI);
237 // light up leds based on the layer
238 uint32_t layer_state_set_user_local(uint32_t state) {
239 ergodox_right_led_1_off();
240 ergodox_right_led_2_off();
241 ergodox_right_led_3_off();
242 switch (biton32(state)) {
244 ergodox_right_led_3_on(); // blue
247 ergodox_right_led_1_on(); // red
250 ergodox_right_led_2_on(); // green
258 // const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
261 // return MACRO_NONE;
266 // flash keyboard on 4x tap, with leds
267 // void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
268 // switch (state->count) {
270 // ergodox_right_led_3_on();
273 // ergodox_right_led_2_on();
276 // ergodox_right_led_1_on();
279 // ergodox_right_led_3_off();
281 // ergodox_right_led_2_off();
283 // ergodox_right_led_1_off();
288 // void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
289 // if (state->count >= 4) {
291 // reset_tap_dance(state);
295 // void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
296 // ergodox_right_led_1_off();
298 // ergodox_right_led_2_off();
300 // ergodox_right_led_3_off();
303 // SYSCTL on first tap, MOUSE ON second tap
304 // void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
305 // uint8_t layer = biton32(layer_state);
307 // switch(state->count) {
311 // layer_off(LR_SYSCTL);
317 // layer_on(LR_SYSCTL);
327 // qk_tap_dance_action_t tap_dance_actions[] = {
328 // [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
329 // [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),