This project is under currently under heavy construction and is changing daily. If you are interested, please check back for config files.
The Reduced Reach Keyboard (RRKB) Layer project remaps the Caps Lock key to a left-handed function layer which brings frequently used functions within reach of the home row, enhancing typing comfort and efficiency by minimizing hand movement.
While the functionality of the RRKB layer should be generally useful for typing, it is optimized for programming.
This project is inspired by the layering found in small keyboards. These reduce hand movement by using far fewer keys; 'missing' functions, or those lacking dedicated keys, are accessed via complex layering. As examples, see https://www.reddit.com/r/MechanicalKeyboards/comments/1h3e8ns/bringing_the_full_keyboard_to_within_reach_of/ and https://github.com/argenkiwi/kenkyo
This project seeks to bring some of those benefits to users of traditional keyboards by mapping frequently used features onto the 60% portion of the keyboard under a layer accessed by holding the "Caps Lock" key. This allows users to experience and experiment with the benefits of such keyboards without comitting to a physical downsizing, memorizing multiple complex layers, or needing to re-learn how to type: all original key functions remain unchanged except for Caps Lock (accessed via Caps Lock + Space), letting users revert to old habits in a pinch.
As an example, the following functions may be accessed without moving your fingers from the home row:
- Jump the cursor to the next or previous word
- Delete the previous or next word
- Delete all text on the current line before or after the cursor
By including the rows above and below home, we can access an even wider array of functions without needing to significantly move our hands. Key mappings are optimized for ergonomics and easy memorization.
Furthermore, the following commands may be accessed exclusively with your left hand:
- Delete and backspace
- Return
- Escape
- All modifiers
- Any modifier or combination of modifiers + backspace, enter, delete
This makes for effective use of critical functions while also navigating with the mouse or with the right-handed navigation functions under the layer.
This layout works with most traditional keyboards (non-ortholinear) that are 60% or larger.
This project is incompatible with most HHKB-style keyboards that have Ctrl in the Caps Lock position. Some HHKB-style keyboards may offer a dedicated left-hand function key that could be used instead, however, the ergonomics are optimized for the key in the traditional Caps Lock position.
The spacebar can also be used to access the layer with good ergonomics (tap for space, hold for layer) if the user`s software supports it.
Below are the specific keymappings within the Caps Lock layer.
For brevity, I use the following symbols:
- ⌘: Command
- ⌥: Option
- ⌃: Control
- ⇧: Shift
- ↵: Enter/Return
- ⌫: Backspace
- ⌦: Delete (forward delete)
- ⊞: Super/Win key
Letter and number keys are referred to in code
form, i.e. the the key immediately to the right of Tab is q
. Symbol keys are denoted with their primary character followed by the shifted character in single quotes, i.e. the key to the left of ⌫ on a US English ANSI layout is =+
.
The Caps Lock key is denoted ⇪.
The image above displays the basic function layer for macOS.
The image above dispalys the basic function layer for Windows/Linux.
The caps lock toggle is available by pressing ⇪ + spacebar.
q
toggles the layer on/offw
→ ⌃ on Mac, ⊞ on Windowse
→ ⇧r
→ ↵a
→ ⌥ on Mac, ⌃ on Windowss
→ ⌘ on Mac, Alt on Windowsd
→ ⌫f
→ ⌦z
opens the numpad layerx
→ ⌃ + ⇧ + Tab (go to previous tab)c
→ ⌃ + Tab (go to next tab)
The left hand can be used to access common functions that traditionally require the right hand such as enter, backspace, and delete, allowing the user to comfortably perform these functions while navigating with the right hand or mouse. This prevents the need to, e.g., repeatedly move the right hand between the keyboard and mouse, or between the arrows and other keys, to access these functions while navigating.
Navigation functions may be accessed via your right hand:
i
→ upj
→ leftk
→ downl
→ righty
→ Page Uph
→ Page Downp
→ Home;:
→ Endu
→[{
o
→]}
n
→-_
m
→+=
/?
→\|
The right hand accesses navigation functions such as arrow keys and page up/down. It also brings a few common symbols used in programming to within reduced reach.
I have avoided placing navigation functions in the spaces reserved for u
and o
. This is because, in experience, "typos" are
The number row keys are mapped to the function keys (1
as F1
, 2
as F2
, ... =/+
as F12
).
The numpad layer is accessed by holding ⇪ + z
:
7
,8
, and9
map to themselvesu
,i
,o
map to4
,5
,6
j
,k
,l
map to1
,2
,3
m
and,<
map to0
and00
respectively.>
maps to a period/decimal point.
The layer may be toggled with ⇪ + q
such that the user does not need to hold down ⇪ to access the functions.
The below sections detail the usage of the RRKB layer.
While general usage is straightforward, what may not be is the "chording", or the use of multiple key combinations to access various functions. For example, the following critical functions may be accessed with your left hand exclusively by chording multiple keys:
- Delete the previous or next word: Hold ⇪ +
a
(⌥) and pressd
(⌫) orf
(⌦). - Delete all text on the line before or after the cursor: Hold ⇪ +
s
(⌘) and pressd
orf
. - Insert a new line without submitting the current text (e.g., when composing a message): Hold ⇪ +
c
(⇧) and presse
(↵).
Furthermore, by including the navigation functions with our right hand, we may access even more functions:
– Jump the cursor to the next or previous word: Hold ⇪ + a
(⌥) and press l
(right arrow) or j
(left arrow).
- Highlight the previous or next page of text: Hold ⇪ +
c
(⇧) and pressh
(Page Up) orn
(Page Down). - Unindent or indent a line in a code editor: Hold ⇪ +
s
(⌘) and pressu
([{
) oro
(]}
)
Whenever possible, keys are mapped mnemonically or to be generally easy to remember:
- Super ("Win" key) to
w
- Enter ("Return") as
r
- Backspace ("delete") to
d
- Delete ("forward delete") to
f
/?
aka forward slash to\|
aka backslash
In other cases, keys are mapped to optimize ergonomics. For instance, while it may be more mnemonic to place ⌘ (Command) at c
, ⌘ is instead mapped to s
to enable the ergonomic chord ⇪ + s
+ f
(⌘ + ⌦) and avoid the unergomonic ⇪ + c
+ f
. Similarly, Shift is placed at e
to enable easy chording with Enter at r
.
Because the functions within the layer are quite dense and will take time to get used to, it's recommended to start slow. The most useful functions are accessing these from the left hand:
- ⇪ +
r
as Enter - ⇪ +
d
orf
as Backspace and Delete respectively. - ⇪ +
a
+d
orf
to delete the previous or next word, respectively.
From there, work on incorporating:
- Arrow keys as
ijkl
- Shift as
e
in combination withijkl
for highlighting text - Opt and Cmd as
a
ands
in combination withe
andijkl
to highlight words or lines of text. - Ctrl/Win as
w
withjl
to switch desktops
Lastly, users may work on incorporating the miscellaneous navigation functions, symbols, and numpad layer.
The z
row of the keyboard is left open for user customization. I personally map a few symbols to the bottom row