aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Gebhart <e.a.gebhart@gmail.com>2020-04-28 11:58:42 +0200
committerGitHub <noreply@github.com>2020-04-28 02:58:42 -0700
commit485a0b0bc358b32ec042793a5195ced2c4cda7df (patch)
treef852b5d9e705bc224bd1dc9004ae494bf626f0d3
parent23cfc4b14564fe6a5da8a6d3823f8f9bc52c2832 (diff)
downloadqmk_firmware-485a0b0bc358b32ec042793a5195ced2c4cda7df.tar.gz
qmk_firmware-485a0b0bc358b32ec042793a5195ced2c4cda7df.zip
[Keymap] Added Xd75 and viterbi keymaps,refactored my userspace. (#8776)
-rw-r--r--keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c440
-rw-r--r--keyboards/keebio/viterbi/keymaps/ericgebhart/config.h15
-rw-r--r--keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c193
-rw-r--r--keyboards/xd75/keymaps/ericgebhart/config.h12
-rw-r--r--keyboards/xd75/keymaps/ericgebhart/keymap.c242
-rw-r--r--keyboards/xd75/keymaps/ericgebhart/readme.md1
-rw-r--r--keyboards/xd75/keymaps/ericgebhart/rules.mk3
-rw-r--r--users/ericgebhart/base_layers.h283
-rw-r--r--users/ericgebhart/core_keys.h293
-rw-r--r--users/ericgebhart/core_keysets.h293
-rw-r--r--users/ericgebhart/ericgebhart.c16
-rw-r--r--users/ericgebhart/ericgebhart.h411
-rwxr-xr-xusers/ericgebhart/rules.mk11
13 files changed, 1592 insertions, 621 deletions
diff --git a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c b/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c
index 3b1bdb6fb..dc33e4e0a 100644
--- a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c
@@ -21,268 +21,298 @@
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 22
23 [DVORAK] = LAYOUT_ergodox_wrapper( 23 [DVORAK] = LAYOUT_ergodox_wrapper(
24 // left hand 24 // left hand
25 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW, 25 KC_GRV, ___NUMBER_L___, OSL(LAYERS),
26 KC_LOCK, ___DVORAK_L1___, KC_LBRC, 26 KC_LOCK, ___DVORAK_L1___, LCTL(KC_C),
27 TAB_BKTAB, ___DVORAK_L2___, 27 TAB_BKTAB, ___DVORAK_L2___,
28 KC_LSFT, ___DVORAK_L3___, KC_LPRN, 28 KC_LSFT, ___DVORAK_L3___, TO(MDIA),
29 29
30 ___ERGODOX_BOTTOM_LEFT___, 30 ___BOTTOM_LEFT___,
31 ___ERGODOX_THUMB_LEFT___, 31 ___ERGODOX_THUMB_LEFT___,
32 32
33 // right hand 33 // right hand
34 MDIA_SYMB, ___NUMBER_R___, KC_EQL, 34 MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
35 KC_RBRC, ___DVORAK_R1___, KC_SLASH, 35 LCTL(KC_V), ___DVORAK_R1___, KC_SLASH,
36 /* */ ___DVORAK_R2___, KC_MINUS, 36 /* */ ___DVORAK_R2___, KC_MINUS,
37 KC_RPRN, ___DVORAK_R3___, KC_RSFT, 37 TO(KEYPAD), ___DVORAK_R3___, KC_RSFT,
38 38
39 ___ERGODOX_BOTTOM_RIGHT___, 39 ___BOTTOM_RIGHT___,
40 ___ERGODOX_THUMB_RIGHT___ 40 ___ERGODOX_THUMB_RIGHT___
41 ), 41 ),
42 42
43 [XMONAD] = LAYOUT_ergodox_wrapper( 43 [XMONAD] = LAYOUT_ergodox_wrapper(
44 // left hand 44 // left hand
45 ___, ___FUNC_L___, ___, 45 ___, ___FUNC_L___, ___,
46 ___, ___DVORAK_L1___, ___, 46 ___, ___DVORAK_L1___, ___,
47 ___, ___DVORAK_L2___, 47 ___, ___DVORAK_L2___,
48 ___, ___DVORAK_L3___, ___, 48 ___, ___DVORAK_L3___, ___,
49 49
50 ___ERGODOX_BOTTOM_LEFT___, 50 ___BOTTOM_LEFT___,
51 ___ERGODOX_THUMB_LEFT___, 51 ___ERGODOX_THUMB_LEFT___,
52 52
53 // right hand 53 // right hand
54 ___, ___FUNC_R___, ___, 54 ___, ___FUNC_R___, ___,
55 ___, ___DVORAK_R1___, ___, 55 ___, ___DVORAK_R1___, ___,
56 /**/ ___DVORAK_R2___, ___, 56 /**/ ___DVORAK_R2___, ___,
57 ___, ___DVORAK_R3___, ___, 57 ___, ___DVORAK_R3___, ___,
58 58
59 ___ERGODOX_BOTTOM_RIGHT___, 59 ___BOTTOM_RIGHT___,
60 ___ERGODOX_THUMB_RIGHT___ 60 ___ERGODOX_THUMB_RIGHT___
61 ), 61 ),
62 62
63 [QWERTY] = LAYOUT_ergodox_wrapper( 63 [QWERTY] = LAYOUT_ergodox_wrapper(
64 // left hand 64 // left hand
65 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW, 65 KC_GRV, ___NUMBER_L___, OSL(LAYERS),
66 KC_LOCK, ___QWERTY_L1___, KC_LBRC, 66 KC_LOCK, ___QWERTY_L1___, LCTL(KC_C),
67 TAB_BKTAB, ___QWERTY_L2___, 67 TAB_BKTAB, ___QWERTY_L2___,
68 KC_LSFT, ___QWERTY_L3___, KC_LPRN, 68 KC_LSFT, ___QWERTY_L3___, TO(MDIA),
69 69
70 ___ERGODOX_BOTTOM_LEFT___, 70 ___BOTTOM_LEFT___,
71 ___ERGODOX_THUMB_LEFT___, 71 ___ERGODOX_THUMB_LEFT___,
72 72
73 // right hand 73 // right hand
74 MDIA_SYMB, ___NUMBER_R___, KC_EQL, 74 MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
75 KC_RBRC, ___QWERTY_R1___, KC_SLASH, 75 LCTL(KC_V), ___QWERTY_R1___, KC_SLASH,
76 /* */ ___QWERTY_R2___, KC_MINUS, 76 /* */ ___QWERTY_R2___, KC_MINUS,
77 KC_RPRN, ___QWERTY_R3___, KC_RSFT, 77 TO(KEYPAD), ___QWERTY_R3___, KC_RSFT,
78 78
79 ___ERGODOX_BOTTOM_RIGHT___, 79 ___BOTTOM_RIGHT___,
80 ___ERGODOX_THUMB_RIGHT___ 80 ___ERGODOX_THUMB_RIGHT___
81 ), 81 ),
82 82
83 [COLEMAK] = LAYOUT_ergodox_wrapper( 83 [COLEMAK] = LAYOUT_ergodox_wrapper(
84 // left hand 84 // left hand
85 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW, 85 KC_GRV, ___NUMBER_L___, OSL(LAYERS),
86 KC_LOCK, ___COLEMAK_L1___, KC_LBRC, 86 KC_LOCK, ___COLEMAK_L1___, LCTL(KC_C),
87 TAB_BKTAB, ___COLEMAK_L2___, 87 TAB_BKTAB, ___COLEMAK_L2___,
88 KC_LSFT, ___COLEMAK_L3___, KC_LPRN, 88 KC_LSFT, ___COLEMAK_L3___, TO(MDIA),
89 89
90 ___ERGODOX_BOTTOM_LEFT___, 90 ___BOTTOM_LEFT___,
91 ___ERGODOX_THUMB_LEFT___, 91 ___ERGODOX_THUMB_LEFT___,
92 92
93 // right hand 93 // right hand
94 MDIA_SYMB, ___NUMBER_R___, KC_EQL, 94 MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
95 KC_RBRC, ___COLEMAK_R1___, KC_SLASH, 95 LCTL(KC_V), ___COLEMAK_R1___, KC_SLASH,
96 /* */ ___COLEMAK_R2___, KC_MINUS, 96 /* */ ___COLEMAK_R2___, KC_MINUS,
97 KC_RPRN, ___COLEMAK_R3___, KC_RSFT, 97 TO(KEYPAD), ___COLEMAK_R3___, KC_RSFT,
98 98
99 ___ERGODOX_BOTTOM_RIGHT___, 99 ___BOTTOM_RIGHT___,
100 ___ERGODOX_THUMB_RIGHT___ 100 ___ERGODOX_THUMB_RIGHT___
101 ), 101 ),
102 102
103 [WORKMAN] = LAYOUT_ergodox_wrapper( 103 [WORKMAN] = LAYOUT_ergodox_wrapper(
104 // left hand 104 // left hand
105 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW, 105 KC_GRV, ___NUMBER_L___, OSL(LAYERS),
106 KC_LOCK, ___WORKMAN_L1___, KC_LBRC, 106 KC_LOCK, ___WORKMAN_L1___, LCTL(KC_C),
107 TAB_BKTAB, ___WORKMAN_L2___, 107 TAB_BKTAB, ___WORKMAN_L2___,
108 KC_LSFT, ___WORKMAN_L3___, KC_LPRN, 108 KC_LSFT, ___WORKMAN_L3___, TO(MDIA),
109 109
110 ___ERGODOX_BOTTOM_LEFT___, 110 ___BOTTOM_LEFT___,
111 ___ERGODOX_THUMB_LEFT___, 111 ___ERGODOX_THUMB_LEFT___,
112 112
113 // right hand 113 // right hand
114 MDIA_SYMB, ___NUMBER_R___, KC_EQL, 114 MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
115 KC_RBRC, ___WORKMAN_R1___, KC_SLASH, 115 LCTL(KC_V), ___WORKMAN_R1___, KC_SLASH,
116 /* */ ___WORKMAN_R2___, KC_MINUS, 116 /* */ ___WORKMAN_R2___, KC_MINUS,
117 KC_RPRN, ___WORKMAN_R3___, KC_RSFT, 117 TO(KEYPAD), ___WORKMAN_R3___, KC_RSFT,
118 118
119 ___ERGODOX_BOTTOM_RIGHT___, 119 ___BOTTOM_RIGHT___,
120 ___ERGODOX_THUMB_RIGHT___ 120 ___ERGODOX_THUMB_RIGHT___
121 ), 121 ),
122 122
123 [NORMAN] = LAYOUT_ergodox_wrapper( 123 [NORMAN] = LAYOUT_ergodox_wrapper(
124 // left hand 124 // left hand
125 KC_GRV, ___NUMBER_L___, DEF_OS_LAYER_SW, 125 KC_GRV, ___NUMBER_L___, OSL(LAYERS),
126 KC_LOCK, ___NORMAN_L1___, KC_LBRC, 126 KC_LOCK, ___NORMAN_L1___, LCTL(KC_C),
127 TAB_BKTAB, ___NORMAN_L2___, 127 TAB_BKTAB, ___NORMAN_L2___,
128 KC_LSFT, ___NORMAN_L3___, KC_LPRN, 128 KC_LSFT, ___NORMAN_L3___, TO(MDIA),
129 129
130 ___ERGODOX_BOTTOM_LEFT___, 130 ___BOTTOM_LEFT___,
131 ___ERGODOX_THUMB_LEFT___, 131 ___ERGODOX_THUMB_LEFT___,
132 132
133 // right hand 133 // right hand
134 MDIA_SYMB, ___NUMBER_R___, KC_EQL, 134 MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
135 KC_RBRC, ___NORMAN_R1___, KC_SLASH, 135 LCTL(KC_V), ___NORMAN_R1___, KC_SLASH,
136 /* */ ___NORMAN_R2___, KC_MINUS, 136 /* */ ___NORMAN_R2___, KC_MINUS,
137 KC_RPRN, ___NORMAN_R3___, KC_RSFT, 137 TO(KEYPAD), ___NORMAN_R3___, KC_RSFT,
138 138
139 ___ERGODOX_BOTTOM_RIGHT___, 139 ___BOTTOM_RIGHT___,
140 ___ERGODOX_THUMB_RIGHT___ 140 ___ERGODOX_THUMB_RIGHT___
141 ), 141 ),
142 142
143 [DVORAK_ON_BEPO] = LAYOUT_ergodox_wrapper( 143 [DVORAK_ON_BEPO] = LAYOUT_ergodox_wrapper(
144 // left hand 144 // left hand
145 DB_GRV, ___NUMBER_BEPO_L___, DEF_OS_LAYER_SW, 145 DB_GRV, ___NUMBER_BEPO_L___, OSL(LAYERS),
146 KC_LOCK, ___DVORAK_FR_L1___, DB_LBRC, 146 KC_LOCK, ___DVORAK_FR_L1___, DB_LBRC,
147 TAB_BKTAB, ___DVORAK_FR_L2___, 147 TAB_BKTAB, ___DVORAK_FR_L2___,
148 KC_LSFT, ___DVORAK_FR_L3___, DB_LPRN, 148 KC_LSFT, ___DVORAK_FR_L3___, DB_LPRN,
149 149
150 ___ERGODOX_BOTTOM_LEFT___, 150 ___BOTTOM_LEFT_FR___,
151 ___ERGODOX_THUMB_LEFT___, 151 ___ERGODOX_THUMB_LEFT_BP___,
152 152
153 153
154 // right hand 154 // right hand
155 MDIA_SYMB, ___NUMBER_BEPO_R___, DB_EQL, 155 MDIA_SYMB_KP_LAYERS, ___NUMBER_BEPO_R___, DB_EQL,
156 DB_RBRC, ___DVORAK_FR_R1___, DB_SLASH, 156 DB_RBRC, ___DVORAK_FR_R1___, DB_SLASH,
157 157
158 /* */ ___DVORAK_FR_R2___, DB_MINUS, 158 /* */ ___DVORAK_FR_R2___, DB_MINUS,
159 DB_RPRN, ___DVORAK_FR_R3___, KC_RSFT, 159 DB_RPRN, ___DVORAK_FR_R3___, KC_RSFT,
160 160
161 ___ERGODOX_BOTTOM_RIGHT_FR___, 161 ___BOTTOM_RIGHT_FR___,
162 ___ERGODOX_THUMB_RIGHT___ 162 ___ERGODOX_THUMB_RIGHT_BP___
163 ), 163 ),
164 164
165 [XMONAD_FR] = LAYOUT_ergodox_wrapper( 165 [BEPO] = LAYOUT_ergodox_wrapper(
166 // left hand 166 // Left hand
167 ___, ___FUNC_L___, ___, 167 BP_DLR, ___SYMBOL_BEPO_L___, OSL(LAYERS),
168 ___, ___DVORAK_FR_L1___, ___, 168 KC_LOCK, ___BEPO_FR_L1___, DB_LBRC,
169 ___, ___DVORAK_FR_L2___, 169 TAB_BKTAB, ___BEPO_FR_L2___,
170 ___, ___DVORAK_FR_L3___, ___, 170 BP_SFT_T_ECRC, ___BEPO_FR_L3___, DB_RBRC,
171 171
172 ___ERGODOX_BOTTOM_LEFT___, 172 ___5___,
173 ___ERGODOX_THUMB_LEFT___, 173 ___6___,
174 174
175 175
176 // right hand 176 // Right hand
177 ___, ___FUNC_R___, ___, 177 MDIA_SYMB_KP_LAYERS, ___SYMBOL_BEPO_R___, BP_EQL,
178 ___, ___DVORAK_FR_R1___, ___, 178 BP_DCRC, ___BEPO_FR_R1___, BP_W,
179 /**/ ___DVORAK_FR_R2___, ___, 179 /* */ ___BEPO_FR_R2___, BP_CCED,
180 ___, ___DVORAK_FR_R3___, ___, 180 BP_C, ___BEPO_FR_R3___, KC_RSFT,
181 181
182 ___ERGODOX_BOTTOM_RIGHT_FR___, 182 ___5___,
183 ___ERGODOX_THUMB_RIGHT___ 183 ___6___
184 ), 184 ),
185 185
186 [BEPO] = LAYOUT_ergodox_wrapper( 186 [XMONAD_FR] = LAYOUT_ergodox_wrapper(
187 // Left hand 187 // left hand
188 BP_DLR, ___SYMBOL_BEPO_L___, DEF_OS_LAYER_SW, 188 ___, ___FUNC_L___, ___,
189 KC_LOCK, ___BEPO_FR_L1___, DB_LBRC, 189 ___, ___DVORAK_FR_L1___, ___,
190 TAB_BKTAB, ___BEPO_FR_L2___, 190 ___, ___DVORAK_FR_L2___,
191 BP_SFT_T_ECRC, ___BEPO_FR_L3___, DB_RBRC, 191 ___, ___DVORAK_FR_L3___, ___,
192 192
193 ___ERGODOX_BOTTOM_LEFT___, 193 ___BOTTOM_LEFT_FR___,
194 ___ERGODOX_THUMB_LEFT___, 194 ___ERGODOX_THUMB_LEFT_BP___,
195 195
196 196
197 // Right hand 197 // right hand
198 MDIA_SYMB, ___SYMBOL_BEPO_R___, BP_EQL, 198 ___, ___FUNC_R___, ___,
199 BP_DCRC, ___BEPO_FR_R1___, BP_W, 199 ___, ___DVORAK_FR_R1___, ___,
200 /* */ ___BEPO_FR_R2___, BP_CCED, 200 /**/ ___DVORAK_FR_R2___, ___,
201 BP_C, ___BEPO_FR_R3___, KC_RSFT, 201 ___, ___DVORAK_FR_R3___, ___,
202 202
203 ___ERGODOX_BOTTOM_RIGHT___, 203 ___BOTTOM_RIGHT_FR___,
204 ___ERGODOX_THUMB_RIGHT___ 204 ___ERGODOX_THUMB_RIGHT_BP___
205 ), 205 ),
206 206
207 // SYMBOLS 207 // SYMBOLS
208 [SYMB] = LAYOUT_ergodox_wrapper( 208 [SYMB] = LAYOUT_ergodox_wrapper(
209 // left hand 209 // left hand
210 ___, ___FUNC_L___, ___, 210 ___FUNC_1_6___, ___,
211 ___, ___SYMBOLS_1___, ___, 211 ___SYMBOLS6_1___, ___,
212 ___, ___SYMBOLS_2___, 212 ___SYMBOLS6_2___,
213 ___, ___SYMBOLS_3___, ___, 213 ___SYMBOLS6_3___, ___,
214 214 ___SYMBOLS5_4___,
215 ___ERGODOX_TRANS_BOTTOM___, 215 ___6___,
216 ___ERGODOX_TRANS_THUMBS___, 216
217 217
218 218 // right hand
219 // right hand 219 ___, ___FUNC_7_12___,
220 ___, ___FUNC_R___, KC_F11, 220 ___, ___SYMPAD_1___,
221 ___, KC_UP, ___KEYPAD_1___, KC_F12, 221 /**/ ___SYMPAD_2___,
222 /**/ KC_DOWN, ___KEYPAD_2___, KC_TRNS, 222 ___, ___SYMPAD_3___,
223 ___, KC_AMPR, ___KEYPAD_3___, KC_PENT, 223 /**/ ___5_SYMPAD_4___,
224 /* */ ___KEYPAD_4___, ___, 224 ___6___
225 225 ),
226 ___ERGODOX_TRANS_THUMBS___
227 ),
228 226
229 [SYMB_ON_BEPO] = LAYOUT_ergodox_wrapper( 227 [SYMB_ON_BEPO] = LAYOUT_ergodox_wrapper(
230 // left hand 228 // left hand
231 ___, ___FUNC_L___, ___, 229 ___FUNC_1_6___, ___,
232 ___, ___SYMBOLS_1_BP___, ___, 230 ___SYMBOLS6_1_BP___, ___,
233 ___, ___SYMBOLS_2_BP___, 231 ___SYMBOLS6_2_BP___,
234 ___, ___SYMBOLS_3_BP___, ___, 232 ___SYMBOLS6_3_BP___, ___,
235 233 ___SYMBOLS5_4_BP___,
236 ___ERGODOX_TRANS_BOTTOM___, 234 ___6___,
237 ___ERGODOX_TRANS_THUMBS___, 235
238 236
239 237 // right hand
240 // right hand 238 ___, ___FUNC_7_12___,
241 ___, ___FUNC_R___, KC_F11, 239 ___, ___SYMPAD_1_BP___,
242 ___, KC_UP, ___KEYPAD_1_BP___, KC_F12, 240 /**/ ___SYMPAD_2_BP___,
243 /**/ KC_DOWN, ___KEYPAD_2_BP___, KC_TRNS, 241 ___, ___SYMPAD_3_BP___,
244 ___, KC_AMPR, ___KEYPAD_3_BP___, KC_PENT, 242 /**/ ___5_SYMPAD_4_BP___,
245 /* */ ___KEYPAD_4_BP___, ___, 243 ___6___
246 244 ),
247 ___ERGODOX_TRANS_THUMBS___ 245
248 ), 246 [KEYPAD] = LAYOUT_ergodox_wrapper(
247 ___FUNC_1_6___, ___,
248 ___2___, ___FUNCPAD_T___, ___, ___,
249 ___2___, ___FUNCPAD_1___, ___,
250 ___2___, ___FUNCPAD_2___, ___, ___,
251 ___2___, ___FUNCPAD_3___,
252 ___6___,
253
254 // right hand
255 ___, ___FUNC_7_12___,
256 ___, ___, ___KEYPAD_1___, ___,
257 /**/ ___, ___KEYPAD_2___, ___,
258 ___, ___, ___KEYPAD_3___, ___,
259 /* */ ___KEYPAD_4___, ___,
260 ___6___
261 ),
262
263 [KEYPAD_ON_BEPO] = LAYOUT_ergodox_wrapper(
264 ___FUNC_1_6___, ___,
265 ___2___, ___FUNCPAD_T___, ___, ___,
266 ___2___, ___FUNCPAD_1___, ___,
267 ___2___, ___FUNCPAD_2___, ___, ___,
268 ___2___, ___FUNCPAD_3___,
269 ___6___,
270
271 // right hand
272 ___, ___FUNC_7_12___,
273 ___, ___, ___KEYPAD_1_BP___, ___,
274 /**/ ___, ___KEYPAD_2_BP___, ___,
275 ___, ___, ___KEYPAD_3_BP___, ___,
276 /* */ ___KEYPAD_4_BP___, ___,
277 ___6___
278 ),
249 279
250 // MEDIA AND MOUSE 280 // MEDIA AND MOUSE
251 [MDIA] = LAYOUT_ergodox_wrapper( 281 [MDIA] = LAYOUT_ergodox_wrapper(
252 // left hand 282 // left hand
253 ___, ___FUNC_L___, ___, 283 ___FUNC_1_6___, ___,
254 ___MOUSE_BTNS_L___, ___, ___, 284 ___MOUSE_BTNS_L___, ___, ___,
255 ___, ___MOUSE_LDUR___, ___, 285 ___, ___MOUSE_LDUR___, ___,
256 ___, ___MWHEEL_LDUR___, XXX, ___, 286 ___, ___MWHEEL_LDUR___, XXX, ___,
257 ___, ___, ___MOUSE_ACCL_012___, 287 ___, ___, ___MOUSE_ACCL_012___,
258 ___ERGODOX_TRANS_THUMBS___, 288 ___6___,
259 289
260 // right hand 290 // right hand
261 ___, ___FUNC_R___, KC_F11, 291 ___, ___FUNC_7_12___,
262 KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12, 292 ___, KC_VOLU, ___MUTE_PRV_PLAY_NXT_STOP___,
263 /* */ KC_PGUP, ___VI_ARROWS___, ___, 293 /**/ KC_VOLD, ___VI_ARROWS___, ___,
264 KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___, 294 ___, ___, ___MOUSE_BTNS_R___,
265 ___ERGODOX_TRANS_BOTTOM___, 295 /* */ KC_PGDN, KC_PGUP, ___3___,
266 ___ERGODOX_TRANS_THUMBS___ 296 ___6___
267 ), 297 ),
268 298
269 [LAYERS] = LAYOUT_ergodox_wrapper( 299 [LAYERS] = LAYOUT_ergodox_wrapper(
270 // left hand 300 // left hand
271 ___, ___FUNC_L___, ___, 301 ___FUNC_1_6___, ___,
272 XXX, XXX, XXX, ___LAYERS_L1___, XXX, XXX, 302 XXX, XXX, XXX, ___2_LAYERS_B1___, XXX, ___,
273 XXX, XXX, XXX, ___LAYERS_L2___, XXX, 303 XXX, XXX, XXX, ___2_LAYERS_B2___, XXX,
274 XXX, XXX, ___LAYERS_L3___, XXX, XXX, 304 XXX, XXX, ___3_LAYERS_B3___, XXX, ___,
275 ___, ___, ___LAYERS_L4___, 305 ___5___,
276 ___ERGODOX_TRANS_THUMBS___, 306 ___6___,
277 307
278 // right hand 308 // right hand
279 ___, ___FUNC_R___, KC_F11, 309 ___, ___FUNC_7_12___,
280 KC_VOLU, ___, ___MUTE_PLAY_STOP___, ___, KC_F12, 310 ___, XXX, ___3_LAYERS_T_BP___, ___2___,
281 /* */ KC_PGUP, ___VI_ARROWS___, ___, 311 /**/ XXX, ___3_LAYERS_T___, ___2___,
282 KC_VOLD, KC_PGDN, ___MOUSE_BTNS_R___, 312 ___, XXX, ___3_LAYERS_T_CTL___, ___2___,
283 ___ERGODOX_TRANS_BOTTOM___, 313 ___5___,
284 ___ERGODOX_TRANS_THUMBS___ 314 ___6___
285 ), 315 ),
286}; 316};
287 317
288 318
diff --git a/keyboards/keebio/viterbi/keymaps/ericgebhart/config.h b/keyboards/keebio/viterbi/keymaps/ericgebhart/config.h
new file mode 100644
index 000000000..7ad7f5a4c
--- /dev/null
+++ b/keyboards/keebio/viterbi/keymaps/ericgebhart/config.h
@@ -0,0 +1,15 @@
1#pragma once
2
3// #define USE_I2C
4
5/* Select hand configuration */
6
7// #define MASTER_RIGHT
8// #define EE_HANDS
9
10#undef RGBLED_NUM
11#define RGBLIGHT_ANIMATIONS
12#define RGBLED_NUM 12
13#define RGBLIGHT_HUE_STEP 8
14#define RGBLIGHT_SAT_STEP 8
15#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c b/keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c
new file mode 100644
index 000000000..baf6637ea
--- /dev/null
+++ b/keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c
@@ -0,0 +1,193 @@
1/*
2 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
3
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.
8
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.
13
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/>.
16*/
17
18#include "keymap_bepo.h"
19#include "ericgebhart.h"
20
21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22
23 [DVORAK] = LAYOUT_ortho_5x14_wrapper(
24 KC_GRV, ___12_DVORAK_1___, KC_SLASH,
25 TAB_BKTAB, ___12_DVORAK_2___, KC_MINUS,
26 KC_LSFT, ___12_DVORAK_3___, KC_RSFT,
27 ___ORTHO_14_BOTTOM___,
28 ___ORTHO_14_THUMBS_BOTTOM___
29 ),
30
31 [QWERTY] = LAYOUT_ortho_5x14_wrapper(
32 KC_GRV, ___12_QWERTY_1___, KC_SLASH,
33 TAB_BKTAB, ___12_QWERTY_2___, KC_MINUS,
34 KC_LSFT, ___12_QWERTY_3___, KC_RSFT,
35 ___ORTHO_14_BOTTOM___,
36 ___ORTHO_14_THUMBS_BOTTOM___
37 ),
38
39 [COLEMAK] = LAYOUT_ortho_5x14_wrapper(
40 KC_GRV, ___12_COLEMAK_1___, KC_SLASH,
41 TAB_BKTAB, ___12_COLEMAK_2___, KC_MINUS,
42 KC_LSFT, ___12_COLEMAK_3___, KC_RSFT,
43 ___ORTHO_14_BOTTOM___,
44 ___ORTHO_14_THUMBS_BOTTOM___
45 ),
46
47 [WORKMAN] = LAYOUT_ortho_5x14_wrapper(
48 KC_GRV, ___12_WORKMAN_1___, KC_SLASH,
49 TAB_BKTAB, ___12_WORKMAN_2___, KC_MINUS,
50 KC_LSFT, ___12_WORKMAN_3___, KC_RSFT,
51 ___ORTHO_14_BOTTOM___,
52 ___ORTHO_14_THUMBS_BOTTOM___
53 ),
54
55 [NORMAN] = LAYOUT_ortho_5x14_wrapper(
56 KC_GRV, ___12_NORMAN_1___, KC_SLASH,
57 TAB_BKTAB, ___12_NORMAN_2___, KC_MINUS,
58 KC_LSFT, ___12_NORMAN_3___, KC_RSFT,
59 ___ORTHO_14_BOTTOM___,
60 ___ORTHO_14_THUMBS_BOTTOM___
61 ),
62
63 [DVORAK_ON_BEPO] = LAYOUT_ortho_5x14_wrapper(
64 KC_GRV, ___12_DVORAK_B_1___, KC_SLASH,
65 TAB_BKTAB, ___12_DVORAK_B_2___, KC_MINUS,
66 KC_LSFT, ___12_DVORAK_B_3___, KC_RSFT,
67 ___ORTHO_14_BOTTOM_FR___,
68 ___ORTHO_14_THUMBS_BOTTOM___
69 ),
70
71 [BEPO] = LAYOUT_ortho_5x14_wrapper(
72 KC_GRV, ___12_DVORAK_B_1___, KC_SLASH,
73 TAB_BKTAB, ___12_DVORAK_B_2___, KC_MINUS,
74 KC_LSFT, ___12_DVORAK_B_3___, KC_RSFT,
75 ___ORTHO_14_BOTTOM_BP___,
76 ___ORTHO_14_THUMBS_BOTTOM___
77 ),
78
79 [XMONAD] = LAYOUT_ortho_5x14_wrapper(
80 ___, ___12_DVORAK_1___, ___,
81 ___, ___12_DVORAK_2___, ___,
82 ___, ___12_DVORAK_3___, ___,
83 ___14___,
84 ___14___
85 ),
86
87 [XMONAD_FR] = LAYOUT_ortho_5x14_wrapper(
88 ___, ___12_DVORAK_B_1___, ___,
89 ___, ___12_DVORAK_B_2___, ___,
90 ___, ___12_DVORAK_B_3___, ___,
91 ___14___,
92 ___14___
93 ),
94
95
96 // SYMBOLS
97 [SYMB] = LAYOUT_ortho_5x14_wrapper(
98 ___14_SYMB_1___,
99 ___14_SYMB_2___,
100 ___14_SYMB_3___,
101 ___14_SYMB_4___,
102 ___14___
103 ),
104
105 [KEYPAD] = LAYOUT_ortho_5x14_wrapper(
106 ___14_KP_1___,
107 ___14_KP_2___,
108 ___14_KP_3___,
109 ___14_KP_4___,
110 ___14___
111 ),
112
113 [KEYPAD_ON_BEPO] = LAYOUT_ortho_5x14_wrapper(
114 ___14_KP_B_1___,
115 ___14_KP_B_2___,
116 ___14_KP_B_3___,
117 ___14_KP_B_4___,
118 ___14___
119 ),
120
121 [SYMB_ON_BEPO] = LAYOUT_ortho_5x14_wrapper(
122 ___14_SYMB_B_1___,
123 ___14_SYMB_B_2___,
124 ___14_SYMB_B_3___,
125 ___14_SYMB_B_4___,
126 ___14___
127 ),
128
129 // MEDIA AND MOUSE
130 [MDIA] = LAYOUT_ortho_5x14_wrapper(
131 ___14_MDIA_1___,
132 ___14_MDIA_2___,
133 ___14_MDIA_3___,
134 ___14_MDIA_4___,
135 ___14___
136 ),
137
138 [LAYERS] = LAYOUT_ortho_5x14_wrapper(
139 ___14_LAYERS_1___,
140 ___14_LAYERS_2___,
141 ___14_LAYERS_3___,
142 ___14___,
143 ___14___
144 ),
145
146 [_RGB] = LAYOUT_ortho_5x14_wrapper(
147 ___14_RGB_1___,
148 ___14_RGB_2___,
149 ___14_RGB_3___,
150 ___14___,
151 ___14___
152 ),
153};
154
155/* bool process_record_user(uint16_t keycode, keyrecord_t *record) { */
156/* switch (keycode) { */
157/* case QWERTY: */
158/* if (record->event.pressed) { */
159/* set_single_persistent_default_layer(_QWERTY); */
160/* } */
161/* return false; */
162/* break; */
163/* case LOWER: */
164/* if (record->event.pressed) { */
165/* layer_on(_LOWER); */
166/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
167/* } else { */
168/* layer_off(_LOWER); */
169/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
170/* } */
171/* return false; */
172/* break; */
173/* case RAISE: */
174/* if (record->event.pressed) { */
175/* layer_on(_RAISE); */
176/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
177/* } else { */
178/* layer_off(_RAISE); */
179/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
180/* } */
181/* return false; */
182/* break; */
183/* case ADJUST: */
184/* if (record->event.pressed) { */
185/* layer_on(_ADJUST); */
186/* } else { */
187/* layer_off(_ADJUST); */
188/* } */
189/* return false; */
190/* break; */
191/* } */
192/* return true; */
193/* } */
diff --git a/keyboards/xd75/keymaps/ericgebhart/config.h b/keyboards/xd75/keymaps/ericgebhart/config.h
new file mode 100644
index 000000000..77f83e83f
--- /dev/null
+++ b/keyboards/xd75/keymaps/ericgebhart/config.h
@@ -0,0 +1,12 @@
1#pragma once
2
3#undef RGBLED_NUM
4#define RGBLED_NUM 6
5#define RGBLIGHT_LAYERS
6
7#undef RGBLIGHT_ANIMATIONS
8//#define RGBLIGHT_HUE_STEP 8
9//#define RGBLIGHT_SAT_STEP 8
10
11
12// place overrides here
diff --git a/keyboards/xd75/keymaps/ericgebhart/keymap.c b/keyboards/xd75/keymaps/ericgebhart/keymap.c
new file mode 100644
index 000000000..9661972bf
--- /dev/null
+++ b/keyboards/xd75/keymaps/ericgebhart/keymap.c
@@ -0,0 +1,242 @@
1/*
2 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
3
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.
8
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.
13
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/>.
16*/
17
18#include "keymap_bepo.h"
19#include "ericgebhart.h"
20
21
22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23
24 [DVORAK] = LAYOUT_ortho_5x15_wrapper(
25 KC_GRV, ___ORTHO_15_N___, KC_EQL,
26 KC_LOCK, ___13_DVORAK_1___, KC_SLASH,
27 TAB_BKTAB, ___13_DVORAK_2___, KC_MINUS,
28 KC_LSFT, ___13_DVORAK_3___, KC_RSFT,
29 ___ORTHO_15_BOTTOM___
30 ),
31
32 [QWERTY] = LAYOUT_ortho_5x15_wrapper(
33 KC_GRV, ___ORTHO_15_N___, KC_EQL,
34 KC_LOCK, ___13_QWERTY_1___, KC_SLASH,
35 TAB_BKTAB, ___13_QWERTY_2___, KC_MINUS,
36 KC_LSFT, ___13_QWERTY_3___, KC_RSFT,
37 ___ORTHO_15_BOTTOM___
38 ),
39
40 [COLEMAK] = LAYOUT_ortho_5x15_wrapper(
41 KC_GRV, ___ORTHO_15_N___, KC_EQL,
42 KC_LOCK, ___13_COLEMAK_1___, KC_SLASH,
43 TAB_BKTAB, ___13_COLEMAK_2___, KC_MINUS,
44 KC_LSFT, ___13_COLEMAK_3___, KC_RSFT,
45 ___ORTHO_15_BOTTOM___
46 ),
47
48 [WORKMAN] = LAYOUT_ortho_5x15_wrapper(
49 KC_GRV, ___ORTHO_15_N___, KC_EQL,
50 KC_LOCK, ___13_WORKMAN_1___, KC_SLASH,
51 TAB_BKTAB, ___13_WORKMAN_2___, KC_MINUS,
52 KC_LSFT, ___13_WORKMAN_3___, KC_RSFT,
53 ___ORTHO_15_BOTTOM___
54 ),
55
56 [NORMAN] = LAYOUT_ortho_5x15_wrapper(
57 KC_GRV, ___ORTHO_15_N___, KC_EQL,
58 KC_LOCK, ___13_NORMAN_1___, KC_SLASH,
59 TAB_BKTAB, ___13_NORMAN_2___, KC_MINUS,
60 KC_LSFT, ___13_NORMAN_3___, KC_RSFT,
61 ___ORTHO_15_BOTTOM___
62 ),
63
64 [DVORAK_ON_BEPO] = LAYOUT_ortho_5x15_wrapper(
65 DB_GRV, ___ORTHO_15_B_N___, DB_EQL,
66 KC_LOCK, ___13_DVORAK_B_1___, DB_SLASH,
67 TAB_BKTAB, ___13_DVORAK_B_2___, DB_MINUS,
68 KC_LSFT, ___13_DVORAK_B_3___, KC_RSFT,
69 ___ORTHO_15_BOTTOM_FR___
70 ),
71
72 [XMONAD] = LAYOUT_ortho_5x15_wrapper(
73 ___ORTHO_15_FUNC_1_12___,
74 ___, ___13_DVORAK_1___, ___,
75 ___, ___13_DVORAK_2___, ___,
76 ___, ___13_DVORAK_3___, ___,
77 ___15___
78 ),
79
80 [XMONAD_FR] = LAYOUT_ortho_5x15_wrapper(
81 ___ORTHO_15_FUNC_1_12___,
82 ___, ___13_DVORAK_B_1___, ___,
83 ___, ___13_DVORAK_B_2___, ___,
84 ___, ___13_DVORAK_B_3___, ___,
85 ___15___
86 ),
87
88 [BEPO] = LAYOUT_ortho_5x15_wrapper(
89 ___ORTHO_15_B_SYMB___,
90 KC_LOCK, ___13_BEPO_1___, BP_W,
91 TAB_BKTAB, ___13_BEPO_2___, BP_CCED,
92 BP_SFT_T_ECRC, ___13_BEPO_3___, BP_SFT_T_W,
93 ___ORTHO_15_BOTTOM_BP___
94 ),
95
96 // SYMBOLS
97 [SYMB] = LAYOUT_ortho_5x15_wrapper(
98 ___ORTHO_15_FUNC_1_12___,
99 ___15_SYMB_1___,
100 ___15_SYMB_2___,
101 ___15_SYMB_3___,
102 ___15_SYMB_4___
103 ),
104
105 [KEYPAD] = LAYOUT_ortho_5x15_wrapper(
106 ___ORTHO_15_FUNC_1_12___,
107 ___15_KP_1___,
108 ___15_KP_2___,
109 ___15_KP_3___,
110 ___15_KP_4___
111 ),
112
113 [KEYPAD_ON_BEPO] = LAYOUT_ortho_5x15_wrapper(
114 ___ORTHO_15_FUNC_1_12___,
115 ___15_KP_B_1___,
116 ___15_KP_B_2___,
117 ___15_KP_B_3___,
118 ___15_KP_B_4___
119 ),
120
121 [SYMB_ON_BEPO] = LAYOUT_ortho_5x15_wrapper(
122 ___ORTHO_15_FUNC_1_12___,
123 ___15_SYMB_B_1___,
124 ___15_SYMB_B_2___,
125 ___15_SYMB_B_3___,
126 ___15_SYMB_B_4___
127 ),
128
129 // MEDIA AND MOUSE
130 [MDIA] = LAYOUT_ortho_5x15_wrapper(
131 ___ORTHO_15_FUNC_1_12___,
132 ___15_MDIA_1___,
133 ___15_MDIA_2___,
134 ___15_MDIA_3___,
135 ___15_MDIA_4___
136 ),
137
138 [LAYERS] = LAYOUT_ortho_5x15_wrapper(
139 ___ORTHO_15_FUNC_1_12___,
140 ___15_LAYERS_1___,
141 ___15_LAYERS_2___,
142 ___15_LAYERS_3___,
143 ___15___
144 ),
145
146 [_RGB] = LAYOUT_ortho_5x15_wrapper(
147 ___ORTHO_15_FUNC_1_12___,
148 ___15_RGB_1___,
149 ___15_RGB_2___,
150 ___15_RGB_3___,
151 ___15___
152 ),
153};
154
155
156/********************************************************************************/
157/* Using layers to do RGB underlighting */
158/********************************************************************************/
159
160const rgblight_segment_t PROGMEM on_bepo[] = RGBLIGHT_LAYER_SEGMENTS(
161 {0, 2, HSV_AZURE}
162 );
163
164const rgblight_segment_t PROGMEM bepo[] = RGBLIGHT_LAYER_SEGMENTS(
165 {3, 2, HSV_MAGENTA}
166 );
167
168const rgblight_segment_t PROGMEM dvorak[] = RGBLIGHT_LAYER_SEGMENTS(
169 {3, 2, HSV_AZURE}
170 );
171
172const rgblight_segment_t PROGMEM media[] = RGBLIGHT_LAYER_SEGMENTS(
173 {5, 1, HSV_GREEN}
174 );
175
176const rgblight_segment_t PROGMEM symbol[] = RGBLIGHT_LAYER_SEGMENTS(
177 {4, 2, HSV_GOLD}
178 );
179
180const rgblight_segment_t PROGMEM keypad[] = RGBLIGHT_LAYER_SEGMENTS(
181 {4, 2, HSV_BLUE}
182 );
183
184const rgblight_segment_t PROGMEM layers[] = RGBLIGHT_LAYER_SEGMENTS(
185 {5, 1, HSV_RED}
186 );
187
188const rgblight_segment_t PROGMEM rgb[] = RGBLIGHT_LAYER_SEGMENTS(
189 {5, 1, HSV_ORANGE}
190 );
191
192const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(on_bepo, bepo, dvorak, media, symbol,
193 keypad, layers, rgb);
194
195void keyboard_post_init_user(void) {
196 rgblight_sethsv_noeeprom(HSV_PURPLE);
197 rgblight_layers = rgb_layers;
198}
199
200layer_state_t layer_state_set_user(layer_state_t state) {
201 // rgblight_set_layer_state(0, !on_qwerty());
202 rgblight_set_layer_state(0, layer_state_cmp(state, DVORAK));
203
204 rgblight_set_layer_state(1, layer_state_cmp(state, BEPO));
205 rgblight_set_layer_state(2, layer_state_cmp(state, DVORAK));
206 //|| layer_state_cmp(state, DVORAK_ON_BEPO)));
207 rgblight_set_layer_state(3, layer_state_cmp(state, MDIA));
208 rgblight_set_layer_state(4, layer_state_cmp(state, SYMB) );
209
210 //(layer_state_cmp(state, SYMB) || (layer_state_cmp(state, SYMB_ON_BEPO))));
211 rgblight_set_layer_state(5, layer_state_cmp(state, KEYPAD) );
212 ///(layer_state_cmp(state, KEYPAD) || (layer_state_cmp(state, KEYPAD_ON_BEPO))));
213 rgblight_set_layer_state(6, layer_state_cmp(state, LAYERS));
214 rgblight_set_layer_state(7, layer_state_cmp(state, _RGB));
215 return state;
216}
217
218/* void suspend_power_down_user(void) { */
219/* rgblight_disable(); */
220/* } */
221
222/* void suspend_wakeup_init_user(void) { */
223/* rgblight_enable(); */
224/* } */
225
226/* bool is_shift_pressed = false; */
227
228/* bool led_update_user(led_t led_state) { */
229/* rgblight_set_layer_state(2, is_shift_pressed != led_state.caps_lock); */
230/* return true; */
231/* } */
232
233/* bool process_record_user(uint16_t keycode, keyrecord_t* record) { */
234/* switch (keycode) { */
235/* case KC_LSFT: */
236/* case KC_RSFT: */
237/* is_shift_pressed = record->event.pressed; */
238/* rgblight_set_layer_state(2, is_shift_pressed != host_keyboard_led_state().caps_lock); */
239/* default: */
240/* return true; */
241/* } */
242/* } */
diff --git a/keyboards/xd75/keymaps/ericgebhart/readme.md b/keyboards/xd75/keymaps/ericgebhart/readme.md
new file mode 100644
index 000000000..a1c0236ed
--- /dev/null
+++ b/keyboards/xd75/keymaps/ericgebhart/readme.md
@@ -0,0 +1 @@
# The default keymap for xd75, with led controls \ No newline at end of file
diff --git a/keyboards/xd75/keymaps/ericgebhart/rules.mk b/keyboards/xd75/keymaps/ericgebhart/rules.mk
new file mode 100644
index 000000000..11871f9c9
--- /dev/null
+++ b/keyboards/xd75/keymaps/ericgebhart/rules.mk
@@ -0,0 +1,3 @@
1RGBLIGHT_ENABLE = yes
2RGBLIGHT_ANIMATION = yes
3# BACKLIGHT_ENABLE = yes
diff --git a/users/ericgebhart/base_layers.h b/users/ericgebhart/base_layers.h
new file mode 100644
index 000000000..caf081057
--- /dev/null
+++ b/users/ericgebhart/base_layers.h
@@ -0,0 +1,283 @@
1#pragma once
2/*
3 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include "core_keysets.h"
20
21/******************************************************************/
22/* These are the keys for the middle and bottom edge of any layout*/
23/* That way we only need to set them once and use them everywhere */
24/* The thumb keys, the bottom rows, etc. */
25/******************************************************************/
26/******************************************************************/
27/* Middle Keysets for the XD75 */
28/******************************************************************/
29
30// For the middle keys of an xd75. It's got one more column in the middle than
31// the ergodox, or the viterbi. And the Ergodox is missing a key in column 7
32// counting from either end. Which is the first and 3rd columns of these sets.
33
34// it's all an experient. I'm not sure what make sense here.
35// stealing what I can from the ergodox layout.
36/* The XD75 has 3 keys inbetween the usual left and right hand */
37#define ___ORTHO_15_MIDDLE_T___ OSL(LAYERS), LCTL(KC_A), MDIA_SYMB_KP_LAYERS
38#define ___ORTHO_15_MIDDLE_1___ LCTL(KC_C), LCTL(KC_X), LCTL(KC_V)
39#define ___ORTHO_15_MIDDLE_2___ TO(SYMB), TO(_RGB), TO(KEYPAD)
40#define ___ORTHO_15_MIDDLE_3___ OSL(SYMB), TO(MDIA), OSL(KEYPAD)
41#define ___ORTHO_15_MIDDLE_4___ CTL_BSPC, ALT_DEL, XMONAD_ESC, ALT_ENT, CTL_SPC
42
43// The same, for BEPO
44#define ___ORTHO_15_MIDDLE_T_BP___ OSL(LAYERS), LCTL(BP_A), MDIA_SYMB_KP_LAYERS
45#define ___ORTHO_15_MIDDLE_1_BP___ LCTL(BP_C), LCTL(BP_X), LCTL(BP_V)
46#define ___ORTHO_15_MIDDLE_2_BP___ TO(SYMB_ON_BEPO), TO(_RGB), TO(KEYPAD_ON_BEPO)
47#define ___ORTHO_15_MIDDLE_3_BP___ OSL(SYMB_ON_BEPO), TO(MDIA), OSL(KEYPAD_ON_BEPO)
48
49// The Viterbi only has 2 keys in the middle.
50#define ___ORTHO_14_MIDDLE_T___ OSL(LAYERS), MDIA_SYMB_KP_LAYERS
51#define ___ORTHO_14_MIDDLE_1___ LCTL(KC_C), LCTL(KC_V)
52#define ___ORTHO_14_MIDDLE_2___ TO(SYMB), TO(KEYPAD)
53#define ___ORTHO_14_MIDDLE_3___ OSL(SYMB), OSL(KEYPAD)
54
55// becomes the upper thumbs, the real 4th row if we throw away
56// the number row at the top
57#define ___ORTHO_14_MIDDLE_4___ LSFT(KC_TAB), HOME_END, KC_PGDN, KC_TAB
58// basically the thumb keys like on the ergodox.
59#define ___MIDDLE_THUMBS___ CTL_BSPC, ALT_DEL, XMONAD_ESC, KC_PGDN, ALT_ENT, CTL_SPC
60
61// The same, for BEPO
62#define ___ORTHO_14_MIDDLE_T_BP___ OSL(LAYERS), MDIA_SYMB_KP_LAYERS
63#define ___ORTHO_14_MIDDLE_1_BP___ LCTL(BP_C), LCTL(BP_V)
64#define ___ORTHO_14_MIDDLE_2_BP___ TO(SYMB_ON_BEPO), TO(KEYPAD_ON_BEPO)
65#define ___ORTHO_14_MIDDLE_3_BP___ OSL(SYMB_ON_BEPO), OSL(KEYPAD_ON_BEPO)
66
67#define ___ORTHO_14_MIDDLE_4_BP___ LSFT(KC_TAB), HOME_END, KC_PGUP, KC_TAB
68
69
70/********************************************************************/
71/** The top rows for numbers, symbols and Fkeys. **/
72/********************************************************************/
73#define ___ORTHO_15_N___ ___NUMBER_L___, ___ORTHO_15_MIDDLE_T___, ___NUMBER_R___
74#define ___ORTHO_15_B_N___ ___NUMBER_BEPO_L___, ___ORTHO_15_MIDDLE_T_BP___, ___NUMBER_BEPO_R___
75// the full bepo symbol row.
76#define ___ORTHO_15_B_SYMB___ BP_DLR, ___SYMBOL_BEPO_L___, ___ORTHO_15_MIDDLE_T_BP___, ___SYMBOL_BEPO_R___, BP_EQL
77
78// transparent in the middle because I only put this on transient layers.
79#define ___ORTHO_15_FUNC_1_12___ ___FUNC_1_6___, ___3___, ___FUNC_7_12___
80
81
82/********************************************************************/
83/** The bottom row and thumbs as needed. **/
84/********************************************************************/
85#define ___BOTTOM_LEFT___ LCTL(KC_C), LCTL(KC_V), KC_INS, KC_LEFT, KC_RIGHT
86#define ___BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLASH, LCTL(KC_V), LCTL(KC_C)
87
88// the bottom rows for keyboards on bepo.
89// bepo on bepo - not enough space to go around....
90#define ___BOTTOM_LEFT_BP___ LCTL(BP_C), BP_ECRC, LCTL(BP_V), KC_LEFT, KC_RIGHT
91#define ___BOTTOM_RIGHT_BP___ KC_UP, KC_DOWN, DB_BACKSLASH, BP_CCED, BP_PERC
92
93// for dvorak on bepo
94#define ___BOTTOM_LEFT_FR___ LCTL(BP_C), LCTL(BP_C), LCTL(BP_V), KC_LEFT, KC_RIGHT
95#define ___BOTTOM_RIGHT_FR___ KC_UP, KC_DOWN, DB_BACKSLASH, LCTL(KC_V), LCTL(KC_C)
96
97#define ___ORTHO_15_BOTTOM___ ___BOTTOM_LEFT___, ___ORTHO_15_MIDDLE_4___, ___BOTTOM_RIGHT___
98#define ___ORTHO_15_BOTTOM_FR___ ___BOTTOM_LEFT_FR___, ___ORTHO_15_MIDDLE_4___, ___BOTTOM_RIGHT_FR___
99#define ___ORTHO_15_BOTTOM_BP___ ___BOTTOM_LEFT_BP___, ___ORTHO_15_MIDDLE_4___, ___BOTTOM_RIGHT_BP___
100
101#define ___ORTHO_14_BOTTOM___ ___BOTTOM_LEFT___, ___ORTHO_14_MIDDLE_4___, ___BOTTOM_RIGHT___
102#define ___ORTHO_14_BOTTOM_FR___ ___BOTTOM_LEFT_FR___, ___ORTHO_14_MIDDLE_4___, ___BOTTOM_RIGHT_FR___
103#define ___ORTHO_14_BOTTOM_BP___ ___BOTTOM_LEFT_BP___, ___ORTHO_14_MIDDLE_4___, ___BOTTOM_RIGHT_BP___
104#define ___ORTHO_14_THUMBS_BOTTOM___ ___4___, ___MIDDLE_THUMBS___, ___4___
105
106
107#define ___ERGODOX_THUMB_LEFT___ \
108 OSL(SYMB), OSM(KC_LGUI), \
109 HOME_END, \
110 CTL_BSPC, ALT_DEL, XMONAD_ESC
111
112#define ___ERGODOX_THUMB_RIGHT___ \
113 XXX, OSL(KEYPAD), \
114 KC_PGUP, \
115 KC_PGDN, ALT_ENT, CTL_SPC
116
117#define ___ERGODOX_THUMB_RIGHT_BP___ \
118 XXX, OSL(KEYPAD_ON_BEPO), \
119 KC_PGUP, \
120 KC_PGDN, ALT_ENT, CTL_SPC
121
122#define ___ERGODOX_THUMB_LEFT_BP___ \
123 OSL(SYMB_ON_BEPO), OSM(KC_LGUI), \
124 HOME_END, \
125 CTL_BSPC, ALT_DEL, XMONAD_ESC
126
127/********************************************************************************/
128/* the interior rows for ortholinear keyboards. the first number is the length */
129/* So you can put what you want on the outside ends, make new middles as needed */
130/* It would be nice to make this a little more dynamic. There is little */
131/* differenc between them. */
132/********************************************************************************/
133
134//// ortho15 core rows. used with my xd75.
135/***********************************************************/
136/* ORTHO15 interior rows. used with my xd75 */
137/***********************************************************/
138#define ___13_DVORAK_1___ ___DVORAK_L1___, ___ORTHO_15_MIDDLE_1___, ___DVORAK_R1___
139#define ___13_DVORAK_2___ ___DVORAK_L2___, ___ORTHO_15_MIDDLE_2___, ___DVORAK_R2___
140#define ___13_DVORAK_3___ ___DVORAK_L3___, ___ORTHO_15_MIDDLE_3___, ___DVORAK_R3___
141
142#define ___13_QWERTY_1___ ___QWERTY_L1___, ___ORTHO_15_MIDDLE_1___, ___QWERTY_R1___
143#define ___13_QWERTY_2___ ___QWERTY_L2___, ___ORTHO_15_MIDDLE_2___, ___QWERTY_R2___
144#define ___13_QWERTY_3___ ___QWERTY_L3___, ___ORTHO_15_MIDDLE_3___, ___QWERTY_R3___
145
146#define ___13_COLEMAK_1___ ___COLEMAK_L1___, ___ORTHO_15_MIDDLE_1___, ___COLEMAK_R1___
147#define ___13_COLEMAK_2___ ___COLEMAK_L2___, ___ORTHO_15_MIDDLE_2___, ___COLEMAK_R2___
148#define ___13_COLEMAK_3___ ___COLEMAK_L3___, ___ORTHO_15_MIDDLE_3___, ___COLEMAK_R3___
149
150#define ___13_WORKMAN_1___ ___WORKMAN_L1___, ___ORTHO_15_MIDDLE_1___, ___WORKMAN_R1___
151#define ___13_WORKMAN_2___ ___WORKMAN_L2___, ___ORTHO_15_MIDDLE_2___, ___WORKMAN_R2___
152#define ___13_WORKMAN_3___ ___WORKMAN_L3___, ___ORTHO_15_MIDDLE_3___, ___WORKMAN_R3___
153
154#define ___13_NORMAN_1___ ___NORMAN_L1___, ___ORTHO_15_MIDDLE_1___, ___NORMAN_R1___
155#define ___13_NORMAN_2___ ___NORMAN_L2___, ___ORTHO_15_MIDDLE_2___, ___NORMAN_R2___
156#define ___13_NORMAN_3___ ___NORMAN_L3___, ___ORTHO_15_MIDDLE_3___, ___NORMAN_R3___
157
158#define ___13_DVORAK_B_1___ ___DVORAK_FR_L1___, ___ORTHO_15_MIDDLE_1_BP___, ___DVORAK_FR_R1___
159#define ___13_DVORAK_B_2___ ___DVORAK_FR_L2___, ___ORTHO_15_MIDDLE_2_BP___, ___DVORAK_FR_R2___
160#define ___13_DVORAK_B_3___ ___DVORAK_FR_L3___, ___ORTHO_15_MIDDLE_3_BP___, ___DVORAK_FR_R3___
161
162#define ___13_BEPO_1___ ___BEPO_FR_L1___, ___ORTHO_15_MIDDLE_1_BP___, ___BEPO_FR_R1___
163#define ___13_BEPO_2___ ___BEPO_FR_L2___, ___ORTHO_15_MIDDLE_2_BP___, ___BEPO_FR_R2___
164#define ___13_BEPO_3___ ___BEPO_FR_L3___, ___ORTHO_15_MIDDLE_3_BP___, ___BEPO_FR_R3___
165
166// transparent xmonad/dvorak layer
167#define ___15_XMONAD_1___ ___, ___DVORAK_L1___, ___3___, ___DVORAK_R1___, ___
168#define ___15_XMONAD_2___ ___, ___DVORAK_L2___, ___3___, ___DVORAK_R2___, ___
169#define ___15_XMONAD_3___ ___, ___DVORAK_L3___, ___3___, ___DVORAK_R3___, ___
170
171// transparent xmonad/dvorak layer in bepo
172#define ___15_XMONAD_B_1___ ___, ___DVORAK_FR_L1___, ___3___, ___DVORAK_FR_R1___, ___
173#define ___15_XMONAD_B_2___ ___, ___DVORAK_FR_L2___, ___3___, ___DVORAK_FR_R2___, ___
174#define ___15_XMONAD_B_3___ ___, ___DVORAK_FR_L3___, ___3___, ___DVORAK_FR_R3___, ___
175
176#define ___15_SYMB_1___ ___SYMBOLS6_1___, ___3___, ___SYMPAD_1___
177#define ___15_SYMB_2___ ___SYMBOLS6_2___, ___3___, ___SYMPAD_2___
178#define ___15_SYMB_3___ ___SYMBOLS6_3___, ___3___, ___SYMPAD_3___
179#define ___15_SYMB_4___ ___SYMBOLS6_4___, ___3___, ___SYMPAD_4___
180
181#define ___15_KP_1___ ___2___, ___FUNCPAD_T___, ___5___, ___KEYPAD_1___, ___
182#define ___15_KP_2___ ___2___, ___FUNCPAD_1___, ___5___, ___KEYPAD_2___, ___
183#define ___15_KP_3___ ___2___, ___FUNCPAD_2___, ___5___, ___KEYPAD_3___, KC_PENT
184#define ___15_KP_4___ ___2___, ___FUNCPAD_3___, ___5___, ___KEYPAD_4___, ___
185
186#define ___15_KP_B_1___ ___2___, ___FUNCPAD_T___, ___5___, ___KEYPAD_1_BP___, ___
187#define ___15_KP_B_2___ ___2___, ___FUNCPAD_1___, ___5___, ___KEYPAD_2_BP___, ___
188#define ___15_KP_B_3___ ___2___, ___FUNCPAD_2___, ___5___, ___KEYPAD_3_BP___, KC_PENT
189#define ___15_KP_B_4___ ___2___, ___FUNCPAD_3___, ___5___, ___KEYPAD_4_BP___, ___
190
191#define ___15_SYMB_B_1___ ___SYMBOLS6_1_BP___, ___3___, ___SYMPAD_1_BP___
192#define ___15_SYMB_B_2___ ___SYMBOLS6_2_BP___, ___3___, ___SYMPAD_2_BP___
193#define ___15_SYMB_B_3___ ___SYMBOLS6_3_BP___, ___3___, ___SYMPAD_3_BP___
194#define ___15_SYMB_B_4___ ___SYMBOLS6_4_BP___, ___3___, ___SYMPAD_4_BP___
195
196#define ___15_MDIA_1___ ___MOUSE_BTNS_L___, ___4___, KC_VOLU, ___MUTE_PRV_PLAY_NXT_STOP___
197#define ___15_MDIA_2___ ___, ___MOUSE_LDUR___, ___4___, KC_VOLD, ___VI_ARROWS___, ___
198#define ___15_MDIA_3___ ___, ___MWHEEL_LDUR___, ___4___, KC_PGUP, ___MOUSE_BTNS_R___
199#define ___15_MDIA_4___ ___2___, ___MACCL___, ___4___, KC_PGDN, ___5___
200
201#define ___15_LAYERS_1___ ___X3___, ___2_LAYERS_B1___, ___5___, ___3_LAYERS_T_BP___, ___X2___
202#define ___15_LAYERS_2___ ___X3___, ___2_LAYERS_B2___, ___5___, ___3_LAYERS_T___, ___X2___
203#define ___15_LAYERS_3___ ___X2___, ___3_LAYERS_B3___, ___5___, ___3_LAYERS_T_CTL___, ___X2___
204
205#define ___15_RGB_1___ ___, ___RGB_HUE_SAT_INT_UP___, ___5___, ___5___
206#define ___15_RGB_2___ ___, ___RGB_HUE_SAT_INT_DN___, RGB_TOG, ___4___, ___RGB_P_B_R_SW_SN___
207#define ___15_RGB_3___ ___5___, ___5___, ___RGB_KXGT___, ___
208
209
210
211/***********************************************************/
212/* ORTHO14 base layer interior rows. used with my viterbi */
213/***********************************************************/
214#define ___12_DVORAK_1___ ___DVORAK_L1___, ___ORTHO_14_MIDDLE_1___, ___DVORAK_R1___
215#define ___12_DVORAK_2___ ___DVORAK_L2___, ___ORTHO_14_MIDDLE_2___, ___DVORAK_R2___
216#define ___12_DVORAK_3___ ___DVORAK_L3___, ___ORTHO_14_MIDDLE_3___, ___DVORAK_R3___
217
218#define ___12_QWERTY_1___ ___QWERTY_L1___, ___ORTHO_14_MIDDLE_1___, ___QWERTY_R1___
219#define ___12_QWERTY_2___ ___QWERTY_L2___, ___ORTHO_14_MIDDLE_2___, ___QWERTY_R2___
220#define ___12_QWERTY_3___ ___QWERTY_L3___, ___ORTHO_14_MIDDLE_3___, ___QWERTY_R3___
221
222#define ___12_COLEMAK_1___ ___COLEMAK_L1___, ___ORTHO_14_MIDDLE_1___, ___COLEMAK_R1___
223#define ___12_COLEMAK_2___ ___COLEMAK_L2___, ___ORTHO_14_MIDDLE_2___, ___COLEMAK_R2___
224#define ___12_COLEMAK_3___ ___COLEMAK_L3___, ___ORTHO_14_MIDDLE_3___, ___COLEMAK_R3___
225
226#define ___12_WORKMAN_1___ ___WORKMAN_L1___, ___ORTHO_14_MIDDLE_1___, ___WORKMAN_R1___
227#define ___12_WORKMAN_2___ ___WORKMAN_L2___, ___ORTHO_14_MIDDLE_2___, ___WORKMAN_R2___
228#define ___12_WORKMAN_3___ ___WORKMAN_L3___, ___ORTHO_14_MIDDLE_3___, ___WORKMAN_R3___
229
230#define ___12_NORMAN_1___ ___NORMAN_L1___, ___ORTHO_14_MIDDLE_1___, ___NORMAN_R1___
231#define ___12_NORMAN_2___ ___NORMAN_L2___, ___ORTHO_14_MIDDLE_2___, ___NORMAN_R2___
232#define ___12_NORMAN_3___ ___NORMAN_L3___, ___ORTHO_14_MIDDLE_3___, ___NORMAN_R3___
233
234#define ___12_DVORAK_B_1___ ___DVORAK_FR_L1___, ___ORTHO_14_MIDDLE_1_BP___, ___DVORAK_FR_R1___
235#define ___12_DVORAK_B_2___ ___DVORAK_FR_L2___, ___ORTHO_14_MIDDLE_2_BP___, ___DVORAK_FR_R2___
236#define ___12_DVORAK_B_3___ ___DVORAK_FR_L3___, ___ORTHO_14_MIDDLE_3_BP___, ___DVORAK_FR_R3___
237
238#define ___12_BEPO_2___ ___BEPO_FR_L1___, ___ORTHO_14_MIDDLE_1_BP___, ___BEPO_FR_R1___
239#define ___12_BEPO_3___ ___BEPO_FR_L2___, ___ORTHO_14_MIDDLE_2_BP___, ___BEPO_FR_R2___
240#define ___12_BEPO_4___ ___BEPO_FR_L3___, ___ORTHO_14_MIDDLE_3_BP___, ___BEPO_FR_R3___
241
242
243// transparent layers.
244#define ___14_XMONAD_1___ ___, ___DVORAK_L1___, ___2___, ___DVORAK_R1___, ___
245#define ___14_XMONAD_2___ ___, ___DVORAK_L2___, ___2___, ___DVORAK_R2___, ___
246#define ___14_XMONAD_3___ ___, ___DVORAK_L3___, ___2___, ___DVORAK_R3___, ___
247
248#define ___14_XMONAD_B_1___ ___, ___DVORAK_FR_L1___, ___2___, ___DVORAK_FR_R1___, ___
249#define ___14_XMONAD_B_2___ ___, ___DVORAK_FR_L2___, ___2___, ___DVORAK_FR_R2___, ___
250#define ___14_XMONAD_B_3___ ___, ___DVORAK_FR_L3___, ___2___, ___DVORAK_FR_R3___, ___
251
252#define ___14_SYMB_1___ ___SYMBOLS6_1___, ___2___, ___SYMPAD_1___
253#define ___14_SYMB_2___ ___SYMBOLS6_2___, ___2___, ___SYMPAD_2___
254#define ___14_SYMB_3___ ___SYMBOLS6_3___, ___2___, ___SYMPAD_3___
255#define ___14_SYMB_4___ ___SYMBOLS6_4___, ___2___, ___SYMPAD_4___
256
257#define ___14_KP_1___ ___2___, ___FUNCPAD_T___, ___4___, ___KEYPAD_1___, ___
258#define ___14_KP_2___ ___2___, ___FUNCPAD_1___, ___4___, ___KEYPAD_2___, ___
259#define ___14_KP_3___ ___2___, ___FUNCPAD_2___, ___4___, ___KEYPAD_3___, KC_PENT
260#define ___14_KP_4___ ___2___, ___FUNCPAD_3___, ___4___, ___KEYPAD_4___, ___
261
262#define ___14_KP_B_1___ ___2___, ___FUNCPAD_T___, ___4___, ___KEYPAD_1_BP___, ___
263#define ___14_KP_B_2___ ___2___, ___FUNCPAD_1___, ___4___, ___KEYPAD_2_BP___, ___
264#define ___14_KP_B_3___ ___2___, ___FUNCPAD_2___, ___4___, ___KEYPAD_3_BP___, KC_PENT
265#define ___14_KP_B_4___ ___2___, ___FUNCPAD_3___, ___4___, ___KEYPAD_4_BP___, ___
266
267#define ___14_SYMB_B_1___ ___SYMBOLS6_1_BP___, ___2___, ___SYMPAD_1_BP___
268#define ___14_SYMB_B_2___ ___SYMBOLS6_2_BP___, ___2___, ___SYMPAD_2_BP___
269#define ___14_SYMB_B_3___ ___SYMBOLS6_3_BP___, ___2___, ___SYMPAD_3_BP___
270#define ___14_SYMB_B_4___ ___SYMBOLS6_4_BP___, ___2___, ___SYMPAD_4_BP___
271
272#define ___14_MDIA_1___ ___MOUSE_BTNS_L___, ___3___, KC_VOLU, ___MUTE_PRV_PLAY_NXT_STOP___
273#define ___14_MDIA_2___ ___, ___MOUSE_LDUR___, ___3___, KC_VOLD, ___VI_ARROWS___, ___
274#define ___14_MDIA_3___ ___, ___MWHEEL_LDUR___, ___3___, KC_PGUP, ___MOUSE_BTNS_R___
275#define ___14_MDIA_4___ ___2___, ___MACCL___, ___3___, KC_PGDN, ___5___
276
277#define ___14_LAYERS_1___ ___X3___, ___2_LAYERS_B1___, ___4___, ___3_LAYERS_T_BP___, ___X2___
278#define ___14_LAYERS_2___ ___X3___, ___2_LAYERS_B2___, ___4___, ___3_LAYERS_T___, ___X2___
279#define ___14_LAYERS_3___ ___X2___, ___3_LAYERS_B3___, ___4___, ___3_LAYERS_T_CTL___, ___X2___
280
281#define ___14_RGB_1___ ___, ___RGB_HUE_SAT_INT_UP___, ___4___, ___5___
282#define ___14_RGB_2___ ___, ___RGB_HUE_SAT_INT_DN___, RGB_TOG, ___3___, ___RGB_P_B_R_SW_SN___
283#define ___14_RGB_3___ ___5___, ___4___, ___RGB_KXGT___, ___
diff --git a/users/ericgebhart/core_keys.h b/users/ericgebhart/core_keys.h
new file mode 100644
index 000000000..035f74001
--- /dev/null
+++ b/users/ericgebhart/core_keys.h
@@ -0,0 +1,293 @@
1#pragma once
2/*
3 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include "quantum.h"
20#include "process_keycode/process_tap_dance.h"
21#include "eeconfig.h"
22
23//#define ONESHOT_TAP_TOGGLE 2 /* Tapping this number of times holds the key until tapped once again. */
24
25void tap(uint16_t keycode);
26bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
27
28
29typedef union {
30 uint8_t raw;
31 struct {
32 bool clicky_enable :1;
33 bool rgb_layer_change :1;
34 bool is_overwatch :1;
35 bool nuke_switch :1;
36 };
37} userspace_config_t;
38
39
40// for the creation of dvorak keys on an Bepo keyboard at the OS layer.
41// so we can create an array of reasonable size
42// for our translation keys. We have to create a
43// good range of numbers
44#define GR(x) (x-SAFE_RANGE)
45
46uint8_t gr(uint8_t);
47void send_keycode(uint8_t);
48
49#define MOD_NONE 0x00
50
51// indexs for the keycode translation table.
52#define UNSHIFTED_KEY(key) key_translations[gr(key)][0][0]
53#define UNSHIFTED_MODS(key) key_translations[gr(key)][0][1]
54#define SHIFTED_KEY(key) key_translations[gr(key)][1][0]
55#define SHIFTED_MODS(key) key_translations[gr(key)][1][1]
56
57
58enum userspace_custom_keycodes {
59 // keep the keycodes using the send_key function close to SAFE_RANGE
60 // so the array of keycodes remains a reasonbale size.
61 DB_1 = SAFE_RANGE, // can always be here
62 DB_2,
63 DB_3,
64 DB_4,
65 DB_5,
66 DB_6,
67 DB_7,
68 DB_8,
69 DB_9,
70 DB_0,
71 DB_GRV,
72 DB_SCOLON,
73 DB_SLASH,
74 DB_BACKSLASH,
75 DB_EQL,
76 DB_DOT,
77 DB_COMM,
78 DB_QUOT,
79 DB_MINUS,
80 DB_RPRN,
81 DB_LPRN,
82 DB_RBRC,
83 DB_LBRC,
84 // for symbols layer
85 DB_HASH,
86 DB_LCBR,
87 DB_RCBR,
88 DB_PIPE,
89 DB_TILD,
90 DB_CIRC,
91 DB_LESS,
92 DB_GRTR,
93 // End of dvorak on bepo translation keys.
94
95 EPRM,
96 VRSN,
97 KC_DVORAK_ON_BEPO,
98 KC_BEPO,
99 KC_NORMAN,
100 KC_QWERTY,
101 KC_COLEMAK,
102 KC_DVORAK,
103 KC_WORKMAN,
104 KC_MAKE,
105 KC_RESET,
106 KC_RGB_T,
107 KC_SECRET_1,
108 KC_SECRET_2,
109 KC_SECRET_3,
110 KC_SECRET_4,
111 KC_SECRET_5,
112 KC_CCCV
113};
114
115#define SFTGUI_T(kc) { MT(MOD_LGUI | MOD_LSFT, kc) }
116#define SFT_GUI_ESC MT(MOD_LSFT | MOD_LGUI, KC_PGDN) // shift LGUI or Escape.
117#define ALT_ENT ALT_T(KC_ENT) // Alt or enter
118#define CTL_SPC CTL_T(KC_SPC) // ctrl or space
119#define CTL_BSPC CTL_T(KC_BSPC) // ctrl or backspace
120#define ALT_DEL ALT_T(KC_DEL) // Alt or delete
121#define GUI_ESC GUI_T(KC_ESC) // Gui or escape
122#define ALGR_SYMB ALGR_T(TG(SYMB)) // Alt gre or toggle symbol layer
123
124
125
126// OSM keycodes, to keep things clean and easy to change
127#define KC_MLSF OSM(MOD_LSFT)
128#define KC_MRSF OSM(MOD_RSFT)
129#define OS_LGUI OSM(MOD_LGUI)
130#define OS_RGUI OSM(MOD_RGUI)
131#define OS_LSFT OSM(MOD_LSFT)
132#define OS_RSFT OSM(MOD_RSFT)
133#define OS_LCTL OSM(MOD_LCTL)
134#define OS_RCTL OSM(MOD_RCTL)
135#define OS_LALT OSM(MOD_LALT)
136#define OS_RALT OSM(MOD_RALT)
137#define ALT_APP ALT_T(KC_APP)
138
139#define MG_NKRO MAGIC_TOGGLE_NKRO
140
141
142//// TAP DANCE
143
144 typedef struct {
145 bool is_press_action;
146 int state;
147 } tdtap;
148
149enum {
150 SINGLE_TAP = 1,
151 SINGLE_HOLD = 2,
152 DOUBLE_TAP = 3,
153 DOUBLE_HOLD = 4,
154 DOUBLE_SINGLE_TAP = 5, //send two single taps
155 TRIPLE_TAP = 6,
156 TRIPLE_HOLD = 7
157};
158
159//Tap Dance Declarations
160enum {
161 TD_ESC_CAPS = 0,
162 TD_TAB_BKTAB = 1,
163 TD_MDIA_SYMB = 2,
164 TD_HOME_END = 3,
165 TD_XMONAD_ESC = 4,
166 TD_DEF_LAYER_SW = 5,
167 TD_DEF_OS_LAYER_SW = 6,
168 TD_MOUSE_BTNS = 7,
169 TD_DVORAK_BEPO = 8
170};
171
172
173// Tap dance
174#define TAB_BKTAB TD(TD_TAB_BKTAB) // Tab or backtab tapdance.
175#define MDIA_SYMB_KP_LAYERS TD(TD_MDIA_SYMB) // MDIA, symb, keypad, layouts layer tapdance toggle.
176#define DEF_LAYER_SW TD(TD_DEF_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer
177#define DEF_OS_LAYER_SW TD(TD_DEF_OS_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer
178#define HOME_END TD(TD_HOME_END) // home or end tapdance.
179#define XMONAD_ESC TD(TD_XMONAD_ESC) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
180#define DVORAK_ET_BEPO TD(TD_DVORAK_BEPO) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
181#define TDMOUSE_BTNS TD(TD_MOUSE_BTNS) // hmmm. 1-5
182
183// HOME ROW LAYER TOGGLE (LT) and Shift.
184// both sides of the home row have "shift, ___, media , symb, ___" and "___, symb, media, ___, shift".
185// so pinky fingers are shift when held and the index and second fingers are symbol and
186// media layers when held.
187
188// Dvorak
189// shift and layer switch on hold on the home row.
190#define KC_SFT_T_A SFT_T(KC_A)
191#define KC_SFT_T_S SFT_T(KC_S)
192
193#define KC_LT_SYMB_U LT(SYMB, KC_U)
194#define KC_LT_SYMB_H LT(SYMB, KC_H)
195
196#define KC_LT_MDIA_E LT(MDIA, KC_E)
197#define KC_LT_MDIA_T LT(MDIA, KC_T)
198
199// Need to add this to the others.
200#define KC_LT_KP_N LT(KEYPAD, KC_N)
201#define KC_LT_KP_O LT(KEYPAD, KC_O)
202
203// for dvorak on bepo
204#define BP_SFT_T_A SFT_T(BP_A)
205#define BP_SFT_T_S SFT_T(BP_S)
206
207#define BP_LT_SYMB_U LT(SYMB, BP_U)
208#define BP_LT_SYMB_H LT(MDIA, BP_H)
209
210#define BP_LT_MDIA_E LT(MDIA, BP_E)
211#define BP_LT_MDIA_T LT(MDIA, BP_T)
212
213// Need to add this to the others.
214#define BP_LT_KP_N LT(KEYPAD, BP_N)
215#define BP_LT_KP_O LT(KEYPAD, BP_O)
216
217// for bepo on bepo
218#define BP_SFT_T_T SFT_T(BP_T)
219#define BP_SFT_T_W SFT_T(BP_W)
220
221#define BP_LT_SYMB_I LT(SYMB_ON_BEPO, BP_I)
222#define BP_LT_MDIA_E LT(MDIA, BP_E)
223#define BP_LT_KP_U LT(KEYPAD, BP_U)
224
225#define BP_LT_SYMB_S LT(SYMB_ON_BEPO, BP_S)
226#define BP_LT_MDIA_R LT(MDIA, BP_R)
227#define BP_LT_KP_N LT(KEYPAD, BP_N)
228
229#define BP_SFT_T_A SFT_T(BP_A)
230#define BP_SFT_T_S SFT_T(BP_S)
231#define BP_SFT_T_E SFT_T(BP_E)
232#define BP_SFT_T_M SFT_T(BP_M)
233
234#define BP_SFT_T_ECRC SFT_T(BP_ECRC)
235#define BP_SFT_T_CCED SFT_T(BP_CCED)
236#define BP_LT_SYMB_COMM LT(SYMB,BP_COMM)
237
238//QWERTY
239#define KC_SFT_T_SCLN SFT_T(KC_SCLN)
240
241#define KC_LT_MDIA_D LT(MDIA, KC_D)
242#define KC_LT_MDIA_K LT(MDIA, KC_K)
243#define KC_LT_SYMB_F LT(SYMB, KC_F)
244#define KC_LT_SYMB_J LT(SYMB, KC_J)
245
246//COLEMAK
247#define KC_SFT_T_O SFT_T(KC_O)
248#define KC_LT_MDIA_S LT(MDIA, KC_S)
249#define KC_LT_SYMB_T LT(SYMB, KC_T)
250
251#define KC_LT_MDIA_E LT(MDIA, KC_E)
252#define KC_LT_SYMB_N LT(SYMB, KC_N)
253
254//WORKMAN
255#define KC_SFT_T_I SFT_T(KC_I)
256#define KC_LT_MDIA_H LT(MDIA, KC_H)
257
258//NORMAN
259// For keys on the homerow. Hold for shift, keypad,mouse,and smbol layers
260#define KC_SFT_T_U SFT_T(KC_U)
261#define KC_LT_MDIA_I LT(MDIA, KC_I)
262
263// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
264#define MK_CUT LSFT(KC_DEL) // shift + delete
265#define MK_COPY LCTL(KC_INS) // ctrl + insert
266#define MK_PASTE LSFT(KC_INS) // shift + insert
267
268#define ___ KC_TRNS
269#define XXX KC_NO
270
271// Blocking keys
272#define ___X___ XXX
273#define ___X2___ XXX, XXX
274#define ___X3___ ___X2___, XXX
275#define ___X5___ ___X3___, XXX, XXX
276#define ___X15___ ___X5___, ___X5___, ___X5___
277
278// Transparent keys
279#define ___2___ ___, ___
280#define ___3___ ___2___, ___
281#define ___4___ ___3___, ___
282#define ___5___ ___4___, ___
283#define ___6___ ___5___, ___
284#define ___14___ ___5___, ___4___, ___5___
285#define ___15___ ___5___, ___5___, ___5___
286
287int on_qwerty(void);
288int get_xmonad_layer(void);
289int cur_dance (qk_tap_dance_state_t *state);
290
291//for the x tap dance. Put it here so it can be used in any keymap
292void x_finished (qk_tap_dance_state_t *state, void *user_data);
293void x_reset (qk_tap_dance_state_t *state, void *user_data);
diff --git a/users/ericgebhart/core_keysets.h b/users/ericgebhart/core_keysets.h
new file mode 100644
index 000000000..ffe02192f
--- /dev/null
+++ b/users/ericgebhart/core_keysets.h
@@ -0,0 +1,293 @@
1#pragma once
2/*
3 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#include "core_keys.h"
20
21/********************************************************************/
22/** Parts are parts, pieces of keysets so we have some decent **/
23/** building blocks to make keymaps with. **/
24/********************************************************************/
25
26
27// Since our quirky block definitions are basically a list of comma separated
28// arguments, we need a wrapper in order for these definitions to be
29// expanded before being used as arguments to the LAYOUT_xxx macro.
30#if (!defined(LAYOUT) && defined(KEYMAP))
31#define LAYOUT KEYMAP
32#endif
33
34#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
35#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
36#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
37#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
38
39#define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__)
40#define LAYOUT_ortho_5x14_wrapper(...) LAYOUT_ortho_5x14(__VA_ARGS__)
41
42
43/********************************************************************/
44/** The Core rows of each given layout. **/
45/********************************************************************/
46//Dvorak on a qwerty software layer in the OS
47#define ___DVORAK_L1___ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
48#define ___DVORAK_L2___ KC_SFT_T_A, KC_LT_KP_O, KC_LT_MDIA_E, KC_LT_SYMB_U, KC_I
49#define ___DVORAK_L3___ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
50
51#define ___DVORAK_R1___ KC_F, KC_G, KC_C, KC_R, KC_L
52#define ___DVORAK_R2___ KC_D, KC_LT_SYMB_H, KC_LT_MDIA_T, KC_LT_KP_N, KC_SFT_T_S
53#define ___DVORAK_R3___ KC_B, KC_M, KC_W, KC_V, KC_Z
54
55// Qwerty based layers that I don't really use.
56#define ___QWERTY_L1___ KC_Q, KC_W, KC_E, KC_R, KC_T
57#define ___QWERTY_L2___ KC_SFT_T_A, KC_S, KC_LT_MDIA_D, KC_LT_SYMB_F, KC_G
58#define ___QWERTY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
59
60#define ___QWERTY_R1___ KC_Y, KC_U, KC_I, KC_O, KC_P
61#define ___QWERTY_R2___ KC_H, KC_LT_SYMB_J, KC_LT_MDIA_K, KC_L, KC_SFT_T_SCLN
62#define ___QWERTY_R3___ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
63
64// COLEMAK
65#define ___COLEMAK_L1___ KC_Q, KC_W, KC_F, KC_P, KC_G
66#define ___COLEMAK_L2___ KC_SFT_T_A, KC_R, KC_LT_MDIA_S, KC_LT_SYMB_T, KC_D
67#define ___COLEMAK_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
68
69#define ___COLEMAK_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
70#define ___COLEMAK_R2___ KC_H, KC_LT_SYMB_N, KC_LT_MDIA_E, KC_I, KC_SFT_T_O
71#define ___COLEMAK_R3___ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
72
73// COLEMAK-DH
74#define ___COLEMAK_DH_L1___ KC_Q, KC_W, KC_F, KC_P, KC_B
75#define ___COLEMAK_DH_L2___ KC_SFT_T_A, KC_R, KC_LT_MDIA_S, KC_LT_SYMB_T, KC_G
76#define ___COLEMAK_DH_L3___ KC_Z, KC_X, KC_C, KC_D, KC_V
77
78#define ___COLEMAK_DH_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
79#define ___COLEMAK_DH_R2___ KC_M, KC_LT_SYMB_N, KC_LT_MDIA_E, KC_I, KC_SFT_T_O
80#define ___COLEMAK_DH_R3___ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
81
82// WORKMAN
83#define ___WORKMAN_L1___ KC_Q, KC_D, KC_R, KC_W, KC_B
84#define ___WORKMAN_L2___ KC_SFT_T_A, KC_S, KC_LT_MDIA_H, KC_LT_SYMB_T, KC_G
85#define ___WORKMAN_L3___ KC_Z, KC_X, KC_M, KC_C, KC_V
86
87#define ___WORKMAN_R1___ KC_J, KC_F, KC_U, KC_P, KC_SCLN
88#define ___WORKMAN_R2___ KC_Y, KC_LT_SYMB_N, KC_LT_MDIA_E, KC_O, KC_SFT_T_I
89#define ___WORKMAN_R3___ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
90
91// NORMAN
92#define ___NORMAN_L1___ KC_Q, KC_W, KC_D, KC_F, KC_K
93#define ___NORMAN_L2___ KC_SFT_T_A, KC_S, KC_LT_MDIA_E, KC_LT_SYMB_T, KC_G
94#define ___NORMAN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
95
96#define ___NORMAN_R1___ KC_J, KC_U, KC_R, KC_L, KC_SCLN
97#define ___NORMAN_R2___ KC_Y, KC_LT_SYMB_N, KC_LT_MDIA_I, KC_O, KC_SFT_T_U
98#define ___NORMAN_R3___ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH
99
100// BEPO MAPS
101// Dvorak on fr-bepo software layer in the OS.
102// for dvorak and all the other qwerty like keyboards on bepo
103#define ___DVORAK_FR_L1___ DB_QUOT, DB_COMM, DB_DOT, BP_P, BP_Y
104#define ___DVORAK_FR_L2___ BP_SFT_T_A, BP_LT_KP_O, BP_LT_MDIA_E, BP_LT_SYMB_U, BP_I
105#define ___DVORAK_FR_L3___ DB_SCOLON, BP_Q, BP_J, BP_K, BP_X
106
107#define ___DVORAK_FR_R1___ BP_F, BP_G, BP_C, BP_R, BP_L
108#define ___DVORAK_FR_R2___ BP_D, BP_LT_SYMB_H, BP_LT_MDIA_T, BP_LT_KP_N, BP_SFT_T_S
109#define ___DVORAK_FR_R3___ BP_B, BP_M, BP_W, BP_V, BP_Z
110
111
112// Bepo on fr-bepo software layer
113// for bepo on bepo
114/* BP_DLR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, */
115#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN
116/* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */
117#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLASH, BP_ASTR /* BP_EQL, BP_PERC */
118
119#define ___BEPO_FR_L1___ BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV
120#define ___BEPO_FR_L2___ BP_SFT_T_A, BP_LT_KP_U, BP_LT_SYMB_I, BP_LT_MDIA_E, BP_COMM
121#define ___BEPO_FR_L3___ /*BP_ECRC*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K
122
123#define ___BEPO_FR_R1___ /* BP_DCRC,*/ BP_V, BP_D, BP_L, BP_J, BP_Z
124#define ___BEPO_FR_R2___ /* BP_C, */ BP_T, BP_LT_SYMB_S, BP_LT_MDIA_R, BP_LT_KP_N, BP_SFT_T_M //BP_CCED
125#define ___BEPO_FR_R3___ BP_APOS, BP_Q, BP_G, BP_H, BP_F //BP_SFT_T_W
126
127/* BP_DLR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, */
128/* KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, */
129/* KC_LSFT, BP_A, BP_U, BP_I, BP_E, BP_COMM, */
130/* KC_LCTRL, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, */
131/* ESC_FN, BP_ECRC, KC_LGUI, KC_LALT, SPC_RALT, */
132/* TT(SWAP), KC_MNXT, */
133/* KC_MPLY, */
134/* TT(FN), TT(NUMS), KC_MPRV, */
135
136/* /\* right hand *\/ */
137/* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */
138/* KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, */
139/* BP_C, BP_T, BP_S, BP_R, BP_N, M_RSFT, */
140/* KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, W_RCTL, */
141
142
143/*******************************************************************/
144/** For the top rows. Numbers for most things, symbols for Bepo. **/
145/*******************************************************************/
146
147// for everything on qwerty.
148#define ___NUMBER_L___ KC_1, KC_2, KC_3, KC_4, KC_5
149#define ___NUMBER_R___ KC_6, KC_7, KC_8, KC_9, KC_0
150
151// function key rows, works for everyone.
152#define ___FUNC_L___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
153#define ___FUNC_R___ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
154
155#define ___FUNC_1_6___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6
156#define ___FUNC_7_12___ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
157
158// a top symbol row if someone wants it.
159#define ___SYMB_L___ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
160#define ___SYMB_R___ KC_CIRC, KC_AMPR, KC_AST, KC_LPRN, KC_RPRN
161
162// For numbers on bepo. Bepo has numbers on shifted keys, the
163// reverse of most keyboard layouts.
164#define ___NUMBER_BEPO_L___ DB_1, DB_2, DB_3, DB_4, DB_5
165#define ___NUMBER_BEPO_R___ DB_6, DB_7, DB_8, DB_9, DB_0
166
167
168/*******************************************************************/
169/* keysets for the auxillary layers. */
170/* the KC_P? codes don't work for me. I don't use those shifted */
171/* values anyway. */
172/*******************************************************************/
173// Keypads
174#define ___KEYPAD_1___ KC_7, KC_8, KC_9, KC_PSLS
175#define ___KEYPAD_2___ KC_4, KC_5, KC_6, KC_PAST
176#define ___KEYPAD_3___ KC_1, KC_2, KC_3, KC_PMNS
177#define ___KEYPAD_4___ KC_0, KC_DOT, KC_PEQL, KC_PPLS
178
179// Keypad from the default keymap.c of the xd75
180#define ___KEYPAD_1_ALT___ KC_P7, KC_P8, KC_P9, KC_MINS
181#define ___KEYPAD_2_ALT___ KC_P4, KC_P5, KC_P6, KC_PLUS
182#define ___KEYPAD_3_ALT___ KC_P1, KC_P2, KC_P3, KC_PENT
183#define ___KEYPAD_4_ALT___ KC_P0, KC_DOT, KC_PENT, KC_PENT
184
185// For Bepo
186#define ___KEYPAD_1_BP___ DB_7, DB_8, DB_9, BP_SLASH
187#define ___KEYPAD_2_BP___ DB_4, DB_5, DB_6, BP_ASTR
188#define ___KEYPAD_3_BP___ DB_1, DB_2, DB_3, DB_MINUS
189#define ___KEYPAD_4_BP___ DB_0, DB_DOT, DB_EQL, BP_PLUS
190
191
192// SYMBOLS
193// An arrangement for the left hand with a focus on the ()[]{}s.
194#define ___SYMBOLS_1___ KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE
195#define ___SYMBOLS_2___ KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV
196#define ___SYMBOLS_3___ KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD
197
198// A larger 6 column arrangement for the left hand, A merge of dvorak and the above.
199#define ___SYMBOLS6_1___ KC_GRV, KC_LT, KC_GT, KC_LCBR, KC_RCBR, KC_HASH
200#define ___SYMBOLS6_2___ KC_AMPR, KC_AT, KC_ASTR, KC_LPRN, KC_RPRN, KC_PERC
201#define ___SYMBOLS6_3___ KC_DLR, KC_DQT, KC_QUOT, KC_LBRC, KC_RBRC, KC_COLON
202#define ___SYMBOLS6_4___ ___2___, KC_TILD, KC_DOT, KC_EXLM, KC_SCLN
203
204#define ___SYMBOLS5_4___ ___, KC_TILD, KC_DOT, KC_EXLM, KC_SCLN
205
206
207// A symbol pad. Basically the same layout as a number pad with the symbols
208// instead of the numbers with some extras around it, in familiar places for the
209// right hand.
210#define ___SYMPAD_1___ KC_GRV, KC_AMPR, KC_ASTR, KC_LCBR, KC_PLUS, KC_PIPE
211#define ___SYMPAD_2___ KC_TILD, KC_DLR, KC_PERC, KC_CIRC, KC_ASTR, KC_GRV
212#define ___SYMPAD_3___ ___, KC_EXLM, KC_AT, KC_HASH, KC_MINUS, KC_SLASH
213#define ___SYMPAD_4___ ___, KC_RCBR, KC_DOT, KC_EQUAL, KC_UNDS, KC_BSLASH
214
215#define ___5_SYMPAD_4___ KC_RCBR, KC_DOT, KC_EQUAL, KC_UNDS, KC_BSLASH
216
217// Function pad. Same idea as above, but for function keys.
218#define ___FUNCPAD_T___ KC_F10, KC_F11, KC_F12
219#define ___FUNCPAD_1___ KC_F7, KC_F8, KC_F9
220#define ___FUNCPAD_2___ KC_F4, KC_F5, KC_F6
221#define ___FUNCPAD_3___ KC_F1, KC_F2, KC_F3
222
223
224//--- all over again for BEPO
225
226// SYMBOLS FOR BEPO
227// The top row. Bepo has symbols not numbers. Numbers are the shifted values.
228#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN
229/* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */
230#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLASH, BP_ASTR /* BP_EQL, BP_PERC */
231
232// An arrangement for the left hand with a focus on the ()[]{}s.
233#define ___SYMBOLS_1_BP___ KC_EXLM, BP_AT, DB_LCBR, DB_RCBR, DB_PIPE
234#define ___SYMBOLS_2_BP___ DB_HASH, BP_DLR, DB_LPRN, DB_RPRN, DB_GRV
235#define ___SYMBOLS_3_BP___ BP_PERC, DB_CIRC, DB_LBRC, DB_RBRC, DB_TILD
236
237// A larger 6 column arrangement for the left hand, A merge of dvorak and the above.
238#define ___SYMBOLS6_1_BP___ DB_GRV, DB_LESS, DB_GRTR, DB_LCBR, DB_RCBR, DB_HASH
239#define ___SYMBOLS6_2_BP___ KC_AMPR, BP_AT, BP_ASTR, DB_LPRN, DB_RPRN, BP_PERC
240#define ___SYMBOLS6_3_BP___ BP_DLR, BP_DQOT, DB_QUOT, DB_LBRC, DB_RBRC, KC_COLON
241#define ___SYMBOLS6_4_BP___ ___2___, DB_TILD, DB_DOT, KC_EXLM, DB_SCOLON
242
243#define ___SYMBOLS5_4_BP___ ___, DB_TILD, DB_DOT, KC_EXLM, DB_SCOLON
244
245// A symbol pad. Basically the same layout as a number pad with the symbols
246// instead of the numbers with some extras around it, in familiar places for the
247// right hand.
248#define ___SYMPAD_1_BP___ DB_GRV, BP_AMPR, BP_ASTR, DB_LCBR, BP_PLUS, DB_PIPE
249#define ___SYMPAD_2_BP___ DB_TILD, BP_DLR, BP_PERC, DB_CIRC, BP_ASTR, DB_GRV
250#define ___SYMPAD_3_BP___ ___, BP_EXLM, BP_AT, DB_HASH, BP_MINS, BP_SLSH
251#define ___SYMPAD_4_BP___ ___, DB_RCBR, DB_DOT, BP_EQL, BP_MINUS, DB_BACKSLASH
252
253#define ___5_SYMPAD_4_BP___ DB_RCBR, DB_DOT, BP_EQL, BP_MINUS, DB_BACKSLASH
254
255// Parts are parts.
256// MOUSE, ARROW and MEDIA KEY SETS
257#define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
258#define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
259#define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5
260#define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1
261#define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2
262#define ___MACCL___ ___MOUSE_ACCL_012___
263
264#define ___PRV_PLAY_NXT_STOP KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
265#define ___VDN_MUTE_VUP___ KC_VOLD, KC_MUTE, KC_VOLU
266
267#define ___MUTE_PRV_PLAY_NXT_STOP___ KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
268#define ___MUTE_PLAY_STOP___ KC_MUTE, KC_MPLY, KC_MSTP
269#define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
270
271// RGB FUNCTION Keysets
272// RGB row for the _FN layer from the redo of the default keymap.c
273#define ___RGB_HUE_SAT_INT_UP___ RGB_HUI, RGB_SAI, RGB_VAI, RGB_RMOD
274#define ___RGB_HUE_SAT_INT_DN___ RGB_HUD, RGB_SAD, RGB_VAD, RGB_MOD
275#define ___RGB_MODE_PRV_NXT___ RGB_RMOD, RGB_MOD
276#define ___RGB_TOGGLE___ RGB_TOG
277#define ___RGB_P_B_R_SW_SN___ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN
278#define ___RGB_KXGT___ RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T
279
280// Print screen, screen lock, pause
281#define ___PSCR_SLCK_PAUS___ KC_PSCR, KC_SLCK, KC_PAUS
282
283// LAYER Keyset rows. Changing the Default base layer or the transient layers.
284// Some are full length. The baselayers leave the ends open. hence a 13.
285// for an ORtho 15.
286#define ___2_LAYERS_B1___ DF(BEPO), DF(DVORAK_ON_BEPO)
287#define ___2_LAYERS_B2___ DF(COLEMAK), DF(DVORAK)
288#define ___3_LAYERS_B3___ DF(QWERTY), DF(NORMAN), DF(WORKMAN)
289#define ___3_LAYERS_B4___ ___X3___
290// transient layers.
291#define ___3_LAYERS_T_BP___ TO(MDIA), TO(SYMB_ON_BEPO), TO(KEYPAD_ON_BEPO)
292#define ___3_LAYERS_T___ TO(MDIA), TO(SYMB), TO(KEYPAD)
293#define ___3_LAYERS_T_CTL___ TO(_RGB), ___X2___
diff --git a/users/ericgebhart/ericgebhart.c b/users/ericgebhart/ericgebhart.c
index 69aa450e0..76143c6ed 100644
--- a/users/ericgebhart/ericgebhart.c
+++ b/users/ericgebhart/ericgebhart.c
@@ -14,6 +14,7 @@
14 You should have received a copy of the GNU General Public License 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/>. 15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/ 16*/
17
17#include "ericgebhart.h" 18#include "ericgebhart.h"
18 19
19#include "quantum.h" 20#include "quantum.h"
@@ -122,8 +123,6 @@ const uint8_t key_translations[][2][2] = {
122 [GR(DB_CIRC)] = {{BP_AT, MOD_BIT(KC_RALT)}, {BP_AT, MOD_BIT(KC_RALT)}}, 123 [GR(DB_CIRC)] = {{BP_AT, MOD_BIT(KC_RALT)}, {BP_AT, MOD_BIT(KC_RALT)}},
123 [GR(DB_LESS)] = {{BP_LGIL, MOD_BIT(KC_RALT)}, {BP_LGIL, MOD_BIT(KC_RALT)}}, 124 [GR(DB_LESS)] = {{BP_LGIL, MOD_BIT(KC_RALT)}, {BP_LGIL, MOD_BIT(KC_RALT)}},
124 [GR(DB_GRTR)] = {{BP_RGIL, MOD_BIT(KC_RALT)}, {BP_RGIL, MOD_BIT(KC_RALT)}}, 125 [GR(DB_GRTR)] = {{BP_RGIL, MOD_BIT(KC_RALT)}, {BP_RGIL, MOD_BIT(KC_RALT)}},
125
126
127}; 126};
128 127
129 128
@@ -275,7 +274,7 @@ xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record-
275 // to save on firmware space, since it's limited. 274 // to save on firmware space, since it's limited.
276#ifdef MACROS_ENABLED 275#ifdef MACROS_ENABLED
277 case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros 276 case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
278 if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); } 277 if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeprom_update_byte(EECONFIG_USER, userspace_config.raw); }
279 return false; break; 278 return false; break;
280#endif // MACROS_ENABLED 279#endif // MACROS_ENABLED
281 280
@@ -304,7 +303,7 @@ xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record-
304 case CLICKY_TOGGLE: 303 case CLICKY_TOGGLE:
305#ifdef AUDIO_CLICKY 304#ifdef AUDIO_CLICKY
306 userspace_config.clicky_enable = clicky_enable; 305 userspace_config.clicky_enable = clicky_enable;
307 eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); 306 eeprom_update_byte(EECONFIG_USER, userspace_config.raw);
308#endif 307#endif
309 break; 308 break;
310#ifdef UNICODE_ENABLE 309#ifdef UNICODE_ENABLE
@@ -390,13 +389,20 @@ void tap_dance_layer_switch (qk_tap_dance_state_t *state, void *user_data) {
390 if(on_qwerty()) 389 if(on_qwerty())
391 layer_invert(SYMB); 390 layer_invert(SYMB);
392 else 391 else
393 layer_invert(SYMB_ON_BEPO); 392 layer_invert(SYMB_ON_BEPO);
394 break; 393 break;
395 case 2: 394 case 2:
396 layer_invert(MDIA); 395 layer_invert(MDIA);
397 break; 396 break;
398 case 3: 397 case 3:
399 layer_invert(LAYERS); 398 layer_invert(LAYERS);
399 break;
400 case 4:
401 if(on_qwerty())
402 layer_invert(KEYPAD);
403 else
404 layer_invert(KEYPAD_ON_BEPO);
405 break;
400 default: 406 default:
401 break; 407 break;
402 } 408 }
diff --git a/users/ericgebhart/ericgebhart.h b/users/ericgebhart/ericgebhart.h
index 6eb11ddfc..ad66a636e 100644
--- a/users/ericgebhart/ericgebhart.h
+++ b/users/ericgebhart/ericgebhart.h
@@ -1,52 +1,13 @@
1/* 1#pragma once
2 Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
3
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.
8
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.
13
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/>.
16*/
17#include QMK_KEYBOARD_H
18 2
19#ifndef ericgebhart 3#ifndef ericgebhart
20#define ericgebhart 4#define ericgebhart
21 5
22#include "quantum.h" 6#include QMK_KEYBOARD_H
23#include "process_keycode/process_tap_dance.h" 7#include "base_layers.h"
24
25
26void tap(uint16_t keycode);
27bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
28
29
30#define EECONFIG_USERSPACE (uint8_t *)19
31
32typedef union {
33 uint8_t raw;
34 struct {
35 bool clicky_enable :1;
36 bool rgb_layer_change :1;
37 bool is_overwatch :1;
38 bool nuke_switch :1;
39 };
40} userspace_config_t;
41
42#define ___ KC_TRNS
43#define XXX KC_NO
44 8
45// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
46#define MK_CUT LSFT(KC_DEL) // shift + delete
47#define MK_COPY LCTL(KC_INS) // ctrl + insert
48#define MK_PASTE LSFT(KC_INS) // shift + insert
49 9
10//#define ONESHOT_TAP_TOGGLE 2 /* Tapping this number of times holds the key until tapped once again. */
50 11
51#define DVORAK 0 // dvorak layout (default) 12#define DVORAK 0 // dvorak layout (default)
52#define QWERTY 1 13#define QWERTY 1
@@ -63,367 +24,9 @@ typedef union {
63#define LAYERS 11 // layers and right mousekeys. 24#define LAYERS 11 // layers and right mousekeys.
64#define XMONAD 12 // xmonad ie. dvorak. 25#define XMONAD 12 // xmonad ie. dvorak.
65#define XMONAD_FR 13 // xmonad ie. dvorak. 26#define XMONAD_FR 13 // xmonad ie. dvorak.
66 27#define KEYPAD 14 // number and Fkey pads
67 28#define KEYPAD_ON_BEPO 15 // number and Fkey pads.
68// for the creation of dvorak keys on an Bepo keyboard at the OS layer. 29#define _RGB 16 // RGB stuff.
69
70// so we can create an array of reasonable size
71// for our translation keys. We have to create a
72// good range of numbers
73#define GR(x) (x-SAFE_RANGE)
74
75uint8_t gr(uint8_t);
76void send_keycode(uint8_t);
77
78#define MOD_NONE 0x00
79
80// indexs for the keycode translation table.
81#define UNSHIFTED_KEY(key) key_translations[gr(key)][0][0]
82#define UNSHIFTED_MODS(key) key_translations[gr(key)][0][1]
83#define SHIFTED_KEY(key) key_translations[gr(key)][1][0]
84#define SHIFTED_MODS(key) key_translations[gr(key)][1][1]
85
86
87enum userspace_custom_keycodes {
88 // keep the keycodes using the send_key function close to SAFE_RANGE
89 // so the array of keycodes remains a reasonbale size.
90 DB_1 = SAFE_RANGE, // can always be here
91 DB_2,
92 DB_3,
93 DB_4,
94 DB_5,
95 DB_6,
96 DB_7,
97 DB_8,
98 DB_9,
99 DB_0,
100 DB_GRV,
101 DB_SCOLON,
102 DB_SLASH,
103 DB_BACKSLASH,
104 DB_EQL,
105 DB_DOT,
106 DB_COMM,
107 DB_QUOT,
108 DB_MINUS,
109 DB_RPRN,
110 DB_LPRN,
111 DB_RBRC,
112 DB_LBRC,
113 // for symbols layer
114 DB_HASH,
115 DB_LCBR,
116 DB_RCBR,
117 DB_PIPE,
118 DB_TILD,
119 DB_CIRC,
120 DB_LESS,
121 DB_GRTR,
122 // End of dvorak on bepo translation keys.
123
124 EPRM,
125 VRSN,
126 KC_DVORAK_ON_BEPO,
127 KC_BEPO,
128 KC_NORMAN,
129 KC_QWERTY,
130 KC_COLEMAK,
131 KC_DVORAK,
132 KC_WORKMAN,
133 KC_MAKE,
134 KC_RESET,
135 KC_RGB_T,
136 KC_SECRET_1,
137 KC_SECRET_2,
138 KC_SECRET_3,
139 KC_SECRET_4,
140 KC_SECRET_5,
141 KC_CCCV
142};
143
144#define SFTGUI_T(kc) { MT(MOD_LGUI | MOD_LSFT, kc) }
145#define SFT_GUI_ESC MT(MOD_LSFT | MOD_LGUI, KC_PGDN) // shift LGUI or Escape.
146#define ALT_ENT ALT_T(KC_ENT) // Alt or enter
147#define CTL_SPC CTL_T(KC_SPC) // ctrl or space
148#define CTL_BSPC CTL_T(KC_BSPC) // ctrl or backspace
149#define ALT_DEL ALT_T(KC_DEL) // Alt or delete
150#define GUI_ESC GUI_T(KC_ESC) // Gui or escape
151#define ALGR_SYMB ALGR_T(TG(SYMB)) // Alt gre or toggle symbol layer
152
153#define KC_SFT_T_U SFT_T(KC_U)
154#define KC_SFT_T_H SFT_T(KC_H)
155#define KC_LT_SYMB_I LT(SYMB, KC_I)
156#define KC_LT_SYMB_D LT(SYMB, KC_D)
157
158// for dvorak on bepo
159#define BP_SFT_T_U SFT_T(BP_U)
160#define BP_SFT_T_H SFT_T(BP_H)
161#define BP_LT_SYMB_D LT(SYMB, BP_D)
162
163
164// for bepo on bepo
165#define BP_SFT_T_T SFT_T(BP_T)
166#define BP_LT_SYMB_C LT(SYMB_ON_BEPO, BP_C)
167#define BP_LT_SYMB_I LT(SYMB_ON_BEPO, BP_I)
168#define BP_SFT_T_E SFT_T(BP_E)
169#define BP_SFT_T_ECRC SFT_T(BP_ECRC)
170#define BP_SFT_T_CCED SFT_T(BP_CCED)
171#define BP_LT_SYMB_COMM LT(SYMB,BP_COMM)
172
173// OSM keycodes, to keep things clean and easy to change
174#define KC_MLSF OSM(MOD_LSFT)
175#define KC_MRSF OSM(MOD_RSFT)
176#define OS_LGUI OSM(MOD_LGUI)
177#define OS_RGUI OSM(MOD_RGUI)
178#define OS_LSFT OSM(MOD_LSFT)
179#define OS_RSFT OSM(MOD_RSFT)
180#define OS_LCTL OSM(MOD_LCTL)
181#define OS_RCTL OSM(MOD_RCTL)
182#define OS_LALT OSM(MOD_LALT)
183#define OS_RALT OSM(MOD_RALT)
184#define ALT_APP ALT_T(KC_APP)
185
186#define MG_NKRO MAGIC_TOGGLE_NKRO
187
188
189//// TAP DANCE
190
191typedef struct {
192 bool is_press_action;
193 int state;
194} tdtap;
195
196enum {
197 SINGLE_TAP = 1,
198 SINGLE_HOLD = 2,
199 DOUBLE_TAP = 3,
200 DOUBLE_HOLD = 4,
201 DOUBLE_SINGLE_TAP = 5, //send two single taps
202 TRIPLE_TAP = 6,
203 TRIPLE_HOLD = 7
204 };
205
206 //Tap Dance Declarations
207 enum {
208 TD_ESC_CAPS = 0,
209 TD_TAB_BKTAB = 1,
210 TD_MDIA_SYMB = 2,
211 TD_HOME_END = 3,
212 TD_XMONAD_ESC = 4,
213 TD_DEF_LAYER_SW = 5,
214 TD_DEF_OS_LAYER_SW = 6,
215 TD_MOUSE_BTNS = 7,
216 TD_DVORAK_BEPO = 8
217 };
218
219
220// Tap dance
221#define TAB_BKTAB TD(TD_TAB_BKTAB) // Tab or backtab tapdance.
222#define MDIA_SYMB TD(TD_MDIA_SYMB) // MDIA or Symb layer tapdance toggle.
223#define DEF_LAYER_SW TD(TD_DEF_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer
224#define DEF_OS_LAYER_SW TD(TD_DEF_OS_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer
225#define HOME_END TD(TD_HOME_END) // home or end tapdance.
226#define XMONAD_ESC TD(TD_XMONAD_ESC) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
227#define DVORAK_ET_BEPO TD(TD_DVORAK_BEPO) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
228#define TDMOUSE_BTNS TD(TD_MOUSE_BTNS) // hmmm. 1-5
229
230
231int on_qwerty(void);
232int get_xmonad_layer(void);
233int cur_dance (qk_tap_dance_state_t *state);
234
235//for the x tap dance. Put it here so it can be used in any keymap
236void x_finished (qk_tap_dance_state_t *state, void *user_data);
237void x_reset (qk_tap_dance_state_t *state, void *user_data);
238
239
240// Blocks for each of the four major keyboard layouts
241// Organized so we can quickly adapt and modify all of them
242// at once, rather than for each keyboard, one at a time.
243// And this allows for much cleaner blocks in the keymaps.
244// For instance Tap/Hold for Control on all of the layouts
245
246// NOTE: These are all the same length. If you do a search/replace
247// then you need to add/remove underscores to keep the
248// lengths consistent.
249
250// Since our quirky block definitions are basically a list of comma separated
251// arguments, we need a wrapper in order for these definitions to be
252// expanded before being used as arguments to the LAYOUT_xxx macro.
253#if (!defined(LAYOUT) && defined(KEYMAP))
254#define LAYOUT KEYMAP
255#endif
256
257#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
258#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
259#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
260#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
261
262//Dvorak on a qwerty software layer in the OS
263#define ___DVORAK_L1___ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
264#define ___DVORAK_L2___ KC_A, KC_O, KC_E, KC_SFT_T_U, KC_LT_SYMB_I
265#define ___DVORAK_L3___ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
266
267#define ___DVORAK_R1___ KC_F, KC_G, KC_C, KC_R, KC_L
268#define ___DVORAK_R2___ KC_LT_SYMB_D, KC_SFT_T_H, KC_T, KC_N, KC_S
269#define ___DVORAK_R3___ KC_B, KC_M, KC_W, KC_V, KC_Z
270
271
272// Dvorak on fr-bepo software layer in the OS.
273// for dvorak and all the other qwerty like keyboards on bepo
274#define ___NUMBER_BEPO_L___ DB_1, DB_2, DB_3, DB_4, DB_5
275#define ___NUMBER_BEPO_R___ DB_6, DB_7, DB_8, DB_9, DB_0
276
277#define ___DVORAK_FR_L1___ DB_QUOT, DB_COMM, DB_DOT, BP_P, BP_Y
278#define ___DVORAK_FR_L2___ BP_A, BP_O, BP_E, BP_SFT_T_U, BP_LT_SYMB_I
279#define ___DVORAK_FR_L3___ DB_SCOLON, BP_Q, BP_J, BP_K, BP_X
280
281#define ___DVORAK_FR_R1___ BP_F, BP_G, BP_C, BP_R, BP_L
282#define ___DVORAK_FR_R2___ BP_LT_SYMB_D, BP_SFT_T_H, BP_T, BP_N, BP_S
283#define ___DVORAK_FR_R3___ BP_B, BP_M, BP_W, BP_V, BP_Z
284
285
286// Bepo on fr-bepo software layer
287// for bepo on bepo
288#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN
289#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLASH, BP_ASTR /* BP_EQL, BP_PERC */
290
291#define ___BEPO_FR_L1___ BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV
292#define ___BEPO_FR_L2___ BP_A, BP_U, BP_I, BP_SFT_T_E, BP_LT_SYMB_COMM
293#define ___BEPO_FR_L3___ /*BP_ECRC*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K
294
295#define ___BEPO_FR_R1___ /* BP_DCRC*/ BP_V, BP_D, BP_L, BP_J, BP_Z //, BP_W
296#define ___BEPO_FR_R2___ /* BP_C */ BP_SFT_T_T, BP_S, BP_R, BP_N, BP_M //BP_CCED
297#define ___BEPO_FR_R3___ BP_APOS, BP_Q, BP_G, BP_H, BP_F
298
299// the bottom rows for keyboards on bepo.
300#define ___ERGODOX_BOTTOM_RIGHT_FR___ KC_UP, KC_DOWN, DB_BACKSLASH, LCTL(BP_V), LCTL(BP_C)
301#define ___ERGODOX_BOTTOM_LEFT_FR___ LCTL(BP_C), LCTL(BP_V), KC_INS, KC_LEFT, KC_RIGHT
302
303// Since we have 7 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN, NORMAN,
304// 2 of them based on a Bepo software keyboard, --- DVORAK_ON_BEPO and BEPO),
305// this allows us to quickly modify the bottom row for all of the layouts
306// so we don't have to alter it 4 times and hope that we haven't missed
307// anything
308#define ___ERGODOX_BOTTOM_LEFT___ LCTL(KC_C), LCTL(KC_V), KC_INS, KC_LEFT, KC_RIGHT
309#define ___ERGODOX_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLASH, LCTL(KC_V), LCTL(KC_C)
310
311#define ___ERGODOX_THUMB_LEFT___ \
312 KC_RALT, ALGR_SYMB, \
313 HOME_END, \
314 CTL_BSPC, ALT_DEL, XMONAD_ESC
315
316#define ___ERGODOX_THUMB_RIGHT___ \
317 ALGR_SYMB, TD_MOUSE_BTNS, \
318 KC_PGUP, \
319 KC_PGDN, ALT_ENT, CTL_SPC
320
321#define ___ERGODOX_TRANS_THUMBS___ \
322 ___, ___, \
323 ___, \
324 ___, ___, ___ \
325
326#define ___ERGODOX_TRANS_BOTTOM___ \
327 ___,___,___,___,___
328
329#define ___ERGODOX_TRANS_6_ROW___ \
330 ___,___,___,___,___,___
331
332
333
334// Qwerty based layers that I don't really use.
335#define ___QWERTY_L1___ KC_Q, KC_W, KC_E, KC_R, KC_T
336#define ___QWERTY_L2___ KC_A, KC_S, KC_D, KC_F, KC_G
337#define ___QWERTY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
338
339#define ___QWERTY_R1___ KC_Y, KC_U, KC_I, KC_O, KC_P
340#define ___QWERTY_R2___ KC_H, KC_J, KC_K, KC_L, KC_SCLN
341#define ___QWERTY_R3___ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
342
343
344#define ___COLEMAK_L1___ KC_Q, KC_W, KC_F, KC_P, KC_G
345#define ___COLEMAK_L2___ KC_A, KC_R, KC_S, KC_T, KC_D
346#define ___COLEMAK_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
347
348#define ___COLEMAK_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
349#define ___COLEMAK_R2___ KC_H, KC_N, KC_E, KC_I, KC_O
350#define ___COLEMAK_R3___ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
351
352
353#define ___COLEMAK_MOD_DH_L1___ KC_Q, KC_W, KC_F, KC_P, KC_B
354#define ___COLEMAK_MOD_DH_L2___ KC_A, KC_R, KC_S, KC_T, KC_G
355#define ___COLEMAK_MOD_DH_L3___ CTL_T(KC_Z), KC_X, KC_C, KC_D, KC_V
356
357#define ___COLEMAK_MOD_DH_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
358#define ___COLEMAK_MOD_DH_R2___ KC_M, KC_N, KC_E, KC_I, KC_O
359#define ___COLEMAK_MOD_DH_R3___ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
360
361
362#define ___WORKMAN_L1___ KC_Q, KC_D, KC_R, KC_W, KC_B
363#define ___WORKMAN_L2___ KC_A, KC_S, KC_H, KC_T, KC_G
364#define ___WORKMAN_L3___ KC_Z, KC_X, KC_M, KC_C, KC_V
365
366#define ___WORKMAN_R1___ KC_J, KC_F, KC_U, KC_P, KC_SCLN
367#define ___WORKMAN_R2___ KC_Y, KC_N, KC_E, KC_O, KC_I
368#define ___WORKMAN_R3___ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
369
370
371#define ___NORMAN_L1___ KC_Q, KC_W, KC_D, KC_F, KC_K
372#define ___NORMAN_L2___ KC_A, KC_S, KC_E, KC_T, KC_G
373#define ___NORMAN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
374
375#define ___NORMAN_R1___ KC_J, KC_U, KC_R, KC_L, KC_SCLN
376#define ___NORMAN_R2___ KC_Y, KC_N, KC_I, KC_O, KC_U
377#define ___NORMAN_R3___ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH
378
379
380// For the top rows. Numbers for most things, symbols for Bepo.
381
382// for everything on qwerty.
383#define ___NUMBER_L___ KC_1, KC_2, KC_3, KC_4, KC_5
384#define ___NUMBER_R___ KC_6, KC_7, KC_8, KC_9, KC_0
385
386// function key rows, works for everyone.
387#define ___FUNC_L___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
388#define ___FUNC_R___ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
389
390
391// Rows for the auxillary layers.
392
393// The symbol layer is for qwerty. I need another one for Bepo...
394
395// the KC_P? codes don't work for me. I don't use those shifted values anyway.
396#define ___KEYPAD_1___ KC_7, KC_8, KC_9, KC_PSLS
397#define ___KEYPAD_2___ KC_4, KC_5, KC_6, KC_PAST
398#define ___KEYPAD_3___ KC_1, KC_2, KC_3, KC_PMNS
399#define ___KEYPAD_4___ KC_0, KC_DOT, KC_PEQL, KC_PPLS
400
401#define ___KEYPAD_1_BP___ DB_7, DB_8, DB_9, BP_SLASH
402#define ___KEYPAD_2_BP___ DB_4, DB_5, DB_6, BP_ASTR
403#define ___KEYPAD_3_BP___ DB_1, DB_2, DB_3, DB_MINUS
404#define ___KEYPAD_4_BP___ DB_0, DB_DOT, DB_EQL, BP_PLUS
405
406#define ___SYMBOLS_1___ KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE
407#define ___SYMBOLS_2___ KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV
408#define ___SYMBOLS_3___ KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD
409
410#define ___SYMBOLS_1_BP___ KC_EXLM, BP_AT, DB_LCBR, DB_RCBR, DB_PIPE
411#define ___SYMBOLS_2_BP___ DB_HASH, BP_DLR, DB_LPRN, DB_RPRN, DB_GRV
412#define ___SYMBOLS_3_BP___ BP_PERC, DB_CIRC, DB_LBRC, DB_RBRC, DB_TILD
413
414#define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
415#define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
416#define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5
417#define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1
418#define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2
419
420#define ___MUTE_PLAY_STOP___ KC_MUTE, KC_MPLY, KC_MSTP
421#define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
422
423#define ___LAYERS_L1___ DF(BEPO), DF(DVORAK_ON_BEPO)
424#define ___LAYERS_L2___ DF(COLEMAK), DF(DVORAK)
425#define ___LAYERS_L3___ DF(QWERTY), DF(NORMAN), DF(WORKMAN)
426#define ___LAYERS_L4___ TO(MDIA), TO(SYMB_ON_BEPO), TO(SYMB)
427 30
428 31
429#endif 32#endif
diff --git a/users/ericgebhart/rules.mk b/users/ericgebhart/rules.mk
index 2572d2111..70017a595 100755
--- a/users/ericgebhart/rules.mk
+++ b/users/ericgebhart/rules.mk
@@ -1,18 +1,15 @@
1USER_NAME := ericgebhart
2SRC += ericgebhart.c 1SRC += ericgebhart.c
3 2
4MOUSEKEY_ENABLE = yes # Mouse keys 3MOUSEKEY_ENABLE = yes # Mouse keys
5EXTRAKEY_ENABLE = yes # Audio control and System control 4EXTRAKEY_ENABLE = yes # Audio control and System control
6COMMAND_ENABLE = yes # Commands for debug and configuration 5COMMAND_ENABLE = no # Commands for debug and configuration
7NKRO_ENABLE = yes # USB Nkey Rollover - for issues, see github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 6NKRO_ENABLE = no # USB Nkey Rollover - for issues, see github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
8SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard 7SWAP_HANDS_ENABLE= no # Allow swapping hands of keyboard
9KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key 8KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key
10TAP_DANCE_ENABLE = yes # Enable the tap dance feature. 9TAP_DANCE_ENABLE = yes # Enable the tap dance feature.
11CONSOLE_ENABLE = yes # Console for debug 10CONSOLE_ENABLE = no # Console for debug
12 11
13BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration 12BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
14UNICODE_ENABLE = no 13UNICODE_ENABLE = no
15SLEEP_LED_ENABLE = no 14SLEEP_LED_ENABLE = no
16API_SYSEX_ENABLE = no 15API_SYSEX_ENABLE = no
17RGBLIGHT_ENABLE = no
18RGBLIGHT_ANIMATION = no