1 #include QMK_KEYBOARD_H
2 #include "quantum_keycodes.h"
3 #include "action_layer.h"
7 #define VERSION_STRING QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION
8 #define _______ KC_TRNS
9 #define X_____X KC_TRNS
10 #define KC_ATM LGUI(LSFT(KC_P))
11 #define KC_ATP LGUI(LCTL(KC_P))
12 #define TO_NORM TO(NORMAL_MODE)
14 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
18 * ,--------------------------------------------------. ,--------------------------------------------------.
19 * | | | | | | | | | | | | | | | |
20 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
21 * | TAB | | WORD | END | | | | | | YANK | UNDO | | OPEN | PUT | |
22 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
23 * | ⎋ | | | DEL | | |------| |------| ← | ↓ | ↑ | → | | ⎋ |
24 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
25 * | SHIFT | | | |VISUAL| BACK | | | | | | | | | SHIFT |
26 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
27 * | | | | | | | | | | | |
28 * `----------------------------------' `----------------------------------'
29 * ,-------------. ,-------------.
31 * ,------|------|------| |------+------+------.
33 * |SPACE |DELETE|------| |------|ENTER |BACKSP|
35 * `--------------------' `--------------------'
37 [NORMAL_MODE
] = KEYMAP(
39 X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,
40 KC_TAB
,X_____X
,VIM_W
, VIM_E
,X_____X
,X_____X
,X_____X
,
41 X_____X
,VIM_A
,VIM_S
,VIM_D
,X_____X
,X_____X
,
42 KC_LSFT
,X_____X
,VIM_X
,VIM_C
,VIM_V
,VIM_B
,X_____X
,
43 KC_LCTL
,KC_LALT
,X_____X
,X_____X
,X_____X
,
47 GUI_T(KC_SPC
), KC_ESC
,_______
,
51 X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,
52 X_____X
,VIM_Y
,VIM_U
,VIM_I
,VIM_O
,VIM_P
,X_____X
,
53 VIM_H
,VIM_J
,VIM_K
,VIM_L
,X_____X
,X_____X
,
54 X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,X_____X
,KC_LSFT
,
55 X_____X
,X_____X
,X_____X
,KC_RALT
,KC_RCTL
,
59 KC_DEL
, KC_ENT
, GUI_T(KC_BSPC
)
64 * ,--------------------------------------------------. ,--------------------------------------------------.
65 * | NORMAL | 1 | 2 | 3 | 4 | 5 | ⇧⌘P | | PROJ | 6 | 7 | 8 | 9 | 0 | - |
66 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
67 * | ⇥ | Q | W | E | R | T | ` | | - | Y | U | I | O | P | \ |
68 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
69 * | ⎋ | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
70 * |--------+------+------+------+------+------| = | | + |------+------+------+------+------+--------|
71 * | L⇧ | Z | X | C | V | B | | | | N | M | , | . | / | R⇧ |
72 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
73 * | ⌃ | ⌥ | ( | [ | { | | } | ] | ) | ⌥ | ⌃ |
74 * `----------------------------------' `----------------------------------'
75 * ,-------------. ,-------------.
76 * | HOME | END | | PGDN | PGUP |
77 * ,------|------|------| |------+------+------.
78 * |SPACE | | | | | | BSPC |
79 * | |NORMAL|------| |------| ENTER| |
81 * `--------------------' `--------------------'
83 [INSERT_MODE
] = KEYMAP(
85 NOR_MOD
,KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_ATM
,
86 KC_TAB
,KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_GRV
,
87 KC_ESC
,KC_A
, KC_S
, KC_D
, KC_F
, KC_G
,
88 KC_LSFT
,KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_EQL
,
89 KC_LCTL
,KC_LALT
,KC_LPRN
,KC_LBRC
, KC_LCBR
,
93 GUI_T(KC_SPC
),KC_ESC
,TO_NORM
,
97 KC_ATP
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_MINS
,
98 KC_MINS
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSLS
,
99 KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
,KC_QUOT
,
100 KC_PLUS
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
,KC_RSFT
,
101 KC_RCBR
,KC_RBRC
, KC_RPRN
,KC_RALT
,KC_RCTL
,
105 MO(MOUSE
) , KC_ENT
, GUI_T(KC_BSPC
)
110 NOR_MOD
,KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_ATM
,
111 KC_TAB
,KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_GRV
,
112 _______
,KC_A
, KC_S
, KC_D
, KC_F
, KC_G
,
113 KC_LSFT
,KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_EQL
,
114 KC_LCTL
,KC_LALT
,KC_LPRN
,KC_LBRC
, KC_LCBR
,
118 _______
,_______
,TO_NORM
,
121 KC_ATP
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_MINS
,
122 KC_MINS
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSLS
,
123 KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
,KC_QUOT
,
124 KC_PLUS
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
,KC_RSFT
,
125 KC_RCBR
,KC_RBRC
, KC_RPRN
,KC_RALT
,KC_RCTL
,
129 _______
,_______
,_______
134 _______
,_______
,_______
,_______
,_______
,_______
,_______
,
135 _______
,_______
,_______
,_______
,_______
,_______
,_______
,
136 _______
,_______
,_______
,_______
,_______
,_______
,
137 _______
,_______
,_______
,_______
,_______
,_______
,_______
,
138 _______
,_______
,_______
,_______
,_______
,
142 _______
,_______
,_______
,
145 _______
,_______
,_______
,_______
,_______
,_______
,_______
,
146 _______
,_______
,KC_BTN1
,KC_BTN3
,KC_BTN2
,_______
,_______
,
147 KC_MS_L
,KC_MS_D
,KC_MS_U
,KC_MS_R
,_______
,_______
,
148 _______
,_______
,_______
,_______
,_______
,_______
,_______
,
149 _______
,_______
,_______
,_______
,_______
,
153 _______
,_______
,_______
157 const uint16_t PROGMEM fn_actions
[] = {
158 [1] = ACTION_LAYER_TAP_TOGGLE(1)
161 const macro_t
*action_get_macro(keyrecord_t
*record
, uint8_t id
, uint8_t opt
) {
164 if (record
->event
.pressed
) { SEND_STRING (VERSION_STRING
); }
170 bool process_record_user(uint16_t keycode
, keyrecord_t
*record
) {
171 bool SHIFTED
= (keyboard_report
->mods
& MOD_BIT(KC_LSFT
)) |
172 (keyboard_report
->mods
& MOD_BIT(KC_RSFT
));
177 if (record
->event
.pressed
) { SHIFTED
? VIM_APPEND_LINE() : VIM_APPEND(); }
181 if (record
->event
.pressed
) {
183 case KC_NO
: VIM_BACK(); break;
184 case VIM_C
: VIM_CHANGE_BACK(); break;
185 case VIM_D
: VIM_DELETE_BACK(); break;
186 case VIM_V
: VIM_VISUAL_BACK(); break;
192 if (record
->event
.pressed
) {
194 case KC_NO
: SHIFTED
? VIM_CHANGE_LINE() : VIM_LEADER(VIM_C
); break;
195 case VIM_C
: VIM_CHANGE_WHOLE_LINE(); break;
201 if (record
->event
.pressed
) {
203 case KC_NO
: SHIFTED
? VIM_DELETE_LINE() : VIM_LEADER(VIM_D
); break;
204 case VIM_D
: VIM_DELETE_WHOLE_LINE(); break;
210 if (record
->event
.pressed
) {
212 case KC_NO
: VIM_END(); break;
213 case VIM_C
: VIM_CHANGE_END(); break;
214 case VIM_D
: VIM_DELETE_END(); break;
215 case VIM_V
: VIM_VISUAL_END(); break;
221 if (record
->event
.pressed
) {
223 case KC_NO
: VIM_LEFT(); break;
224 case VIM_C
: VIM_CHANGE_LEFT(); break;
225 case VIM_D
: VIM_DELETE_LEFT(); break;
226 case VIM_V
: VIM_VISUAL_LEFT(); break;
232 if (record
->event
.pressed
) {
234 case KC_NO
: layer_on(INSERT_MODE
); break;
235 case VIM_C
: VIM_LEADER(VIM_CI
); break;
236 case VIM_D
: VIM_LEADER(VIM_DI
); break;
237 case VIM_V
: VIM_LEADER(VIM_VI
); break;
243 if (record
->event
.pressed
) {
245 case KC_NO
: SHIFTED
? VIM_JOIN() : VIM_DOWN(); break;
246 case VIM_C
: VIM_CHANGE_DOWN(); break;
247 case VIM_D
: VIM_DELETE_DOWN(); break;
248 case VIM_V
: VIM_VISUAL_DOWN(); break;
254 if (record
->event
.pressed
) {
256 case KC_NO
: VIM_UP(); break;
257 case VIM_C
: VIM_CHANGE_UP(); break;
258 case VIM_D
: VIM_DELETE_UP(); break;
259 case VIM_V
: VIM_VISUAL_UP(); break;
265 if (record
->event
.pressed
) {
267 case KC_NO
: VIM_RIGHT(); break;
268 case VIM_C
: VIM_CHANGE_RIGHT(); break;
269 case VIM_D
: VIM_DELETE_RIGHT(); break;
270 case VIM_V
: VIM_VISUAL_RIGHT(); break;
276 if (record
->event
.pressed
) { SHIFTED
? VIM_OPEN_ABOVE() : VIM_OPEN(); }
280 if (record
->event
.pressed
) { SHIFTED
? VIM_PUT_BEFORE() : VIM_PUT(); }
284 if (record
->event
.pressed
) { SHIFTED
? VIM_CHANGE_WHOLE_LINE() : VIM_SUBSTITUTE(); }
288 if (record
->event
.pressed
) { VIM_UNDO(); }
292 if (record
->event
.pressed
) { VIM_LEADER(VIM_V
); }
296 if (record
->event
.pressed
) {
298 case KC_NO
: VIM_WORD(); break;
299 case VIM_C
: VIM_CHANGE_WORD(); break;
300 case VIM_CI
: VIM_CHANGE_INNER_WORD(); break;
301 case VIM_D
: VIM_DELETE_WORD(); break;
302 case VIM_DI
: VIM_DELETE_INNER_WORD(); break;
303 case VIM_V
: VIM_VISUAL_WORD(); break;
304 case VIM_VI
: VIM_VISUAL_INNER_WORD(); break;
310 if (record
->event
.pressed
) { VIM_CUT(); }
314 if (record
->event
.pressed
) { SHIFTED
? VIM_YANK_LINE() : VIM_YANK(); }
317 // dynamically generate these.
319 if (record
->event
.pressed
) { eeconfig_init(); }
322 if (record
->event
.pressed
) { SEND_STRING(VERSION_STRING
); }
325 if (record
->event
.pressed
) { rgblight_mode(1); }
329 // End by clearing the queue unless keycode is a
330 // if ((record->event.pressed) &&
331 // (keycode != VIM_I ||
332 // keycode != VIM_C ||
333 // keycode != VIM_D ||
334 // keycode != VIM_V)) {
335 // VIM_LEADER(KC_NO);
341 void matrix_init_user(void) {
346 void matrix_scan_user(void) {
347 uint8_t layer
= biton32(layer_state
);
349 ergodox_board_led_off();
350 ergodox_right_led_1_off();
351 ergodox_right_led_2_off();
352 ergodox_right_led_3_off();
355 ergodox_right_led_1_on();
358 ergodox_right_led_2_on();
361 ergodox_right_led_3_on();
364 ergodox_right_led_1_on();
365 ergodox_right_led_2_on();
368 ergodox_right_led_1_on();
369 ergodox_right_led_3_on();
372 ergodox_right_led_2_on();
373 ergodox_right_led_3_on();
376 ergodox_right_led_1_on();
377 ergodox_right_led_2_on();
378 ergodox_right_led_3_on();