Project

zmk-config-totem

stable

ZMK configuration for the GEIST Totem split keyboard, with four layers, pointer controls and Studio editing.

Overview

This repository builds custom ZMK firmware for the GEIST Totem split keyboard with Seeeduino XIAO BLE controllers. The active user layout is config/totem.keymap; the larger keymap under boards/shields/totem/ is the shield default.

The configuration provides four layers, mouse controls, sticky modifiers, Caps Word, NKRO, Bluetooth profile management and ZMK Studio support.

How it works

config/totem.keymap defines Base, Symbol, Navigation and Adjust layers. Pressing the Symbol and Navigation layer keys together activates Adjust through a conditional layer.

GitHub Actions builds left, right and settings-reset UF2 images from build.yaml. Studio RPC is enabled on the left half, allowing live keymap changes over USB; the configuration keeps Studio locking enabled.

Features
Four-layer layout

Base uses QWERTY. Symbol contains brackets and operators, Navigation combines arrows, numbers and mouse controls, and Adjust contains media, Bluetooth and function keys.

Mouse controls

Navigation provides pointer movement, buttons and scrolling through ZMK's pointing support.

Sticky modifiers and Caps Word

One-shot modifiers use quick release and a one-second timeout. Caps Word continues through underscore, minus and backspace.

ZMK Studio

The left-half build includes Studio RPC over USB UART. Studio locking remains enabled in config/totem.conf.

NKRO and Bluetooth

NKRO is enabled, with commands for Bluetooth profile selection, clearing pairings and switching output between USB and Bluetooth.

Reproducible firmware

The build matrix produces separate left/right UF2 files plus settings-reset firmware for recovery.

Architecture
User keymap Base · Sym · Nav · Adjust Build matrix left · right · settings reset GitHub Actions ZMK firmware build ZMK Studio USB RPC · locked UF2 firmware XIAO BLE halves Live keymap layer edits without reflashing Totem keymap build and live Studio editing
Posts