Skip to content

Latest commit

 

History

History
300 lines (217 loc) · 13.7 KB

rolio.md

File metadata and controls

300 lines (217 loc) · 13.7 KB

Rolio46.2 Layout

My small split keyboard layout is a mashup of several excellent layouts I found online, with a heavy seasoning of my imagination. So yes, you probably already saw some (if not most) of the things I put in this layout somewhere else. Nevertheless, there are some modifications I made that are worth reading about.

The first recommendation I got, after jumping into the sub-50 keyboard world, was to try the Miryoku layout. I heard and read so much of this recommendation, that I started to think that this should be the standard layout to use with a Corne.

The problem I have with things “ready to use”, is that everything about it, must resonate with me if I want to use it.

Some things do… Most don't!

After deep diving into the Miryoku layout concepts, I found myself more interested in the Layout UX Design than in its implementation, so I decided to try to apply its concepts, to the ideas and other layouts that I already created in the past.

The result of this, is what you're reading in this document!

Some notable features are:

  • Single-sided layers: An extra layer should never have functional keys on both sides of the keyboard. If you bring a layer up using your left hand, all its functional keys should be located on the right side of the keyboard. This allows you to have accessible modifiers on the same hand that invoked the layer, making every layer key able to be combined with a modifier;
  • Separate layers for Symbols and Numbers: I tried to put each one of these layers on different sides of the keyboard, to help my brain to identify what hand to use in which situation;
  • Momentary layers: All layers require you to keep a key pressed to use them, but you can lock them in place (this requires PR #1984 to work, and it's not built with GitHub actions in this repository);
  • Dynamic keys: Keys morph into other keys depending on the situation and requirement;
  • Timeless homerow mods: Homerow mod configuration based on Robert U (@urob)'s ZMK configuration;

Base Layer

Default base layer layout

My base layer, currently, uses a QWERTY layout, and it is where I have cramped most features unique to this layout, like “morphed keys”, homerow mods, etc.

It is also the only layer one would modify to use a different layout with all the features I created in this configuration. In fact, I added an “alternative layout” layer that does just that, and replaces the QWERTY layout with COLEMAK.

Homerow mods

If you did not do it already, go read Robert U's ZMK configuration for details on how to configure a “timeless” homerow modifier.

The modifications I did to his configuration are basically 3:

  1. I reduced the tapping-term-ms timeout from 280 to 200 to allow me to use single-hand modifier combos faster;
  2. Defined a special homerow modifier for “Shift” that has everything the other homerow mods have, except for the require-prior-idle-ms;
  3. Defined a special homerow modifier to use with momentary layers (&lt). It uses the same configuration as the “Shift” modifier;

The result I get from it is “mostly” good. I'm still seeing some mistypes, but I feel this is more because I don't press the key all the way through with the switches I'm using, then problems with the setup itself.

CAPS_WORD

As I mentioned in the main README file in this repository, I hate CAPS_LOCK, but truly like the CAPS_WORD functionality in ZMK. In the Base layer, you toggle CAPS_WORD by double-tapping one of the “Globe” keys on either side of the keyboard.

Autoshift

I'm not a big fan of the Autoshift functionality, but there is one single key that I have it defined, and I love it:

V

Why V? You might ask. Well, I guess the honest answer here would be: because I use Vim. In Vim, you select a line by pressing “Shift” and V. Because my shift is part of my homerow modifiers, the position of my “Shift” key and the V key on QWERTY, do not allow me to press both keys with a single hand.

The Autoshift on V takes care of that issue in a very convenient way.

macOS Navigation

I'm not sure about Linux or Windows, but on macOS you have some pretty convenient shortcuts you can use to switch between open applications and application windows.

The first one is the equivalent of a ⌘ ⇧ ⇥ (Command+Shift+Tab). As you can see just by the shortcut itself, you have to use 3 fingers to cycle back on the application list when switching between apps with a ⌘ ⇥ (Command+Tab), which, in my world, is never a good thing.

To solve this issue, Apple made the key right above the (Tab) key on their keyboards, the ~ ` (Grave or Tilde) key, work like the ⌘ ⇧ ⇥. This way, moving forward and back on the application list is just a mater of moving your finger from to the key above of it.

To mimic this behavior, I used a “Mod-Morph” behavior on the key “below” my (Tab) key. Although a bit different from the original, it still gives me the same workflow. Moreover, it keeps keys I can use in the process, free, like the Q key that, when pressed while still holding down the (Command) key, it will close the highlighted application from the list.

I also tackled the switching between open windows of the current application the same way. Since the ⌘` (Command+Grave) key, when pressed to start an action, starts the window switch instead of the application one, I did the same thing with the key below it in my layout. Now I can comfortably cycle between apps and windows with my layout.

Navigation Layer

Navigation layer layout

The navigation layer is meant to control the text cursor on the screen.

You have the arrow keys aligned with your homerow primary keys, “Home”, “End”, “Page Up”, “Page Down”, and macOS shortcuts for next and previous words, and beginning and end of line (which is mostly the same as Home and End, but some Mac applications don't accept the proper keys, and you're forced to use ⌘ ← (Command+Left-Arrow) and ⌘ → (Command+Right-Arrow) for “Home” and “End” respectively).

Numbers Layer

Numbers layer layout

While looking into other layouts out there, I noticed that most people tend to position their numbers like an inverted phone keypad, mimicking the numeric keypad of full keyboards.

Until now, I also positioned my number keys this way because it made sense, but then, I was watching a video about the Corne keyboard (not directly related to layout), and I just went to check this YouTuber's layout because of no real reason.

When I saw his layer where the numbers are located, at first, I thought that having the numbers as two rows of five columns was a pretty bad idea. Why not use the well-established “Numpad”?

After a couple of days, I realized I was thinking a lot about that numbers layer, so I decided to give it a go, just to make my damn brain let go of it.

The first time I used it, though, made my idea about this concept to change drastically. It was so intuitive to type numbers for me, that I started to wonder why it felt way easier to type numbers this way then with the traditional “Numpad”?

After thinking long about it, I believe the problem is a combination of lack of muscle memory for the “Numpad” layout (I never really used them), plus my ADHD. Those two things combined make me have that moment of pause while typing, every time I needed to cross the “row boundary” on the “Numpad” layout. Since it has 4 rows to accommodate all the numbers and some symbols, I always had 4 opportunities to pause my typing flow when typing numbers.

With the 2-row concept, that number of opportunities is reduced to 2, and since two different things are usually pretty easy for my brain to associate, the layout became more “intuitive” for me.

Note

All the concepts I mention in this document are intimately connected to my personal preferences. Please don't take anything I mentioned here as the right way to do things. I spend quite some time adapting everything for my personal needs, which, most likely, are not the same as yours.

Symbols Layer

Symbols layer layout

One of the things I always avoided in the past was dealing with my symbols layers. I always defined them, but barely use them. Because of comfort or strong muscle memory, I was always typing the characters on the symbol layer the traditional way, by holding down “Shift” and tapping a number.

This is not necessarily bad, but when I started using the Corne-42, it became pretty clear that I could not do the same thing here. Hence, I started my journey to find the best symbols layer for me.

I looked into the Miryoku layout, but the lack of symmetry on the pair characters ((, ), [, ], {, }, and <, >) was a bit too annoying for me to go through the effort of learning it.

I checked several layouts to find something that would give me at least a head start on this, but everything looked a bit too weird for my personal taste.

Until I stumbled into this image on Reddit:

Spaceship layout definition

Note

I tried to find the author of this image, or the original source for it, but I couldn't, so if you know anything about it, please let me know, and I'll update this document with the proper information.

This layout seams to target standard keyboards, and its presentation is so well-designed that it looks like it is part of a commercial product.

As I was reading through this layout's documentation, it started to click the logic behind the positions of the symbols, so it did not take long for me to try to adapt it to my small keyboard.

The result is my “Symbols” layer that you can see on my layer map. The main difference between my layer and the original source is the inverted place I put the symbols that match the positions of their numeric counter-part. I did this because that put those five symbols in a position that makes my symbols layer behave like a standard “Shift” on normal keyboards. This single change changed everything for me, and made me start using the whole thing without thinking too much.

Despite the modifications I made to adapt it to my “single-sided” symbols layer, you can consider it a direct descendant of this “Spaceship Layout”, even though I do not know where it came from.

Media Layer

Media layer layout

This layer is where I put all my media controlling buttons.

Except for media player keys, they're all aligned vertically, and go from increasing value on top, to toggling it off on the bottom.

The media player keys are positioned so the play/pause key is the key with the small mark of the physical key marking the start of the homerow fingers, and back and next are positioned on each side of the play key.

I made the usual Escape key to be the stop, so it's easy to remember.

Mouse Layer

Mouse layer layout

Functions Layer

Functions layer layout

Buttons Layer

Buttons layer layout

System Layer

System layer layout

The System layer is the only full-keyboard layer in this layout. I code it this way because it hosts several keys that act on the half of the keyboard where they're located.

I added all the Function keys on this layer too, but I aligned them from bottom to top so they could scale nicely on bigger keyboards.

This layer, also has the key that will change the base layout of the keyboard to a COLEMAK layout.

Alternative Layout

COLEMAK base layout layer

This alternate layout is something I'm flirting for a long time. I read more texts than I should about the mater, and while opinions about alternate layouts vary from source to source, there are 2 things that could conclude:

  1. Using COLEMAK or any other alternate layout, no mater how efficient it is, it will not speed up your typing. You certainly can type at top speed using those layouts, but the layout itself is not the reason you're typing fast;
  2. Pretty much every alternate layout out there has advantages over QWERTY when it comes to ergonomics, and COLEMAK-DH is one of the most efficient one if you type primarily English and are concerned with finger movements;

To me, the biggest roadblock I have to adopt COLEMAK, is how am I going to handle the key differences on the layout when it comes to using Vim. The main movement keys of the editor are located where the HJKL keys are in QWERTY, so my muscle memory for that position is too strong after more than 20 years using the editor. Remapping the whole application to use the MNEI variant is, simply, not possible due to a good deal of other Vim core functionalities depending on one or more of those keys.

The only solution for this conundrum is to use the arrow keys on the navigation layer, but I'm not sure that I can pull that off. I'm still going to try at some point, and that is the reason this layer is here, but this day is not today :).

Disclaimers

The Corne image, I used in the header of this document, is from KeebMaker, the vendor where I purchase my Corne-42.