Skip to content

sinanm89/sinuphy

Repository files navigation

sinuphy — NuPhy Air75 V2 custom QMK keymap

A personal, open-source QMK keymap + tooling for the NuPhy Air75 V2 (ANSI), focused on a Windows + Blender workflow. Built against NuPhy's QMK fork (branch nuphy-keyboards).

  • MCU: STM32F072 · stm32-dfu bootloader · 128 KB flash (~67 KB used)
  • Build target: nuphy/air75_v2/ansi keymap sinuphy_v0
  • License: GPL-2.0-or-later (derives from QMK, which is GPLv2)

Features

  • 8 layers, Windows-first. RGB-Matrix per-key category lighting + a per-layer Esc indicator (each overlay layer tints Esc a unique hue, so you always know — and can see — when a layer is locked).
  • Blender numpad on layer 6 (KC_P1KC_P0, KC_PDOT) — Blender uses numpad digits as view shortcuts (1/3/7 = front/side/top, 5 = ortho/persp, 0 = camera, . = frame selected).
  • Combos (firmware-level, survive VIA edits):
    • [ + ]Alt+F4
    • , + . + /toggle-lock the numpad layer (tap once to lock for modeling, again to release)
  • VIA enabled for live remapping + backup/restore (see below).

Layer map

Layer Role Notes
0 / 1 Mac base / Mac Fn only active in Mac mode (physical OS dial); unusable as overlays in Windows
2 Windows base (default) VIA-synced
3 Fn + layer switches media keys, MO(4/5/6/7)
4 Nav cluster
5 RGB / sidelight controls hand-managed (SIDE_MOD, RGB_*)
6 Blender numpad VIA-synced; toggle-lock via the ,+.+/ combo
7 Bluetooth / RF / system hand-managed (LNK_BLE*, LNK_RF, DEV_RESET, BAT_SHOW)

The OS dial sets the base layer in firmware: Windows ⇒ default layer 2, Mac ⇒ default layer 0. Because layers 0/1 sit below the Windows base, they can't be used as Windows overlays — that's why custom keys placed there don't work without flipping the physical switch.

Layer-management policy (important for syncing)

  • Layers 2 (base) and 6 (numpad) are VIA-synced — their source of truth is a VIA layout export.
  • Layers 3, 4, 5, 7 are hand-managed in C (they hold custom keycodes like SIDE_MOD, LNK_BLE*). Do not sync these from VIA — the converter turns custom keycodes into KC_NO.

Build

Requires the NuPhy QMK fork at ../qmk_firmware and a qmk venv (../venv). From this folder:

bash build.sh        # copies sources into the keymap tree and runs `qmk compile`

Output: firmware/nuphy_air75_v2_ansi_sinuphy_v0.bin.

Flash

The board flashes natively on Windows via QMK Toolbox (stm32-dfu): enter bootloader, open the .bin in QMK Toolbox, Flash. (Building is done in WSL; no native toolchain needed.)

VIA — edit / backup / restore

NuPhy isn't in the public VIA registry, so load the draft definition once:

  1. Open https://usevia.appSettings → enable Show Design tab.
  2. Design tab → Load Draft Definition → pick via/nuphy-air75-v2-via3.json (V3 definition, VID 0x19F5 / PID 0x3246).
  3. Configure now connects to the board for live editing.
  4. Backup = export a layout JSON; restore = import it. The latest export lives in via/ and on the Desktop, and is the source of truth for the synced layers.

Sync a VIA layout into keymap.c

# Preview only (no writes):
python3 via_json_to_keymap.py --input /path/to/export.layout.json --layers 2,6 --validate-only
# Apply (auto-backs up keymap.c first):
python3 via_json_to_keymap.py --input /path/to/export.layout.json --layers 6

Maps VIA's flat 6×17 matrix → LAYOUT_ansi_84 using the fork's keyboard.json. Only sync VIA-owned layers (2, 6) — never 3/4/5/7.

More

  • docs/VIA_TWEAKS.md — sync-safe tweaks (home-row mods, Space layer-tap, app launchers).
  • docs/HARDWARE_ENCODER.md, docs/HARDWARE_OLED.md — internal hardware-mod specs.

Credits

Derived from QMK Firmware and NuPhy's QMK fork — both GPL-2.0. Keymap, lighting, tooling © the sinuphy author, GPL-2.0-or-later.

About

custom nuphy air keyboard firmware + addon circuit logic

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors