diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.json new file mode 100644 index 0000000000..814e1cc2aa --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.json @@ -0,0 +1,27 @@ +[{x:3.5,c:"#eeeeee",a:7},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"","",{x:4.5},"",""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.375,x:3.5,a:5,fa:[0,2,0,0,0,0,2]},"\nmouse\n\n\n\n\nUP",{x:10.5,a:7,fa:[2]},"UP"], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.375,x:3.5,a:5,fa:[2,2,0,0,0,0,2]},"\nmouse\n\n\n\n\nDOWN",{x:10.5,a:7},"DOWN"], +[{y:-0.875,x:2.5,a:5,fa:[2,1,0,0,0,0,2]},"\nmouse\n\n\n\n\nLEFT",{x:1,fa:[2,2,0,0,0,0,2]},"\nmouse\n\n\n\n\nRIGHT",{x:8.5,a:7},"LEFT",{x:1},"RIGHT"], +[{y:-0.875,x:5.5},"",{x:6.5},""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""], +[{y:-0.75,x:3.5},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"",{x:6.5},""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.375,x:3.5,a:5,fa:[2,1,0,0,0,0,2]},"\nclick\n\n\n\n\nLEFT",{x:10.5,a:7},""], +[{y:-0.875,x:2.5},"",{x:1,a:5},"\nclick\n\n\n\n\nRIGHT",{x:8.5,a:7},"",{x:1},""], +[{y:-0.75,x:0.5},"","",{x:14.5},"",""], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""], +[{h:2},"",{h:2},"",""], +[{x:2},""], +[{r:-30,rx:13,y:-1,x:-3},"",""], +[{x:-3},"",{h:2},"",{h:2},""], +[{x:-3},""] + diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.png new file mode 100644 index 0000000000..e2e5779b5a Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.png differ diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.json new file mode 100644 index 0000000000..9e6fc37338 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.json @@ -0,0 +1,26 @@ +[{x:3.5,c:"#eeeeee",a:5,fa:[5,7,0,0,0,0,0]},"#\n3",{x:10.5},"*\n8"], +[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"], +[{y:-0.875,x:5.5},"%\n5",{a:7},"",{x:4.5},"",{a:5},"^\n6"], +[{y:-0.875,w:1.5},"~\n`","!\n1",{x:14.5},")\n0",{w:1.5},"+\n="], +[{y:-0.375,x:3.5,c:"#cccccc",a:7,fa:[7]},"D",{x:10.5},"R"], +[{y:-0.875,x:2.5,c:"#eeeeee"},"W",{x:1,c:"#cccccc"},"F",{x:8.5,c:"#eeeeee"},"U",{x:1,c:"#cccccc"},"L"], +[{y:-0.875,x:5.5},"K",{c:"#eeeeee",a:5,fa:[5,0,0,0,0,0,7],h:1.5},"|\n\n\n\n\n\n\\",{x:4.5,h:1.5},"?\n\n\n\n\n\n/",{c:"#cccccc",a:7,fa:[7]},"J"], +[{y:-0.875,c:"#eeeeee",fa:[2],w:1.5},"TAB",{fa:[7]},"Q",{x:14.5,c:"#cccccc",a:5,fa:[5,7,0,0,0,0,0]},":\n;",{c:"#eeeeee",w:1.5},"_\n-"], +[{y:-0.375,x:3.5,c:"#cccccc",a:7,fa:[7]},"E",{x:10.5},"I"], +[{y:-0.875,x:2.5,c:"#eeeeee"},"S",{x:1,c:"#cccccc"},"T",{x:8.5},"N",{x:1},"O"], +[{y:-0.875,x:5.5,c:"#eeeeee"},"G",{x:6.5,c:"#cccccc"},"Y"], +[{y:-0.875,c:"#eeeeee",a:5,fa:[7,2,0,0,0,0,2],w:1.5},"\nESC\n\n\n\n\nCTRL",{a:7},"A",{x:14.5,c:"#cccccc"},"H",{c:"#eeeeee",fa:[2],w:1.5},"ENTER"], +[{y:-0.625,x:6.5,a:5,fa:[5,0,0,0,0,0,7],h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]"], +[{y:-0.75,x:3.5,a:7,fa:[7]},"C",{x:10.5,a:5,fa:[5,7,0,0,0,0,0]},"<\n,"], +[{y:-0.875,x:2.5,a:7,fa:[7]},"X",{x:1},"V",{x:8.5},"M",{x:1,a:5,fa:[5,7,0,0,0,0,0]},">\n."], +[{y:-0.875,x:5.5,a:7,fa:[7]},"B",{x:6.5,c:"#cccccc"},"P"], +[{y:-0.875,c:"#eeeeee",fa:[2],w:1.5},"SHIFT",{fa:[7]},"Z",{x:14.5,a:5,fa:[5,7,0,0,0,0,0]},"?\n/",{a:7,fa:[2],w:1.5},"SHIFT"], +[{y:-0.375,x:3.5},"ALT",{x:10.5},"ALT"], +[{y:-0.875,x:2.5},"",{x:1},"CMD",{x:8.5},"CTRL",{x:1},""], +[{y:-0.75,x:0.5,f:3},"L2","",{x:14.5},"",""], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"VOL-","MUTE"], +[{h:2},"BS",{h:2},"ESC","VOL+"], +[{x:2},"~L1"], +[{r:-30,rx:13,y:-1,x:-3},"PLAY","NEXT"], +[{x:-3},"PREV",{a:5,fa:[5,0,0,0,0,0,7],h:2},"\"\n\n\n\n\n\n'",{a:7,fa:[2],h:2},"SPACE"], +[{x:-3},"~L3"] diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.png new file mode 100644 index 0000000000..0b8539cfac Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.png differ diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.json new file mode 100644 index 0000000000..5c3f0b8a20 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.json @@ -0,0 +1,26 @@ +[{x:3.5,c:"#eeeeee",a:7},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.875,x:5.5},"","",{x:4.5},"",""], +[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], +[{y:-0.375,x:3.5,fa:[7]},"3",{x:10.5},"8"], +[{y:-0.875,x:2.5},"2",{x:1},"4",{x:8.5},"7",{x:1},"9"], +[{y:-0.875,x:5.5},"5",{h:1.5},"",{x:4.5,h:1.5},"","6"], +[{y:-0.875,w:1.5},"","1",{x:14.5},"0",{w:1.5},""], +[{y:-0.375,x:3.5},"E",{x:10.5},"I"], +[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"], +[{y:-0.875,x:5.5},"T",{x:6.5},"Y"], +[{y:-0.875,w:1.5},"","Q",{x:14.5},"P",{w:1.5},"["], +[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""], +[{y:-0.75,x:3.5},"D",{x:10.5},"K"], +[{y:-0.875,x:2.5},"S",{x:1},"F",{x:8.5},"J",{x:1},"L"], +[{y:-0.875,x:5.5},"G",{x:6.5},"H"], +[{y:-0.875,w:1.5},"","A",{x:14.5},";",{w:1.5},"'"], +[{y:-0.375,x:3.5},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], +[{y:-0.75,x:0.5},"","",{x:14.5},"",""], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""], +[{h:2},"C",{h:2},"V",""], +[{x:2},""], +[{r:-30,rx:13,y:-1,x:-3},"",""], +[{x:-3},"",{h:2},"N",{h:2},"M"], +[{x:-3},""] diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.png new file mode 100644 index 0000000000..f8d38204fc Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.png differ diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.json new file mode 100644 index 0000000000..ccd1d74e4b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.json @@ -0,0 +1,27 @@ +[{x:3.5,c:"#eeeeee",a:7,fa:[7]},"F3",{x:10.5},"F8"], +[{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"], +[{y:-0.875,x:5.5},"F5","",{x:4.5},"","F6"], +[{y:-0.875,w:1.5},"","F1",{x:14.5},"F10",{w:1.5},"F11"], +[{y:-0.375,x:3.5},"{",{x:10.5},"8"], +[{y:-0.875,x:2.5},"@",{x:1},"}",{x:8.5},"7",{x:1},"9"], +[{y:-0.875,x:5.5},"|",{h:1.5},"",{x:4.5,h:1.5},"",{fa:[2]},"UP"], +[{y:-0.875,w:1.5},"",{fa:[7]},"!",{x:14.5},"*",{w:1.5},"F12"], +[{y:-0.375,x:3.5},"(",{x:10.5},"5"], +[{y:-0.875,x:2.5},"$",{x:1},")",{x:8.5},"4",{x:1},"6"], +[{y:-0.875,x:5.5},"`",{x:6.5,fa:[2]},"DOWN"], +[{y:-0.875,w:1.5},"",{fa:[7]},"#",{x:14.5},"+",{w:1.5},""], +[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""], +[{y:-0.75,x:3.5},"[",{x:10.5},"2"], +[{y:-0.875,x:2.5},"^",{x:1},"]",{x:8.5},"1",{x:1},"3"], +[{y:-0.875,x:5.5},"~",{x:6.5},"&"], +[{y:-0.875,w:1.5},"","%",{x:14.5},"\\",{w:1.5},""], +[{y:-0.375,x:3.5},"",{x:10.5},"."], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},"0"], +[{y:-0.75,x:0.5},"","",{x:14.5},"=",""], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""], +[{h:2},"",{h:2},"",""], +[{x:2},""], +[{r:-30,rx:13,y:-1,x:-3},"",""], +[{x:-3},"",{h:2},"",{h:2},""], +[{x:-3},""] + diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.png new file mode 100644 index 0000000000..83dc2242ba Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.png differ diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c new file mode 100644 index 0000000000..36526bf2a1 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c @@ -0,0 +1,145 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 +#define SYMB 1 +#define PLVR 2 +#define ARRW 3 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = KEYMAP( + // + KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS, + CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, + TG(PLVR), KC_TRNS, KC_TRNS, KC_LALT, KC_LGUI, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, KC_MUTE, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, KC_ESC, KC_FN1, + // + /*-*/ KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + /*-*/ KC_SLSH, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS, + /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT, + /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + /*-*/ /*-*/ /*-*/ KC_RCTL, KC_RALT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPLY, KC_MNXT, + KC_MPRV, + KC_FN3, KC_QUOT, KC_SPC + // + ), + // + [SYMB] = KEYMAP( + // + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, + KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, + KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + // + /*-*/ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + /*-*/ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + /*-*/ /*-*/ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + /*-*/ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + /*-*/ /*-*/ /*-*/ KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + // + ), + // + [PLVR] = KEYMAP( + // + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, + KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_C, KC_V, KC_NO, + // + /*-*/ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + /*-*/ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, + /*-*/ /*-*/ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + /*-*/ KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + /*-*/ /*-*/ /*-*/ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_NO, KC_N, KC_M + // + ), + // + [ARRW] = KEYMAP( + // + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + // + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + // + ), +}; + +const uint16_t PROGMEM fn_actions[] = { + [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer + [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer + [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case SYMB: + ergodox_right_led_1_on(); + break; + case PLVR: + ergodox_right_led_2_on(); + break; + case ARRW: + ergodox_right_led_3_on(); + break; + default: + break; + } +}; diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md new file mode 100644 index 0000000000..8b03e3323f --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md @@ -0,0 +1,51 @@ +# Roman's Layout + +There are four layers: + +- **BASE** is [Norman layout](https://normanlayout.info/). +- **PLVR** is optimized for [Plover](http://www.openstenoproject.org). +- **SYMB** for numbers and symbols. +- **ARRW** for navigation. + +## Switching + +- Tap `~L1` to toggle **SYMB**. +- Tap `~L3` to toggle **ARRW**. +- Hold `~L1` (or `~L3`) to activate **SYMB** (or **ARRW**) while holding. +- Tap `L2` to toggle **PLVR**. + +## LEDs + +- Red: SYMB is on. +- Green: PLVR is on. +- Blue: ARRW is on. + +## CTRL/ESC + +Both of those keys are frequently used in Vim. + +- Tap `CTRL/ESC` to send `ESC`. +- Hold `CTRL/ESC` to use as `CTRL`. + +## Activate N-rollover + +- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`. +- Then you can activate **PLVR** and use ErgoDox EZ for steno. + +## Layers + +BASE + +![base](keyboard-layout-editor/base.png) + +SYMB + +![symb](keyboard-layout-editor/symb.png) + +PLVR + +![plvr](keyboard-layout-editor/plvr.png) + +ARRW + +![arrw](keyboard-layout-editor/arrw.png) diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex new file mode 100644 index 0000000000..eeb0eb9351 Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex differ