All files / virtual-keyboard/src/layouts colemak.ts

100% Statements 1/1
100% Branches 0/0
100% Functions 0/0
100% Lines 1/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71                                            1x                                                                                                
import { createLayout } from "../engine/createLayout";
import { ck } from "./latin";
import {
  BACKSPACE_KEY,
  ENTER_KEY,
  LAYER_KEY,
  SHIFT_KEY,
  SPACE_KEY,
} from "./qwerty";
 
/**
 * **Colemak** layout — a modern ergonomic arrangement that keeps `QWERTY`'s
 * bottom-row muscle memory (`z x c v b`) while placing the most frequent letters
 * on the home row (`arstdhneio`). Shift/Caps and the `?123` symbol layer behave
 * as on {@link qwertyLayout}; vowel accents are available as long-press variants.
 *
 * @example
 * ```tsx
 * import { VirtualKeyboard, colemakLayout } from "@usefy/virtual-keyboard";
 * <VirtualKeyboard layouts={colemakLayout} />;
 * ```
 */
export const colemakLayout = createLayout({
  name: "colemak",
  label: "Colemak",
  rows: [
    [
      ck("q", "1"),
      ck("w", "2"),
      ck("f", "3"),
      ck("p", "4"),
      ck("g", "5"),
      ck("j", "6"),
      ck("l", "7"),
      ck("u", "8"),
      ck("y", "9"),
      { key: ";", type: "char", layerKey: "0" },
    ],
    [
      ck("a", "@"),
      ck("r", "#"),
      ck("s", "$"),
      ck("t", "_"),
      ck("d", "&"),
      ck("h", "-"),
      ck("n", "+"),
      ck("e", "("),
      ck("i", ")"),
      ck("o", "?"),
    ],
    [
      SHIFT_KEY,
      ck("z", "*"),
      ck("x", '"'),
      ck("c", "'"),
      ck("v", ":"),
      ck("b", ";"),
      ck("k", "!"),
      ck("m", "="),
      BACKSPACE_KEY,
    ],
    [
      LAYER_KEY,
      { key: ",", type: "char", layerKey: "<" },
      SPACE_KEY,
      { key: ".", type: "char", layerKey: ">" },
      ENTER_KEY,
    ],
  ],
});