Add Roman's Layout

Four layers BASE (Norman), SYMB, PLVR (optimized for Plover), ARRW.
example_keyboards
Roman Zolotarev 9 years ago
parent 35393fa9dc
commit bbe553dba3

@ -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},""]

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

@ -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"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

@ -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},""]

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

@ -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},""]

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

@ -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;
}
};

@ -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)
Loading…
Cancel
Save