Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rissoto

An experimental 34-key keymap focused on Rust programming ergonomics, designed for the Urchin Keyboard.

RSI relief for Rust and TypeScript programmers

This keymap is designed to reduce strains for Rust and TypeScript programmers suffering from Repetitive Strain Injury (RSI).

In a conventional keyboard layout, the keys for the symbols usedd in programming are hard to reach. Reaching those keys often involve moving the entire hand, bending the wrist in an uncomforable way, or repeatedly straining weaker fingers.

This keymap places those programming symbols only 1 unit away from the home row, with placement arranged around fingers by the frequency of use of the symbols in the Rust and the relative strength of the fingers. Although the keymap is primarily focused on increasing Rust programming comfort, it is also great for coding in TypeScript.

Getting started

Are you trying to make your own ZMK firmware?
Here are the steps you need to take.

Nix workflow

This repository includes a Nix flake for local flashing.

If you do not already have Nix installed, start with the Determinate Systems Nix installer.

To build and flash a connected half:

nix run .#flash

Before flashing, put the target half into bootloader mode and connect it over USB. Repeat the flash step for the other half.

The current flake builds the Urchin split firmware with the nice!view display stack:

board = "nice_nano_v2";
shield = "urchin_%PART% nice_view_adapter nice_view";

Home row mods (urob's timeless HRM)

The base layer uses urob's timeless home row mods for modifier keys:

Key Tap Hold
A a Alt
S s Meta (GUI)
D d Ctrl
F f Shift
J j Shift
K k Ctrl
L l Meta (GUI)

Configuration

The zmk-helpers module is declared in [config/west.yml], which makes its headers available on ZMK's include path. The keymap includes them directly:

#include "zmk-helpers/helper.h"
#include "zmk-helpers/key-labels/34.h"

The HRM behaviors are defined with the ZMK_HOLD_TAP macro, using key-labels (KEYS_L, KEYS_R, THUMBS) for clean cross-hand hold-trigger configuration.

Two timing profiles are used, tuned by misfire severity rather than mod frequency:

  • Strict (hml/hmr — Ctrl/GUI/Alt) — require-prior-idle-ms = <200>, so a hold only resolves after a deliberate pause. A misfired Ctrl/GUI/Alt is catastrophic (closes tabs, quits apps, steals focus), so the benign failure mode — a plain letter, no mod — is strongly preferred.
  • Lenient (hml_sh/hmr_sh — Shift) — require-prior-idle-ms = <150>, making capitalization easy mid-burst; a misfire only produces a stray capital letter.

Both profiles use tapping-term-ms = <280>, quick-tap-ms = <175>, and the canonical positional hold-trigger-on-release cross-hand detection.

Updating

When a new release of zmk-helpers is available, update the revision in [config/west.yml] to the desired commit or tag, then rebuild.

Keymap Cheat Sheet

This layout is inspired by Urchin by duckyb

This diagram was created using draw.io
Click HERE to view a copy that you can edit

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages