1
0
Fork 0

mitosis:datagrok: minor layout improvements (#2366)

* mitosis/datagrok: make qwerty the default layout

* mitosis/datagrok: update readme to match qwerty default

* mitosis:datagrok: remove redundant name for transparent

meh, decided i don't need an extra key to represent "key that is
transparent because it's a modifier on a layer below." it's a maintenance
burden when moving other keys around

* mitosis:datagrok: add num lock on Blue + QWERTY T

* mitosis:datagrok: tap lshift = tab

we use tab completion a lot so let's get it onto an unmodified key somehow

* mitosis:datagrok: update readme

* mitosis:datagrok: improve notes in README

* mitosis:datagrok: note numlock in README
This commit is contained in:
Michael F. Lamb 2018-03-27 09:18:28 -07:00 committed by Drashna Jaelre
parent 9f5a4af09c
commit b61974b301
2 changed files with 57 additions and 39 deletions

View file

@ -2,8 +2,8 @@
enum mitosis_layers enum mitosis_layers
{ {
_xW, // workman
_xQ, // qwerty _xQ, // qwerty
_xW, // workman
_xS, // symbols _xS, // symbols
_xN, // numbers _xN, // numbers
_xF // functions _xF // functions
@ -12,7 +12,6 @@ enum mitosis_layers
// Fillers to make layering more clear // Fillers to make layering more clear
#define XXXXXXX KC_NO // No-op (no key in this location on Mitosis' fake matrix) #define XXXXXXX KC_NO // No-op (no key in this location on Mitosis' fake matrix)
#define _______ KC_TRNS // Transparent, because I haven't decided a mapping yet #define _______ KC_TRNS // Transparent, because I haven't decided a mapping yet
#define ___M___ KC_TRNS // Transparent, as required by modifier key on another layer
#define KC_LMTA KC_LALT // For fun, name the mods like the space cadet keyboard does #define KC_LMTA KC_LALT // For fun, name the mods like the space cadet keyboard does
#define KC_RMTA KC_RALT // META #define KC_RMTA KC_RALT // META
#define KC_LSUP KC_LGUI // SUPER #define KC_LSUP KC_LGUI // SUPER
@ -27,17 +26,17 @@ enum mitosis_layers
// other is released. Which doesn't bother me. // other is released. Which doesn't bother me.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_xW] = {
{KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN},
{KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I},
{KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_QUOT},
{XXXXXXX, KC_LSUP, KC_LCTL, MO(_xN), KC_LSFT, KC_RSFT, MO(_xN), KC_RCTL, KC_RSUP, XXXXXXX},
{XXXXXXX, KC_LHYP, KC_LMTA, MO(_xS), KC_BSPC, KC_SPC, MO(_xS), KC_RMTA, KC_RHYP, XXXXXXX}
},
[_xQ] = { [_xQ] = {
{KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P}, {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P},
{KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, {KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
{KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT}, {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT},
{XXXXXXX, KC_LSUP, KC_LCTL, MO(_xN), SFT_T(KC_TAB), KC_RSFT, MO(_xN), KC_RCTL, KC_RSUP, XXXXXXX},
{XXXXXXX, KC_LHYP, KC_LMTA, MO(_xS), KC_BSPC, KC_SPC, MO(_xS), KC_RMTA, KC_RHYP, XXXXXXX}
},
[_xW] = {
{KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN},
{KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I},
{KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_QUOT},
{XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX}, {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX},
{XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX} {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX}
}, },
@ -46,21 +45,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_CIRC, KC_AMPR, KC_PIPE, KC_GRV, KC_UNDS}, {KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_CIRC, KC_AMPR, KC_PIPE, KC_GRV, KC_UNDS},
{KC_BSLS, KC_RPRN, KC_RCBR, KC_RBRC, KC_RABK, KC_LABK, KC_LBRC, KC_LCBR, KC_LPRN, KC_SLSH}, {KC_BSLS, KC_RPRN, KC_RCBR, KC_RBRC, KC_RABK, KC_LABK, KC_LBRC, KC_LCBR, KC_LPRN, KC_SLSH},
{XXXXXXX, _______, _______, MO(_xF), _______, _______, MO(_xF), _______, _______, XXXXXXX}, {XXXXXXX, _______, _______, MO(_xF), _______, _______, MO(_xF), _______, _______, XXXXXXX},
{XXXXXXX, _______, _______, ___M___, KC_DEL, KC_ENT, ___M___, _______, _______, XXXXXXX}, {XXXXXXX, _______, _______, _______, KC_DEL, KC_ENT, _______, _______, _______, XXXXXXX},
}, },
[_xN] = { [_xN] = {
{_______, _______, _______, _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_P0}, {_______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_P0},
{_______, _______, _______, _______, _______, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS}, {_______, _______, _______, _______, _______, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS},
{_______, _______, _______, _______, _______, KC_PMNS, KC_P1, KC_P2, KC_P3, KC_PEQL}, {_______, _______, _______, _______, _______, KC_PMNS, KC_P1, KC_P2, KC_P3, KC_PEQL},
{XXXXXXX, _______, _______, ___M___, _______, _______, ___M___, _______, _______, XXXXXXX}, {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX},
{XXXXXXX, _______, _______, MO(_xF), _______, KC_PENT, MO(_xF), _______, _______, XXXXXXX}, {XXXXXXX, _______, _______, MO(_xF), _______, KC_PENT, MO(_xF), _______, _______, XXXXXXX},
}, },
[_xF] = { [_xF] = {
{_______, _______, KC_PGUP, _______, KC_VOLU, KC_F13, KC_F7, KC_F8, KC_F9, KC_F10}, {_______, _______, KC_PGUP, _______, KC_VOLU, KC_F13, KC_F7, KC_F8, KC_F9, KC_F10},
{_______, KC_HOME, KC_PGDN, KC_END, KC_VOLD, KC_F14, KC_F4, KC_F5, KC_F6, KC_F11}, {_______, KC_HOME, KC_PGDN, KC_END, KC_VOLD, KC_F14, KC_F4, KC_F5, KC_F6, KC_F11},
{TG(_xQ), KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_F15, KC_F1, KC_F2, KC_F3, KC_F12}, {TG(_xW), KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_F15, KC_F1, KC_F2, KC_F3, KC_F12},
{XXXXXXX, _______, _______, ___M___, _______, _______, ___M___, _______, _______, XXXXXXX}, {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX},
{XXXXXXX, _______, _______, _______, ___M___, ___M___, _______, _______, _______, XXXXXXX}, {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX},
}, },
}; };

View file

@ -1,24 +1,30 @@
![mitosis:datagrok layout image](https://i.imgur.com/Lt0t0nq.png) ![mitosis:datagrok layout image](https://i.imgur.com/eum3fsc.png)
[Keyboard layout editor source](http://www.keyboard-layout-editor.com/#/gists/e1a6a7a480fd4984c0bed38ee35f6c4f) [Keyboard layout editor source](http://www.keyboard-layout-editor.com/#/gists/9cf33be8a8e773647cfa44a0dbc44b31)
# a layout for the Mitosis # a layout for the Mitosis
- Emphasis on momentary modifiers, all usable from either hand, arranged - Emphasis on momentary modifiers, all usable from either hand, arranged
symmetrically, but distinguishable left/right by the OS. Shift, Fn1 symmetrically, but distinguishable left/right by the OS. Shift, Red
("Lower"), Fn2 ("Raise"), Super ("Windows"), Meta ("Alt"), Hyper. ("Lower"), Blue ("Raise"), Super ("Windows"), Meta ("Alt"), Hyper.
- Fn1 and Fn2 are used to momentary-enable (like a shift key) one of three layers: - Red and Blue are used to momentary-enable (like a shift key) one of three layers:
- Fn1 (Red): Symbols layer - Red: Symbols layer
- Fn2 (Blue): Numbers layer - Blue: Numbers layer
- Both: Functions layer - "Purple" (both Red and Blue): Functions layer
- The base layer is a slight variant of [Workman][]. QWERTY may be toggled-on. - The base layer is QWERTY. A slight variant of [Workman][] may be toggled-on.
- Emphasis on minimizing hand travel, so as not to lose orientation with
homerow.
- Paired programming symbols (braces, brackets, parentheses) are arranged - Paired programming symbols (braces, brackets, parentheses) are arranged
symmetrically in the symbols layer. `?` and `!` are moved to take the place symmetrically in the symbols layer.
of `<` and `>`.
- `?` and `!` are moved to take the place of `<` and `>`. Rationale: unmodded
and shifted keys should be for prose, while symbols useful for programming
should be colocated on their own layer.
- No OS keymap modification required. - No OS keymap modification required.
@ -30,17 +36,24 @@
- Remove the lines in `rules.mk` mentioning `F_CPU` and `F_USB`. - Remove the lines in `rules.mk` mentioning `F_CPU` and `F_USB`.
- Remove the lines in `config.h` mentioning `SERIAL_UART_BAUD`. - Remove the lines in `config.h` mentioning `SERIAL_UART_BAUD`.
- I'm learning a new key placement, so might as well go all out and use an - Workman layout
optimal non-QWERTY layout.
- I'm learning a new physical key placement, so I might as well go all out
and use an optimal non-QWERTY layout.
- I like the way Workman feels and some of its advantages over Colemak. - I like the way Workman feels and some of its advantages over Colemak.
Unfortunately, it was designed using a weighting system based on a standard Unfortunately, it was designed using a weighting system based on a
column-staggered keyboard so is probably not as optimal as one could achieve standard column-staggered keyboard so is probably not as optimal as one
on an ergonomic board like the Mitosis. could achieve on an ergonomic board like the Mitosis. Maybe run an
optimizer routine after I determine good values for key difficulty on the
Mitosis.
- Arrows in the home position (on a layer). Mod+Arrows = PgUp/PgDn/Home/End, - Arrows in the home position (on a layer). Mod+Arrows = PgUp/PgDn/Home/End,
which is intuitive for me which is intuitive for me
- I use tab all the time for autocompletion. To allow it to live on the base
layer it is now Mod-Tapped with left shift.
### Abandoned ideas ### Abandoned ideas
- ~~"Since QWERTY and Workman keep angle brackets together, place other - ~~"Since QWERTY and Workman keep angle brackets together, place other
@ -52,22 +65,28 @@
activates a symbols layer where all brackets are easily accessible. activates a symbols layer where all brackets are easily accessible.
- Space/Enter to the left of layer select for Enter doesn't work well; I always - Space/Enter to the left of layer select for Enter doesn't work well; I always
trigger space first. trigger space first when mashing the keys simultaneously. This might not
continue to be true if I change the angle at which I strike the keys e.g.
with a neoprene base or a wrist support.
- I used to have Blue layer on ring finger, but that was too hard to use in - I used to have Blue on ring finger, but that was too hard to use in
conjunction with shift. conjunction with shift.
## To do ## To do
- Figure out where to place non-numpad numbers so we don't need num lock turned
on to type them?
- Improve LED indications (may require modding bluetooth firmware): - Improve LED indications (may require modding bluetooth firmware):
- Is any board nonresponsive (which one?) - Is any board nonresponsive (which one?)
- Does either board have a low battery? - Does either board have a low battery?
- Add Insert, PrintScr, Pause/Break - Add Insert, PrintScr, Pause/Break
- Make QWERTY base layer for people who customize layout in software? Store - ~~Make QWERTY base layer for people who customize layout in software?~~ I
default base layer in eeprom? default to QWERTY now.
- See if the henkans placement is at all useful for Japanese speakers, or abuse - Store default base layer in eeprom?
different keysyms - See if the henkan/muhenkan placement is at all useful for Japanese speakers,
- Mod a speaker onto my receiver and enable tones or abuse different keysyms for Left/Right Hyper. (Original space cadet used
scancodes 145/175. 145 is LANG2, 175 is "reserved" in USB HID spec.)
- Mod a buzzer onto my receiver and enable tones
- Implement "layer lock" key - Implement "layer lock" key
- Improve tri-layer behavior - Improve tri-layer behavior