keyboard layout

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.

overview

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:

ascii diagram

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬─────┬──────┐
│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 │
                                                                         └────┴────┴────┘

layout details

alpha layer

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.

number row

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.

modifier remapping

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.

configuration files

freebsd tty setup

# Copy keymap
cp bya.kbd /usr/share/vt/keymaps/

# Set in /etc/rc.conf
keymap="bya"

# Or load immediately
kbdcontrol -l bya

xorg/wayland setup

# 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