LYNXgram Key Layout

LYNXgram is the default key layout for lynx-v4, optimized for German language typing on a split ergonomic keyboard.

Layout

Main Layer

╭─────────────────────────────────╮                 ╭───────────────────────────────────╮
│         LEFT FINGER             │                 │         RIGHT FINGER              │
│                                 │                 │                                   │
│          ┌───┬───┬───┐          │                 │          ┌───┬───┬───┐            │
│          │ y │ o │ u │          │                 │          │ l │ d │ w │            │
│      ┌───┼───┼───┼───┼───┐      │                 │      ┌───┼───┼───┼───┼───┐        │
│      │ b │ i │ e │ a │ . │      │                 │      │   │ h │ t │ s │ v │        │
│  ┌───┼───┼───┼───┼───┼───┤      │                 │      ├───┼───┼───┼───┼───┼───┐    │
│  │ z │ c │ j │ x │ k │ , │      │                 │      │   │ r │ m │ f │ n │ q │    │
│  ├───┼───┼───┼───┼───┼───┤      │                 │      ├───┼───┼───┼───┼───┼───┤    │
│  │ ß │ g │ 0 │ 0 │ - │ ' │      │                 │      │   │ # │ @ │ & │ p │ % │    │
│  └───┴───┴───┴───┴───┴───┘      │                 │      └───┴───┴───┴───┴───┴───┘    │
╰─────────────────────────────────╯                 ╰───────────────────────────────────╯

╭───────────────────────────────────╮                 ╭───────────────────────────────────╮
│         LEFT THUMB                │                 │         RIGHT THUMB               │
│                                   │                 │                                   │
│  ┌─────┬─────┐                    │                 │                    ┌─────┬─────┐  │
│  │ ESC │ DEL │                    │                 │                    │  ↑  │  →  │  │
│       ┌─────┬─────┐               │                 │                  ┌─────┬─────┐    │
│       │ END │HOME │               │                 │                  │  ←  │  ↓  │    │
│  ┌─────┬─────┬─────┐              │                 │              ┌─────┬─────┬─────┐  │
│  │BACK │SPACE│CAPS │              │                 │              │ M1  │ M2  │ M3  │  │
│     ┌─────┬─────┐                 │                 │                 ┌─────┬─────┐     │
│     │CTRL │SHIFT│                 │                 │                 │ENTER│ TAB │     │
│  ┌─────┬─────┐                    │                 │                    ┌─────┬─────┐  │
│  │ GUI │ ALT │                    │                 │                    │ mo1 │ mo2 │  │
│  └─────┴─────┘                    │                 │                    └─────┴─────┘  │
╰───────────────────────────────────╯                 ╰───────────────────────────────────╯

Legend: M1/M2/M3 = Mouse buttons (Left/Right/Middle)
        FN = Layer key (momentary)
        BACK = Backspace

Secondary Layer (Layer 1)

Activated by holding mo1 or mo2 on the right thumb cluster.

╭─────────────────────────────────╮                 ╭───────────────────────────────────╮
│         LEFT FINGER             │                 │         RIGHT FINGER              │
│      (Numbers + Operators)      │                 │      (Brackets + Umlauts)         │
│                                 │                 │                                   │
│          ┌───┬───┬───┐          │                 │          ┌───┬───┬───┐            │
│          │ 3 │ 2 │ 1 │          │                 │          │ ( │ [ │ { │            │
│      ┌───┼───┼───┼───┼───┐      │                 │      ┌───┼───┼───┼───┼───┐        │
│      │ = │ 6 │ 5 │ 4 │ . │      │                 │      │🎡 │ ) │ ] │ } │ ä │        │
│  ┌───┼───┼───┼───┼───┼───┤      │                 │      ├───┼───┼───┼───┼───┼───┐    │
│  │ | │ 0 │ 9 │ 8 │ 7 │ , │      │                 │      │🎡 │F2 │   │   │ ö │ < │    │
│  ├───┼───┼───┼───┼───┼───┤      │                 │      ├───┼───┼───┼───┼───┼───┤    │
│  │   │ / │ * │ - │ + │ " │      │                 │      │🎡 │   │   │   │ ü │ > │    │
│  └───┴───┴───┴───┴───┴───┘      │                 │      └───┴───┴───┴───┴───┴───┘    │
╰─────────────────────────────────╯                 ╰───────────────────────────────────╯

╭───────────────────────────────────╮                 ╭───────────────────────────────────╮
│         LEFT THUMB                │                 │         RIGHT THUMB               │
│      (Modifiers preserved)        │                 │      (Navigation preserved)       │
│                                   │                 │                                   │
│  ┌─────┬─────┐                    │                 │                    ┌─────┬─────┐  │
│  │ ESC │ DEL │                    │                 │                    │  ↑  │  →  │  │
│       ┌─────┬─────┐               │                 │                  ┌─────┬─────┐    │
│       │ END │HOME │               │                 │                  │  ←  │  ↓  │    │
│  ┌─────┬─────┬─────┐              │                 │              ┌─────┬─────┬─────┐  │
│  │BACK │SPACE│CAPS │              │                 │              │     │     │     │  │
│     ┌─────┬─────┐                 │                 │                 ┌─────┬─────┐     │
│     │CTRL │SHIFT│                 │                 │                 │ENTER│ TAB │     │
│  ┌─────┬─────┐                    │                 │                    ┌─────┬─────┐  │
│  │ GUI │ ALT │                    │                 │                    │[mo1]│[mo2]│  │
│  └─────┴─────┘                    │                 │                    └─────┴─────┘  │
╰───────────────────────────────────╯                 ╰───────────────────────────────────╯

Legend: 🎡 = Scroll wheel (no key)
        [mo1]/[mo2] = Layer keys (held to activate this layer)
        Empty cells = Transparent (no action)

Origin

LYNXgram is based on Engram — a keyboard layout designed using modern computational analysis to minimize finger travel and optimize typing comfort.

Why Engram as a foundation:

  • Optimized for English while remaining adaptable to other languages
  • Designed with ergonomic finger placement in mind
  • Considers real-world typing patterns and bigram frequencies
  • Created specifically for alternative keyboard layouts (not QWERTY retrofitting)

LYNXgram Adaptations

LYNXgram modifies Engram for:

  • German language — positioning umlauts (ä, ö, ü) and Eszett (ß) on accessible keys
  • Split ergonomics — leveraging the modular thumb clusters for modifiers and navigation
  • Wireless workflow — layer keys positioned for single-hand access when needed

Complete Key Mapping Table

Physical key name → virtual matrix position → layer assignments.

Naming convention: L/R = Left/Right, i/m/r/p = index/middle/ring/pinky, t = thumb, number = position.

Left Finger Module

KeyMatrixLayer 0Layer 1
Li1[3][1]u1
Lm1[3][2]o2
Lr1[3][3]y3
Li2[2][1]a4
Lm2[2][2]e5
Lr2[2][3]i6
Lp1[2][4]b=
Li3[1][1]k7
Lm3[1][2]x8
Lr3[1][3]j9
Lp2[1][4]c0
Lp4[1][5]z|
Li4[0][1]-+
Lm4[0][2]0-
Lr4[0][3]0*
Lp3[0][4]g/
Lp5[0][5]ß
Li5[2][0]..
Li6[1][0],,
Li7[0][0]"

Left Thumb Module

KeyMatrixLayer 0Layer 1
Lt11[5][0]DeleteDelete
Lt21[4][0]EscapeEscape
Lt12[5][3]HomeHome
Lt22[4][3]EndEnd
Lt13[5][4]CapsLockCapsLock
Lt23[5][1]SpaceSpace
Lt33[4][1]BackspaceBackspace
Lt14[5][5]ShiftShift
Lt24[4][5]CtrlCtrl
Lt15[5][2]AltAlt
Lt25[4][2]GUIGUI

Right Finger Module

KeyMatrixLayer 0Layer 1
Ri1[9][1]l(
Rm1[9][2]d[
Rr1[9][3]w{
Ri2[8][1]h)
Rm2[8][2]t]
Rr2[8][3]s}
Rp1[8][4]vä
Ri3[7][1]rF2
Rm3[7][2]m
Rr3[7][3]f
Rp2[7][4]nö
Rp4[7][5]q<
Ri4[6][1]#
Rm4[6][2]@
Rr4[6][3]&
Rp3[6][4]pü
Rp5[6][5]%>
Ri5[8][0]🎡🎡
Ri6[7][0]🎡🎡
Ri7[6][0]🎡🎡

Right Thumb Module

KeyMatrixLayer 0Layer 1
Rt11[11][0]
Rt21[10][0]
Rt12[11][3]
Rt22[10][3]
Rt13[11][4]M1
Rt23[11][1]M2
Rt33[10][1]M3
Rt14[11][5]EnterEnter
Rt24[10][5]TabTab
Rt15[11][2]mo(1)[held]
Rt25[10][2]mo(1)[held]

Legend:

  • = No action (k!(No))
  • 🎡 = Scroll wheel (no physical key)
  • mo(1) = Momentary layer 1 switch
  • [held] = This key is being held to activate Layer 1
  • M1/M2/M3 = Mouse buttons (Left/Right/Middle)

Layout Reference

See key-mapping.md for the complete physical-to-virtual matrix transformation.

The default keymap is defined in firmware/tower/src/config.rs:get_default_keymap().