Skip to the content
PCBKitNew board
2 layers264.8 × 103 mmTotem he, the printed circuit board in 3D

Tot-HE-m is a hall-effect version of GEIGEIGEIST's TOTEM: the same 38-key split layout, scaled to MX spacing, with a linear hall sensor under every switch instead of a mechanical contact.

Size
264.8 × 103 mm
Copper layers
2
Thickness
1.6 mm
Parts
56
Nets
56
Pads
508
Tracks, vias
1,184, 46
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
22 Sep 2026
Updated
31 Oct 2026

Overview

Totem he is an open-source printed circuit board by Triver1, from the Triver1/t-he repository on GitHub. It is a 2-layer board of 264.8 × 103 mm with 56 parts on 56 nets, routed with 1,184 tracks and 46 vias.

Its parts include 38 switches and 6 ICs.

README

README.md

Tot-HE-m

The Tot-HE-m PCB, both halves

Tot-HE-m is a hall-effect version of GEIGEIGEIST's TOTEM: the same 38-key split layout, scaled to MX spacing, with a linear hall sensor under every switch instead of a mechanical contact. The goal is an analog keyboard that is cheap and easy to build at home. Each half is one two-layer PCB with a handful of SMD parts, a Seeed XIAO RP2040 and a 3D printed case, so everything can be ordered from LCSC, JLCPCB and the usual keyboard shops, and soldered with an ordinary iron.

The assembled case

Features

  • Hall-effect sensing on every key, read through three 74HC4051 multiplexers per half. Tested with MMD C1 switches; other MX-style magnetic switches (Gateron KS-20, Wooting Lekker and similar) should work as well.
  • Auto calibration. Each key measures its rest position at power-up and learns where it bottoms out while you type; the learnt travel is kept across reboots.
  • Adjustable actuation and release points, set as key depth in tenths of a millimetre.
  • Rapid trigger, with separate press and release sensitivity.
  • VIA support: remap keys and change all of the above live from the browser.
  • Controller layer: turns W A S D into an analog gamepad stick, so a light press walks and a full press runs.

Cost

Rough prices for one keyboard, checked October 2026, in euros, before shipping and taxes. Several parts only come in larger quantities, so ordering for two or more keyboards brings the price per board down a lot.

PartWhereApprox.
PCBs (5 sets)JLCPCB30
Sensors, muxes, capacitors, TRRS jacksLCSC15
2x Seeed XIAO RP2040Seeed or any electronics shop15
38 magnetic switcheskeyboard shop20
38 MX keycapskeyboard shop20
TRRS cable, USB-C cableany10
8x M2 x 10 screws, rubber bumpershardware shop5
About 150 g of filament3
Total≈ 120

Ordering

PCB (JLCPCB). Upload production/Tot-HE-m_gerbers.zip on jlcpcb.com. The file holds both halves side by side, so an order of 5 gives 5 left and 5 right boards. Settings: 2 layers, 1.6 mm, 1 oz copper, any colour; the defaults cover the rest. JLCPCB counts the two outlines as two designs and adds a small fee for the second, which shows up in the quote. Pick "Remove order number", or it gets printed on the silkscreen.

Parts (LCSC). On lcsc.com, open the BOM tool, upload production/lcsc_bom.csv and match the "LCSC Part Number" column. That puts every SMD part and both jacks in the cart in one go, with a few spares for the small parts:

PartLCSCPer half
TI DRV5055A3QDBZR linear hall sensor, SOT-23C26612819
74HC4051D analog mux, SOIC-16C93863
100 nF capacitor, 0805C171122
PJ-320A TRRS jackC28849261

Everything else: two Seeed XIAO RP2040s, 38 magnetic switches, 38 MX keycaps, a 4-pole TRRS cable, a USB-C cable, eight M2 x 10 screws and at least eight rubber bumpers taller than 2.5 mm.

The cable has to be TRRS (three insulating rings on the plug). A 3-pole TRS cable bridges two contacts in the jack and shorts the 3.3 V supply, and the keyboard stays dark.

Building

The bottom side with the sensors and muxes

  1. Solder the bottom side first: one hall sensor under every switch position, the three muxes and the capacitors. The sensors are wired pin 1 VCC, 2 OUT, 3 GND, the DRV5055's own SOT-23 order.
  2. Solder the XIAO flat on its castellated pads, without headers, and the TRRS jack on top. Check every XIAO pad, GND and D8 to D10 in particular: a dry joint there makes all keys read wrong.
  3. Flash the firmware (below) and check that every key types before closing the case.
  4. Clip the switches into the printed plate, put the plate on the PCB, drop the shell over it and fasten each corner with an M2 x 10 screw from below, then stick the bumpers on.

Only plug or unplug the TRRS cable with USB disconnected.

Firmware and VIA

The firmware is QMK. Hold the XIAO's BOOT button while plugging a half in; it shows up as a drive called RPI-RP2. Copy firmware/uf2/tot_he_m_via_left.uf2 onto the left half and tot_he_m_via_right.uf2 onto the right. Each image stores its side on first boot. Afterwards, hold Esc and press T to get back into the bootloader.

To configure it in VIA:

  1. Open usevia.app in a Chromium-based browser.
  2. Under Settings, turn on Show Design tab.
  3. In the Design tab, load firmware/via/tot-he-m.json. VIA forgets it when the browser closes, so load it again next time.
  4. In Configure, click Authorize device and pick Tot-HE-m.

The keymap editor then works as on any VIA keyboard, and the Hall effect menu has the analog settings:

SettingRangeDefault
Actuation point1.0 to 3.8 mm2.0 mm
Release point0.8 mm up to 0.2 mm shallower than actuation1.6 mm
Rapid triggeron / offoff
Rapid trigger press and release sensitivity0.2 to 2.0 mm0.3 mm
Stick dead zone (controller layer)0 to 2.0 mm0
Stick full deflection (controller layer)0.5 to 4.0 mm3.8 mm

Settings are stored on the half that is plugged in, which sends them to the other half. On Linux, the browser needs access to the keyboard's hidraw device; a udev rule for vendor 746d, product 7e57 with TAG+="uaccess" does it.

The default keymap follows a Ferris Sweep layout: QWERTY with Ctrl and Alt on the outer bottom keys and, on the thumbs, Shift, Space and Esc on the left, Enter, Backspace and GUI on the right. Holding Backspace gives numbers and symbols, Enter navigation and F-keys, Esc system keys. Hold Esc and press G for the controller layer.

To build the firmware yourself, copy firmware/qmk/tot_he_m into keyboards/ of a QMK checkout and run, for each half:

bash
qmk compile -kb tot_he_m -km via -e EXTRAFLAGS=-DINIT_EE_HANDS_LEFT -e TARGET=tot_he_m_via_left
qmk compile -kb tot_he_m -km via -e EXTRAFLAGS=-DINIT_EE_HANDS_RIGHT -e TARGET=tot_he_m_via_right

Case

Each half is a shell and a switch plate, both printed without supports: the shell deck-down, the plate top-down. The stack is the 1.6 mm PCB, the plate 5 mm above it and the deck 6 mm above the plate, 12.6 mm in total. Each M2 x 10 screw goes up from under the PCB, through the plate's standoff, and cuts its own thread in a pilot hole in the deck. The screw heads sit under the PCB, so the bumpers need to be taller than 2.5 mm. For a case that gets opened often, set insert = true in case/totem_he_case.scad to use M2 heat-set inserts instead.

The foam mold casts an optional silicone foam layer between the PCB and the plate, which dampens the sound; the instructions are at the top of case/foam_mold.scad.

The STLs are in case/stl, made from the OpenSCAD sources (OpenSCAD 2025 or newer):

bash
openscad --enable=roof -D 'part="shell"' -D 'side="left"' -o case/stl/totemhe_shell_left.stl case/totem_he_case.scad

Repository

FolderContents
pcb/KiCad project with both halves, and the Ergogen config and footprints the board layout was generated from
production/Gerbers for JLCPCB and the LCSC BOM
case/OpenSCAD sources and STLs for the shell, plate and foam mold
firmware/QMK source, prebuilt images and the VIA definition

License

The PCB, case and everything else outside firmware/ are licensed under CC BY-NC-SA 4.0, like TOTEM, which they are derived from: share and adapt them freely for non-commercial use, with attribution, under the same license. The firmware in firmware/ is GPL-2.0-or-later, like QMK.

Credits

Layout and outline from TOTEM by GEIGEIGEIST. The sensor scan is modelled on Boardloaf-HE, the per-key calibration on Hector. Some footprints are adapted from ceoloide's Ergogen footprints (see pcb/footprints/LICENSE-ceoloide).

Parts

56
QtyValueFootprintReferences
38totemhe:switch_heS1, S10, S11, S101, S102, S103, S104, S105, S106, S107, S108, S109, S110, S111, S112, S113 +22
8totemhe:mounting_hole_platedH1, H2, H3, H4, H101, H102, H103, H104
6totemhe:mux_4051IC1, IC2, IC3, IC101, IC102, IC103
2totemhe:xiao_rp2040MCU1, MCU101
2totemhe:trrs_pj320aTRRS1, TRRS101

Questions

How big is the Totem he PCB?

It measures 264.8 × 103 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Totem he use?

56 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Totem he KiCad files?

From the Triver1/t-he repository on GitHub, at the commit this page was made from: the board is pcb/totem_he.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Totem he design in my own project?

Its repository states no licence, so its author keeps all rights: ask Triver1 before reusing the design.

Similar boards

  • 2 layers90 × 38 mmLCD OLinuXino-5TS Rev.B, the printed circuit board in 3D

    LCD OLinuXino-5TS Rev.B

    OLIMEX/OLINUXINO

    OLINUXINO is Open Source / Open Hardware, low cost from EUR 24 Linux Industrial grade Single Board Computer capable to operate -25+85C

    56 parts1.5k
  • 2 layers50.4 × 48.4 mmDistortion, the printed circuit board in 3D

    Distortion

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    56 parts915
  • 2 layers27 × 24.7 mmKawaiiSD, the printed circuit board in 3D

    KawaiiSD

    mackieks/Kawaii

    Tiny, beautiful metal Wii keychain

    56 parts374
  • 2 layers123.9 × 94.4 mmRoba L, the printed circuit board in 3D

    Roba L

    kumamuk-git/roBa

    56 parts363GPL-3.0
  • 2 layers120.6 × 85.5 mmKLOTZ, the printed circuit board in 3D

    KLOTZ

    GEIGEIGEIST/KLOTZ

    KLOTZ is 34 keys column-staggered split keyboard. It uses an encoder and three status LEDs on each side.

    56 parts287GPL-3.0
  • 2 layers136 × 91.7 mmOne, the printed circuit board in 3D

    One

    ergonautkb/one

    Ergonaut One is an open-source ergonomic wireless split mechanical keyboard designed by Ergonaut Keyboards.

    56 parts210CERN-OHL-P-2.0
  • 2 layers78.5 × 69 mmKicad cpu board, the printed circuit board in 3D

    Kicad cpu board

    matthewcieplak/super-sixteen

    Code and schematics for the Super Sixteen Eurorack sequencer

    56 parts171
  • 2 layers45 × 45 mmAeroq Hardware v3, the printed circuit board in 3D

    Aeroq Hardware v3

    EnriqueNeyra/Aeroq

    An Indoor Air Quality Monitor Powered by ESP32, SCD40, and SEN54

    56 parts130