mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-22 11:29:26 +00:00
Add Roman's Layout
Four layers BASE (Norman), SYMB, PLVR (optimized for Plover), ARRW.
This commit is contained in:
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)
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user