^ ^ ^ ^ =(o.o)= ~byakuren =(o.o)= m m m m
I love keyboards, and keyboard layouts.
Below you’ll find my currently in use keyboard layout that I’ve been slowly designing and evolving over many years, along with some configuration files for setting it up in various environments.
This layout is called bya and has evolved over many years of daily use for both programming and prose.
The alpha layer places the ten most common English letters on the
easiest-to-reach keys, with vowels clustered on the right hand
(a r s t g / k n e i o). This creates
comfortable same-hand rolls for common words and reduces lateral
stretches to the center column.
The most distinctive feature is placing brackets on the home
row — ( and ) sit where the
center-column keys would normally be, with [ and
] on shift. This dramatically reduces finger travel when
writing code, as parentheses and brackets become effortless
home-position presses rather than awkward reaches.
Key design principles:
|
and @ accessible without shift┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬─────┬──────┐
│Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │F10 │F11 │F12 │Home│End │ Ins │ Del │
├────┴┬───┴─┬──┴──┬─┴───┬┴────┼────┴┬───┴─┬──┴──┬─┴───┬┴────┼────┴┬───┴─┬──┴──┬──┴──────┤
│ ^ │ ! │ " │ # │ $ │ % │ @ │ & │ { │ } │ ` │ < │ > │ Backsp │
│ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ | │ 6 │ 7 │ 8 │ 9 │ 0 │ _ │ │
├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──────┤
│ Tab │ Q │ W │ F │ P │ B │ ] │ J │ L │ U │ Y │ + │ = │ E │
│ │ q │ w │ f │ p │ b │ ) │ j │ l │ u │ y │ ; │ - │ n │
├────────┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┐ t │
│ Control │ A │ R │ S │ T │ G │ [ │ K │ N │ E │ I │ O │ * │ e │
│ │ a │ r │ s │ t │ g │ ( │ k │ n │ e │ i │ o │ : │ r │
├──────┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─────┴────┤
│ Alt │ Z │ X │ C │ D │ V │ _ │ ? │ M │ H │ " │ ' │ Shift │
│ │ z │ x │ c │ d │ v │ \ │ / │ m │ h │ , │ . │ │
├──────┼─────┼─────┼─────┼─────┴─────┴─────┴─────┴─────┼─────┼─────┼─────┼────┬────┬────┤
│ Esc │ Fn │ Win │ Shf │ Space │ Bsp │ Scr │ Ctr │ Pu │ Up │ Pd │
│ │ │ │ │ │ │ │ ├────┼────┼────┤
└──────┴─────┴─────┴─────┴─────────────────────────────┴─────┴─────┴─────┤ Lf │ Dn │ Rt │
└────┴────┴────┘
The letter arrangement prioritizes home row comfort and reduces same-finger bigrams:
| Row | Keys | Notes |
|---|---|---|
| Top | q w f p b ) j l u y ; - |
) occupies the right center column |
| Home | a r s t g ( k n e i o : |
( occupies the left center column; vowels on right |
| Bottom | z x c d v \ / m h , . |
\ and / split the center, h
moves down |
The h key is relocated from the difficult-to-reach
center column to the bottom row, making the common he,
th, and the sequences more comfortable — the
index finger curls down naturally rather than stretching laterally.
The number row is rearranged to put frequently-used programming symbols in better positions:
| Key | Base | Shift |
|---|---|---|
| 1 | ~ |
^ |
| 2 | 1 |
! |
| 3 | 2 |
" |
| 4 | 3 |
# |
| 5 | 4 |
$ |
| 6 | 5 |
% |
| 7 | \| |
@ |
| 8 | 6 |
& |
| 9 | 7 |
{ |
| 10 | 8 |
} |
| 11 | 9 |
` |
| 12 | 0 |
< |
| 13 | _ |
> |
This puts | (pipe) and @ on an unshifted
key, and groups { } together.
The modifier keys are heavily remapped to reduce pinky strain and keep hands on home row:
| Physical Key | Function |
|---|---|
| Caps Lock | Control |
| Left Control | Escape (palm key) |
| Left Shift | Alt |
| Left Alt | Shift |
| Right Alt | Backspace |
This creates an “alt-shift swap” on the left side, putting Shift under the thumb where it’s easier to hold for capital letters.
/usr/share/vt/keymaps//usr/share/X11/xkb/symbols/# Copy keymap
cp bya.kbd /usr/share/vt/keymaps/
# Set in /etc/rc.conf
keymap="bya"
# Or load immediately
kbdcontrol -l bya# Copy symbols file
cp bya.xkb /usr/share/X11/xkb/symbols/bya
# Load with setxkbmap
setxkbmap bya
# Or add to xorg.conf
# Section "InputClass"
# Identifier "keyboard"
# MatchIsKeyboard "yes"
# Option "XkbLayout" "bya"
# EndSection