aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-11-16 14:54:18 -0500
committerGitHub <noreply@github.com>2016-11-16 14:54:18 -0500
commit9f1b27c5bad5ba36afaa32f986fd662053215d8b (patch)
tree6a778dfb78af47b067feef053adeacceea778f33
parente025a94bc26db60948923b2683d195db9e068866 (diff)
parent162f603b1c36c63aa170170998b361a86413767f (diff)
downloadqmk_firmware-9f1b27c5bad5ba36afaa32f986fd662053215d8b.tar.gz
qmk_firmware-9f1b27c5bad5ba36afaa32f986fd662053215d8b.zip
Merge pull request #880 from psyill/master
Added keymap "videck", an ErgoDox keymap for Vi(m) users.
-rw-r--r--keyboards/ergodox/keymaps/videck/Makefile19
-rw-r--r--keyboards/ergodox/keymaps/videck/config.h13
-rw-r--r--keyboards/ergodox/keymaps/videck/keymap.c179
-rw-r--r--keyboards/ergodox/keymaps/videck/readme.md24
-rw-r--r--keyboards/ergodox/keymaps/videck/videck.json443
-rw-r--r--keyboards/ergodox/keymaps/videck/videck.pngbin0 -> 106851 bytes
6 files changed, 678 insertions, 0 deletions
diff --git a/keyboards/ergodox/keymaps/videck/Makefile b/keyboards/ergodox/keymaps/videck/Makefile
new file mode 100644
index 000000000..5c7d21f2c
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/Makefile
@@ -0,0 +1,19 @@
1AUDIO_ENABLE:=no
2BACKLIGHT_ENABLE:=no
3BLUETOOTH_ENABLE:=no
4BOOTMAGIC_ENABLE:=no
5COMMAND_ENABLE:=no
6CONSOLE_ENABLE:=no
7EXTRAKEY_ENABLE:=yes
8MIDI_ENABLE:=no
9MOUSEKEY_ENABLE:=yes
10NKRO_ENABLE:=no
11RGBLIGHT_ENABLE:=no
12SLEEP_LED_ENABLE:=no
13TAP_DANCE_ENABLE:=yes
14UNICODEMAP_ENABLE:=no
15UNICODE_ENABLE:=no
16
17ifndef QUANTUM_DIR
18 include ../../../../Makefile
19endif
diff --git a/keyboards/ergodox/keymaps/videck/config.h b/keyboards/ergodox/keymaps/videck/config.h
new file mode 100644
index 000000000..d89aabe77
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/config.h
@@ -0,0 +1,13 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6#ifndef NO_DEBUG
7 #define NO_DEBUG
8#endif
9#ifndef NO_PRINT
10 #define NO_PRINT
11#endif
12
13#endif
diff --git a/keyboards/ergodox/keymaps/videck/keymap.c b/keyboards/ergodox/keymaps/videck/keymap.c
new file mode 100644
index 000000000..7bd6274e9
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/keymap.c
@@ -0,0 +1,179 @@
1#include <stdbool.h>
2
3#include "ergodox.h"
4#include "action_layer.h"
5
6enum {
7 BASE = 0, // Default layer
8 ARROWS = 1, // Arrows and Fx keys layer
9 MOUSE = 2, // Mouse movement and buttons layer
10 PARENS = 3, // Parenthesis easy access layer
11
12 TD_L = 0, // Tap dance index for left shift
13 TD_R = 1 // Tap dance index for right shift
14};
15
16// See the videck.png image for a visualization of the layout.
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18 [BASE] = KEYMAP(
19 // left hand
20 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME,
21 KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_END,
22 MO(PARENS), KC_A, KC_S, KC_D, KC_F, KC_G,
23 TD(TD_L), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
24 KC_LCTL, KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE,
25 KC_ESC, KC_LGUI,
26 TG(MOUSE),
27 KC_SPC, KC_TAB, TG(ARROWS),
28 // right hand
29 KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
30 KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
31 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
32 KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_R),
33 KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL,
34 KC_APP, KC_ESC,
35 KC_INS,
36 KC_SLCK, KC_ENT, KC_SPC
37 ),
38 [ARROWS] = KEYMAP(
39 // left hand
40 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS,
46 KC_NO,
47 KC_TRNS, KC_TRNS, KC_TRNS,
48 // right hand
49 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
51 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
54 KC_TRNS, KC_TRNS,
55 KC_TRNS,
56 KC_TRNS, KC_TRNS, KC_TRNS
57 ),
58 [MOUSE] = KEYMAP(
59 // left hand
60 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
65 KC_BTN3, KC_TRNS,
66 KC_TRNS,
67 KC_BTN1, KC_BTN2, KC_NO,
68 // right hand
69 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
70 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
71 KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
73 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
74 KC_TRNS, KC_TRNS,
75 KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS
77 ),
78 [PARENS] = KEYMAP(
79 // left hand
80 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
81 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
82 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
83 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
84 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
85 KC_TRNS, KC_TRNS,
86 KC_NO,
87 KC_TRNS, KC_TRNS, KC_NO,
88 // right hand
89 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
90 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,
91 KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS,
92 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
93 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
94 KC_TRNS, KC_TRNS,
95 KC_TRNS,
96 KC_TRNS, KC_TRNS, KC_TRNS
97 )
98};
99
100typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc);
101
102typedef struct
103{
104 uint16_t kc1;
105 uint16_t kc2;
106 videck_tap_dance_trigger_t trigger;
107} videck_tap_dance_tuple_t;
108
109static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) {
110 videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
111
112 if (state->count == 1) {
113 register_code16 (tuple->kc1);
114 } else if (state->count == 2) {
115 register_code16 (tuple->kc2);
116 }
117}
118
119static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) {
120 videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
121
122 if (state->count == 1) {
123 unregister_code16 (tuple->kc1);
124 } else if (state->count == 2) {
125 unregister_code16 (tuple->kc2);
126 tuple->trigger(tuple->kc2);
127 }
128}
129
130static bool caps_lock_is_on;
131
132// Toggles caps lock status.
133static void videck_caps_trigger (const uint16_t kc) {
134 caps_lock_is_on ^= true;
135}
136
137#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \
138 .fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \
139 .user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }), \
140 }
141
142qk_tap_dance_action_t tap_dance_actions[] = {
143 [TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger),
144 [TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger)
145};
146
147// Runs just one time when the keyboard initializes.
148void matrix_init_user(void) {
149 ergodox_led_all_set(LED_BRIGHTNESS_LO);
150 caps_lock_is_on = false;
151};
152
153static void indicate_using_led(const uint8_t led, const bool enabled) {
154 if (enabled) {
155 ergodox_right_led_on(led);
156 } else {
157 ergodox_right_led_off(led);
158 }
159}
160
161static inline void indicate_caps_lock_state(const bool enabled) {
162 indicate_using_led(1, enabled);
163}
164
165static inline void indicate_arrows_layer_state(const bool enabled) {
166 indicate_using_led(2, enabled);
167}
168
169static inline void indicate_mouse_layer_state(const bool enabled) {
170 indicate_using_led(3, enabled);
171}
172
173// Runs constantly in the background, in a loop.
174void matrix_scan_user(void) {
175 // Check if we have shift locked.
176 indicate_caps_lock_state(caps_lock_is_on);
177 indicate_arrows_layer_state(IS_LAYER_ON(ARROWS));
178 indicate_mouse_layer_state(IS_LAYER_ON(MOUSE));
179};
diff --git a/keyboards/ergodox/keymaps/videck/readme.md b/keyboards/ergodox/keymaps/videck/readme.md
new file mode 100644
index 000000000..759e81bac
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/readme.md
@@ -0,0 +1,24 @@
1ViDeck keymap for ErgoDox
2=========================
3
4This is a QWERTY layout based on the US layout, where Vi functionality has been
5especially considered.
6
7# Features
8* Mouse movements using the Vi movement keys.
9* Vi movement keys doubling as arrow keys.
10* Shift lock using double tap.
11* A coder's modifier key for easy input of parenthesis.
12* Acess to the escape key using either thumb.
13* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch
14 to a non-US layout once in a while in X).
15
16# Missing keys
17* Caps Lock (shift lock is used instead).
18* Pause/Break.
19* Print Screen.
20
21# LEDs
22* Shift lock is indicated using first LED.
23* Arrow keys layer is indicated using second LED.
24* Mouse keys layer is indicated using third LED.
diff --git a/keyboards/ergodox/keymaps/videck/videck.json b/keyboards/ergodox/keymaps/videck/videck.json
new file mode 100644
index 000000000..7068cf548
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/videck.json
@@ -0,0 +1,443 @@
1[
2 {
3 "backcolor": "#333333",
4 "background": {
5 "name": "PBT Black",
6 "style": "background-image: url('/bg/plastic/pbt-black.png');"
7 },
8 "switchMount": "cherry",
9 "switchBrand": "gateron",
10 "switchType": "KS-3-Red"
11 },
12 [
13 {
14 "x": 3.5,
15 "c": "#323232",
16 "t": "#ffffff\n\n\n#ac97d8"
17 },
18 "#\n3\n\nF3",
19 {
20 "x": 10.5
21 },
22 "*\n8\n\nF8"
23 ],
24 [
25 {
26 "y": -0.875,
27 "x": 2.5
28 },
29 "@\n2\n\nF2",
30 {
31 "x": 1
32 },
33 "$\n4\n\nF4",
34 {
35 "x": 8.5
36 },
37 "&\n7\n\nF7",
38 {
39 "x": 1,
40 "t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454"
41 },
42 "(\n9\n\nF9"
43 ],
44 [
45 {
46 "y": -0.875,
47 "x": 5.5,
48 "t": "#ffffff\n\n\n#ac97d8"
49 },
50 "%\n5\n\nF5",
51 {
52 "t": "#ffffff"
53 },
54 "home",
55 {
56 "x": 4.5
57 },
58 "pgup",
59 {
60 "t": "#ffffff\n\n\n#ac97d8"
61 },
62 "^\n6\n\nF6"
63 ],
64 [
65 {
66 "y": -0.875,
67 "t": "#ffffff",
68 "w": 1.5
69 },
70 "~\n`",
71 {
72 "t": "#ffffff\n\n\n#ac97d8"
73 },
74 "!\n1\n\nF1",
75 {
76 "x": 14.5
77 },
78 ")\n0\n\nF10",
79 {
80 "w": 1.5
81 },
82 "_\n-\n\nF11"
83 ],
84 [
85 {
86 "y": -0.375,
87 "x": 3.5,
88 "t": "#ffffff"
89 },
90 "E",
91 {
92 "x": 10.5
93 },
94 "I"
95 ],
96 [
97 {
98 "y": -0.875,
99 "x": 2.5
100 },
101 "W",
102 {
103 "x": 1
104 },
105 "R",
106 {
107 "x": 8.5
108 },
109 "U",
110 {
111 "x": 1,
112 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
113 },
114 "O\n\n\n\n\n\n\n\n\n{"
115 ],
116 [
117 {
118 "y": -0.875,
119 "x": 5.5,
120 "t": "#ffffff"
121 },
122 "T",
123 {
124 "h": 1.5
125 },
126 "end",
127 {
128 "x": 4.5,
129 "h": 1.5
130 },
131 "pgdn",
132 "Y"
133 ],
134 [
135 {
136 "y": -0.875,
137 "w": 1.5
138 },
139 "+\n=",
140 "Q",
141 {
142 "x": 14.5,
143 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
144 },
145 "P\n\n\n\n\n\n\n\n\n}",
146 {
147 "t": "#ffffff\n\n\n#ac97d8",
148 "w": 1.5
149 },
150 "|\n\\\n\nF12"
151 ],
152 [
153 {
154 "y": -0.375,
155 "x": 3.5,
156 "t": "#ffffff"
157 },
158 "D",
159 {
160 "x": 10.5,
161 "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
162 },
163 "K\n\n<i class='fa fa-caret-up'></i>\n<i class='kb kb-Arrows-Up'></i>"
164 ],
165 [
166 {
167 "y": -0.875,
168 "x": 2.5,
169 "t": "#ffffff"
170 },
171 "S",
172 {
173 "x": 1,
174 "n": true
175 },
176 "F",
177 {
178 "x": 8.5,
179 "t": "#ffffff\n\n#5eb1e7\n#ac97d8",
180 "n": true
181 },
182 "J\n\n<i class='fa fa-caret-down'></i>\n<i class='kb kb-Arrows-Down'></i>",
183 {
184 "x": 1,
185 "t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615"
186 },
187 "L\n\n<i class='fa fa-caret-right'></i>\n<i class='kb kb-Arrows-Right'></i>\n\n\n\n\n\n("
188 ],
189 [
190 {
191 "y": -0.875,
192 "x": 5.5,
193 "t": "#ffffff"
194 },
195 "G",
196 {
197 "x": 6.5,
198 "t": "#ffffff\n\n#5eb1e7\n#ac97d8"
199 },
200 "H\n\n<i class='fa fa-caret-left'></i>\n<i class='kb kb-Arrows-Left'></i>"
201 ],
202 [
203 {
204 "y": -0.875,
205 "t": "#f8d615",
206 "a": 6,
207 "w": 1.5
208 },
209 "( ) [ ] { }",
210 {
211 "t": "#ffffff",
212 "a": 4
213 },
214 "A",
215 {
216 "x": 14.5,
217 "t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615"
218 },
219 ":\n;\n\n\n\n\n\n&Ouml;\n\n)",
220 {
221 "t": "#ffffff\n\n\n\n\n\n\n#60605b",
222 "w": 1.5
223 },
224 "\"\n'\n\n\n\n\n\n&Auml;"
225 ],
226 [
227 {
228 "y": -0.625,
229 "x": 6.5,
230 "t": "#ffffff",
231 "h": 1.5
232 },
233 "<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
234 {
235 "x": 4.5,
236 "h": 1.5
237 },
238 "<i class='kb kb-Unicode-DeleteRight-Big'></i>"
239 ],
240 [
241 {
242 "y": -0.75,
243 "x": 3.5
244 },
245 "C",
246 {
247 "x": 10.5
248 },
249 "<\n,"
250 ],
251 [
252 {
253 "y": -0.875,
254 "x": 2.5
255 },
256 "X",
257 {
258 "x": 1
259 },
260 "V",
261 {
262 "x": 8.5
263 },
264 "M",
265 {
266 "x": 1,
267 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
268 },
269 ">\n.\n\n\n\n\n\n\n\n["
270 ],
271 [
272 {
273 "y": -0.875,
274 "x": 5.5,
275 "t": "#ffffff"
276 },
277 "B",
278 {
279 "x": 6.5
280 },
281 "N"
282 ],
283 [
284 {
285 "y": -0.875,
286 "t": "#ffffff\n\n#f67f00",
287 "a": 6,
288 "fa": [
289 5
290 ],
291 "w": 1.5
292 },
293 "&uArr;\n\n2-tap<br/>locks",
294 {
295 "t": "#ffffff",
296 "a": 4,
297 "f": 3
298 },
299 "Z",
300 {
301 "x": 14.5,
302 "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615",
303 "f": 3
304 },
305 "?\n/\n\n\n\n\n\n\n\n]",
306 {
307 "t": "#ffffff\n\n#f67f00",
308 "a": 6,
309 "f": 3,
310 "w": 1.5
311 },
312 "&uArr;\n\n2-tap<br/>locks"
313 ],
314 [
315 {
316 "y": -0.375,
317 "x": 3.5,
318 "t": "#ffffff",
319 "a": 4
320 },
321 "\n<i class='kb kb-Multimedia-Volume-Up-2'></i>",
322 {
323 "x": 10.5,
324 "f": 3
325 },
326 "}\n]"
327 ],
328 [
329 {
330 "y": -0.875,
331 "x": 2.5
332 },
333 "\n<i class='kb kb-Multimedia-Volume-Down-1'></i>",
334 {
335 "x": 1
336 },
337 "\n<i class='kb kb-Multimedia-Mute-1'></i>",
338 {
339 "x": 8.5,
340 "t": "#ffffff\n\n\n\n\n\n\n#60605b",
341 "f": 3
342 },
343 "{\n[\n\n\n\n\n\n&Aring;",
344 {
345 "x": 1,
346 "t": "#ffffff",
347 "f": 3
348 },
349 "+\n="
350 ],
351 [
352 {
353 "y": -0.75,
354 "x": 0.5,
355 "f": 3
356 },
357 "ctrl",
358 {
359 "f": 3
360 },
361 "alt",
362 {
363 "x": 14.5,
364 "f": 3
365 },
366 "altgr",
367 {
368 "f": 3
369 },
370 "ctrl"
371 ],
372 [
373 {
374 "r": 30,
375 "rx": 6.5,
376 "ry": 4.25,
377 "y": -1,
378 "x": 1,
379 "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
380 "f": 3
381 },
382 "esc\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>M",
383 {
384 "t": "#ffffff",
385 "f": 7
386 },
387 "<i class='kb kb-logo-linux-tux'></i>"
388 ],
389 [
390 {
391 "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
392 "f": 3,
393 "h": 2
394 },
395 "space\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>L",
396 {
397 "h": 2
398 },
399 "<i class='kb kb-Tab-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>R",
400 {
401 "t": "#5eb1e7"
402 },
403 "<i class='fa fa-mouse-pointer'></i>"
404 ],
405 [
406 {
407 "x": 2,
408 "t": "#ac97d8"
409 },
410 "<i class='fa fa-arrows'></i>"
411 ],
412 [
413 {
414 "r": -30,
415 "rx": 13,
416 "y": -1,
417 "x": -3,
418 "t": "#ffffff"
419 },
420 "<i class='kb kb-Hamburger-Menu'></i>",
421 "esc"
422 ],
423 [
424 {
425 "x": -3
426 },
427 "ins",
428 {
429 "h": 2
430 },
431 "<i class='kb kb-Return-2'></i>",
432 {
433 "h": 2
434 },
435 "space"
436 ],
437 [
438 {
439 "x": -3
440 },
441 "scroll<br/>lock"
442 ]
443] \ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/videck/videck.png b/keyboards/ergodox/keymaps/videck/videck.png
new file mode 100644
index 000000000..c99323f53
--- /dev/null
+++ b/keyboards/ergodox/keymaps/videck/videck.png
Binary files differ