2 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include "keymap_bepo.h"
18 #include "ericgebhart.h"
21 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 [DVORAK] = LAYOUT_wrapper (
25 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
26 KC_LOCK, ___DVORAK_L1___, KC_LBRC,
27 TAB_BKTAB, ___DVORAK_L2___,
28 KC_LSFT, ___DVORAK_L3___, KC_LPRN,
30 ___ERGODOX_BOTTOM_LEFT___,
31 ___ERGODOX_THUMB_LEFT___,
34 MDIA_SYMB, ___NUMBER_R___, KC_EQL,
35 KC_RBRC, ___DVORAK_R1___, KC_SLASH,
36 /* */ ___DVORAK_R2___, KC_MINUS,
37 KC_RPRN, ___DVORAK_R3___, KC_RSFT,
39 ___ERGODOX_BOTTOM_RIGHT___,
40 ___ERGODOX_THUMB_RIGHT___
43 [XMONAD] = LAYOUT_wrapper (
45 ___, ___FUNC_L___, ___,
46 ___, ___DVORAK_L1___, ___,
48 ___, ___DVORAK_L3___, ___,
50 ___ERGODOX_BOTTOM_LEFT___,
51 ___ERGODOX_THUMB_LEFT___,
54 ___, ___FUNC_R___, ___,
55 ___, ___DVORAK_R1___, ___,
56 /**/ ___DVORAK_R2___, ___,
57 ___, ___DVORAK_R3___, ___,
59 ___ERGODOX_BOTTOM_RIGHT___,
60 ___ERGODOX_THUMB_RIGHT___
63 [QWERTY] = LAYOUT_wrapper(
65 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
66 KC_LOCK, ___QWERTY_L1___, KC_LBRC,
67 TAB_BKTAB, ___QWERTY_L2___,
68 KC_LSFT, ___QWERTY_L3___, KC_LPRN,
70 ___ERGODOX_BOTTOM_LEFT___,
71 ___ERGODOX_THUMB_LEFT___,
74 MDIA_SYMB, ___NUMBER_R___, KC_EQL,
75 KC_RBRC, ___QWERTY_R1___, KC_SLASH,
76 /* */ ___QWERTY_R2___, KC_MINUS,
77 KC_RPRN, ___QWERTY_R3___, KC_RSFT,
79 ___ERGODOX_BOTTOM_RIGHT___,
80 ___ERGODOX_THUMB_RIGHT___
83 [COLEMAK] = LAYOUT_wrapper (
85 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
86 KC_LOCK, ___COLEMAK_L1___, KC_LBRC,
87 TAB_BKTAB, ___COLEMAK_L2___,
88 KC_LSFT, ___COLEMAK_L3___, KC_LPRN,
90 ___ERGODOX_BOTTOM_LEFT___,
91 ___ERGODOX_THUMB_LEFT___,
94 MDIA_SYMB, ___NUMBER_R___, KC_EQL,
95 KC_RBRC, ___COLEMAK_R1___, KC_SLASH,
96 /* */ ___COLEMAK_R2___, KC_MINUS,
97 KC_RPRN, ___COLEMAK_R3___, KC_RSFT,
99 ___ERGODOX_BOTTOM_RIGHT___,
100 ___ERGODOX_THUMB_RIGHT___
103 [WORKMAN] = LAYOUT_wrapper (
105 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
106 KC_LOCK, ___WORKMAN_L1___, KC_LBRC,
107 TAB_BKTAB, ___WORKMAN_L2___,
108 KC_LSFT, ___WORKMAN_L3___, KC_LPRN,
110 ___ERGODOX_BOTTOM_LEFT___,
111 ___ERGODOX_THUMB_LEFT___,
114 MDIA_SYMB, ___NUMBER_R___, KC_EQL,
115 KC_RBRC, ___WORKMAN_R1___, KC_SLASH,
116 /* */ ___WORKMAN_R2___, KC_MINUS,
117 KC_RPRN, ___WORKMAN_R3___, KC_RSFT,
119 ___ERGODOX_BOTTOM_RIGHT___,
120 ___ERGODOX_THUMB_RIGHT___
123 [NORMAN] = LAYOUT_wrapper(
125 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW,
126 KC_LOCK, ___NORMAN_L1___, KC_LBRC,
127 TAB_BKTAB, ___NORMAN_L2___,
128 KC_LSFT, ___NORMAN_L3___, KC_LPRN,
130 ___ERGODOX_BOTTOM_LEFT___,
131 ___ERGODOX_THUMB_LEFT___,
134 MDIA_SYMB, ___NUMBER_R___, KC_EQL,
135 KC_RBRC, ___NORMAN_R1___, KC_SLASH,
136 /* */ ___NORMAN_R2___, KC_MINUS,
137 KC_RPRN, ___NORMAN_R3___, KC_RSFT,
139 ___ERGODOX_BOTTOM_RIGHT___,
140 ___ERGODOX_THUMB_RIGHT___
143 [DVORAK_ON_BEPO] = LAYOUT_wrapper(
145 DB_GRV, ___NUMBER_BEPO_L___, DEF_OS_LAYER_SW,
146 KC_LOCK, ___DVORAK_FR_L1___, DB_LBRC,
147 TAB_BKTAB, ___DVORAK_FR_L2___,
148 KC_LSFT, ___DVORAK_FR_L3___, DB_LPRN,
150 ___ERGODOX_BOTTOM_LEFT___,
151 ___ERGODOX_THUMB_LEFT___,
155 MDIA_SYMB, ___NUMBER_BEPO_R___, DB_EQL,
156 DB_RBRC, ___DVORAK_FR_R1___, DB_SLASH,
158 /* */ ___DVORAK_FR_R2___, DB_MINUS,
159 DB_RPRN, ___DVORAK_FR_R3___, KC_RSFT,
161 ___ERGODOX_BOTTOM_RIGHT_FR___,
162 ___ERGODOX_THUMB_RIGHT___
165 [XMONAD_FR] = LAYOUT_wrapper(
167 ___, ___FUNC_L___, ___,
168 ___, ___DVORAK_FR_L1___, ___,
169 ___, ___DVORAK_FR_L2___,
170 ___, ___DVORAK_FR_L3___, ___,
172 ___ERGODOX_BOTTOM_LEFT___,
173 ___ERGODOX_THUMB_LEFT___,
177 ___, ___FUNC_R___, ___,
178 ___, ___DVORAK_FR_R1___, ___,
179 /**/ ___DVORAK_FR_R2___, ___,
180 ___, ___DVORAK_FR_R3___, ___,
182 ___ERGODOX_BOTTOM_RIGHT_FR___,
183 ___ERGODOX_THUMB_RIGHT___
186 [BEPO] = LAYOUT_wrapper (
188 BP_DLR, ___SYMBOL_BEPO_L___, DEF_OS_LAYER_SW,
189 KC_LOCK, ___BEPO_FR_L1___, DB_LBRC,
190 TAB_BKTAB, ___BEPO_FR_L2___,
191 BP_SFT_T_ECRC, ___BEPO_FR_L3___, DB_RBRC,
193 ___ERGODOX_BOTTOM_LEFT___,
194 ___ERGODOX_THUMB_LEFT___,
198 MDIA_SYMB, ___SYMBOL_BEPO_R___, BP_EQL,
199 BP_DCRC, ___BEPO_FR_R1___, BP_W,
200 /* */ ___BEPO_FR_R2___, BP_CCED,
201 BP_C, ___BEPO_FR_R3___, KC_RSFT,
203 ___ERGODOX_BOTTOM_RIGHT___,
204 ___ERGODOX_THUMB_RIGHT___
208 [SYMB] = LAYOUT_wrapper(
210 ___, ___FUNC_L___, ___,
211 ___, ___SYMBOLS_1___, ___,
212 ___, ___SYMBOLS_2___,
213 ___, ___SYMBOLS_3___, ___,
215 ___ERGODOX_TRANS_BOTTOM___,
216 ___ERGODOX_TRANS_THUMBS___,
220 ___, ___FUNC_R___, KC_F11,
221 ___, KC_UP, ___KEYPAD_1___, KC_F12,
222 /**/ KC_DOWN, ___KEYPAD_2___, KC_TRNS,
223 ___, KC_AMPR, ___KEYPAD_3___, KC_PENT,
224 /* */ ___KEYPAD_4___, ___,
226 ___ERGODOX_TRANS_THUMBS___
229 [SYMB_ON_BEPO] = LAYOUT_wrapper(
231 ___, ___FUNC_L___, ___,
232 ___, ___SYMBOLS_1_BP___, ___,
233 ___, ___SYMBOLS_2_BP___,
234 ___, ___SYMBOLS_3_BP___, ___,
236 ___ERGODOX_TRANS_BOTTOM___,
237 ___ERGODOX_TRANS_THUMBS___,
241 ___, ___FUNC_R___, KC_F11,
242 ___, KC_UP, ___KEYPAD_1_BP___, KC_F12,
243 /**/ KC_DOWN, ___KEYPAD_2_BP___, KC_TRNS,
244 ___, KC_AMPR, ___KEYPAD_3_BP___, KC_PENT,
245 /* */ ___KEYPAD_4_BP___, ___,
247 ___ERGODOX_TRANS_THUMBS___
251 [MDIA] = LAYOUT_wrapper(
253 ___, ___FUNC_L___, ___,
254 ___MOUSE_BTNS_L___, ___, ___,
255 ___, ___MOUSE_LDUR___, ___,
256 ___, ___MWHEEL_LDUR___, XXX, ___,
257 ___, ___, ___MOUSE_ACCL_012___,
258 ___ERGODOX_TRANS_THUMBS___,
261 ___, ___FUNC_R___, KC_F11,
262 KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12,
263 /* */ KC_PGUP, ___VI_ARROWS___, ___,
264 KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___,
265 ___ERGODOX_TRANS_BOTTOM___,
266 ___ERGODOX_TRANS_THUMBS___
269 [LAYERS] = LAYOUT_wrapper(
271 ___, ___FUNC_L___, ___,
272 XXX, XXX, XXX, ___LAYERS_L1___, XXX, XXX,
273 XXX, XXX, XXX, ___LAYERS_L2___, XXX,
274 XXX, XXX, ___LAYERS_L3___, XXX, XXX,
275 ___, ___, ___LAYERS_L4___,
276 ___ERGODOX_TRANS_THUMBS___,
279 ___, ___FUNC_R___, KC_F11,
280 KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12,
281 /* */ KC_PGUP, ___VI_ARROWS___, ___,
282 KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___,
283 ___ERGODOX_TRANS_BOTTOM___,
284 ___ERGODOX_TRANS_THUMBS___
290 // Runs constantly in the background, in a loop.
291 void matrix_scan_user(void) {
293 uint8_t layer = biton32(layer_state);
295 ergodox_board_led_off();
296 ergodox_right_led_1_off();
297 ergodox_right_led_2_off();
298 ergodox_right_led_3_off();
300 ergodox_right_led_1_on();
303 //ergodox_right_led_1_off();
305 // first led on for a bepo software keyboard layer
307 ergodox_right_led_2_on();
310 ergodox_right_led_1_on();
311 ergodox_right_led_1_off();
312 ergodox_right_led_1_on();
313 ergodox_right_led_1_off();
314 ergodox_right_led_1_on();
317 ergodox_right_led_3_on();
320 ergodox_right_led_3_on();
323 ergodox_right_led_1_on();
324 ergodox_right_led_2_on();
325 ergodox_right_led_3_on();
328 ergodox_board_led_off();
340 clear_oneshot_mods();
341 set_oneshot_locked_mods(mods);
344 register_code(action.key.code);
345 unregister_code(action.key.code);
347 layer_on(action.layer_tap.val);
348 layer_off(action.layer_tap.val);
350 clear_oneshot_locked_mods();
351 clear_oneshot_mods();
352 unregister_mods(mods);