Skip to content

About

Make UE skins for the Finalmouse Centerpiece Pro (CPPRO)

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

CPPRO UE Skins

An independent, experimental authoring kit for original interactive Unreal Engine skins on the Finalmouse Centerpiece Pro.

This repository packages the useful result of the work—not the lab notebook. It contains a minimal UE4.27 project, a clean-room SkinApi authoring stub, the physically calibrated key layout, designer tools, and complete device-tested examples. It does not contain captures, firmware, vendor software, extracted official skins, exploratory probes, or private development artifacts.

This is not an official Finalmouse SDK. Custom PAK loading is experimental and can reset a skin slot if a build crashes. Keep another known-good slot available and use a nonessential slot while developing.

Keyfield A2 layout preview

Koi Pond background

Skins available

Skin Type What it demonstrates Download and documentation
Keyfield A2 Interactive app shell All 68 mapped keys, press/release effects, palettes, readable display regions, and Ready/Live/Paused states Keyfield A2
Keyfield Pulse Daily interactive skin Clean always-live key lights, hold-sensitive releases, three-stage waves, and a persistent Caps indicator Keyfield Pulse
Moodfield Adaptive living surface Persistent typing geography, compact-pattern recognition, active/retained/afterglow phases, and Caps state Moodfield
Mender Swarm Living repair simulation Twelve animated micro-machines, persistent key damage, four concurrent repair crews, physics, and Caps state Mender Swarm
Night Shift Ambient city simulation Service craft, layered night traffic, persistent calls, four concurrent crews, and Caps state Night Shift
Midnight Conveyor Ambient factory simulation Four moving production lines, parcel jobs, sorter-bot crews, and Caps state Midnight Conveyor
Circuit Stunt Show Kinetic arcade simulation Neon riders, flowing circuit traces, persistent stunt sites, four crews, and Caps state Circuit Stunt Show
Koi Pond Living physics sandbox Full-screen artwork, animated koi, continuous swimming, water ripples, and key-position physics impulses Koi Pond
Koi Pond: Caps Indicator Stateful utility skin Koi Pond plus a session-local Caps Lock indicator with a persistent, edge-latched toggle Koi Pond: Caps Indicator

Each example includes its exact release PAK and SHA-256 checksum. Koi Pond, Mender Swarm, Night Shift, Midnight Conveyor, and Circuit Stunt Show also include their original artwork, generated animation frames, art-preparation tools, editable UE4.27 assets, and canonical source-map snapshots. Browse the complete examples index for controls and source contents.

Desktop skin loader

CPPRO Skin Loader is the dead-simple desktop path: choose a developer skin or local .pak, choose slot 1–5, and send it to the keyboard. Windows is physically confirmed; Linux/WSL and Apple Silicon and Intel macOS candidates share the same protocol implementation and packaging pipeline.

The application retrieves its library when it opens and whenever Refresh is pressed, so newly published skins appear without an application update. The library is scrollable and sortable by newest, A–Z, or GitHub Release download count. Download the current cross-platform candidate from the v0.2.0-beta.2 prerelease.

New examples follow one documented skin library standard. A generator validates their metadata, PAK version, checksum, and release information, then produces the catalog consumed by the application.

What works

  • UE4.27 Android ASTC content packaged as PAK version 11.
  • Canonical entry map /Game/map/M_EntryPoint.
  • 1920×550 device viewport.
  • All 68 physically mapped key regions.
  • SkinApi OnKeyEvent(HCode, IsActuated, Percentage) binding.
  • Reliable per-key press and release edges.
  • Bounded UMG animation, pooled key effects, and application states.
  • Hybrid UMG/physics scenes with animated actors and key-position impulses.
  • CPU and GPU Niagara systems, including pooled components and custom particle materials.
  • Readable content in the keyboard's key-free display regions.
  • Direct, explicit PAK upload to slots 1–5.

The installed device runtime currently reports Percentage=100 for a press; continuous analog depth is not available to the skin callback. The keyboard's analog travel is visible in host-side USB traffic, but that does not imply that the Android Unreal runtime forwards it to OnKeyEvent. Design device skins around IsActuated, hold duration, cadence, and accumulated state unless later firmware proves otherwise.

Repository map

Path Purpose
project/ Minimal editable UE4.27 spark project and SkinApi stub
examples/keyfield-a2/ App-state and calibrated keyfield example
examples/keyfield-pulse/ Clean always-live keyfield skin with Caps state
examples/moodfield/ Adaptive substrate with rolling spatial memories and pattern modes
examples/mender-swarm/ Living synthetic surface with damage and concurrent repair crews
examples/night-shift/ Layered miniature city with service craft and persistent calls
examples/midnight-conveyor/ Automated sorting floor with parcel jobs and bot crews
examples/circuit-stunt-show/ Circuit-board stunt arena with animated rider crews
examples/koi-pond/ Living physics scene, original art, source map, and PAK
examples/koi-pond-caps-indicator/ Koi Pond variant with a persistent Caps Lock toggle
examples/SKIN_STANDARD.md Contract and checklist for publishing a library skin
catalog/skins.json Generated catalog consumed by the Windows loader
apps/windows-loader/ Cross-platform skin library and slot loader
layout/ Calibrated display geometry and native index map
schemas/ JSON contracts for skins, profiles, and themes
tools/build-skin-catalog.py Validate examples and generate the loader catalog
tools/cppro_skin_kit.py Validate, preview, and lock designer inputs
tools/build-pak.ps1 Cook Android ASTC and create a slot-compatible PAK
tools/verify-pak.ps1 Check integrity, mount layout, map, and SHA-256
tools/cppro_upload.py Dry-run-by-default slot installer
reference/runtime/ Dependency-free input/state/profile reference model
docs/ Setup, authoring, packaging, input, and safety guides

Quick start

Requirements:

  • Windows 10/11
  • Unreal Engine 4.27
  • UE4.27 Android toolchain configured for Android ASTC cooking
  • PowerShell 5.1 or newer
  • Python 3.10+; pywinusb is needed only for uploading

Clone and validate the included design:

git clone https://github.com/LeiterConsulting/cppro-ue-skins.git
cd cppro-ue-skins

python tools/cppro_skin_kit.py validate `
  examples/keyfield-a2/manifest/skin.json

python tools/cppro_skin_kit.py preview `
  examples/keyfield-a2/manifest/skin.json `
  --out artifacts/keyfield-a2.svg

python -m unittest discover -s reference/runtime -v

Open project/spark.uproject in UE4.27. The included startup map launches Keyfield A2. Duplicate the A2 actor/widget into a new content folder, edit the copy, place it in /Game/map/M_EntryPoint, and keep that canonical map path.

Build:

./tools/build-pak.ps1 `
  -EngineRoot 'D:\Epic Games\UE_4.27' `
  -OutPak '.\artifacts\my_skin.pak'

Verify:

./tools/verify-pak.ps1 `
  -Pak '.\artifacts\my_skin.pak' `
  -EngineRoot 'D:\Epic Games\UE_4.27'

Upload only after reviewing the safety guide:

python -m venv .venv
./.venv/Scripts/pip.exe install -r requirements.txt

# Dry run: prepares and describes the transfer without touching the keyboard.
./.venv/Scripts/python.exe tools/cppro_upload.py `
  --slot 5 --pak .\artifacts\my_skin.pak

# Explicit device write.
./.venv/Scripts/python.exe tools/cppro_upload.py `
  --slot 5 --pak .\artifacts\my_skin.pak --send --activate

Start with Getting Started, then read the Authoring Guide and Safety and Compatibility. Particle-effect authors should also read the Niagara guide.

Keyfield A2

The included example PAK was physically accepted and remained stable while typing. It starts in Ready, Enter begins/resumes, Escape pauses, Backspace resets, and Tab cycles palettes. Its exact SHA-256 is:

639F4258E74B0230C37D7F62F8AB541D6B8E829CAC6CA1D19A7E5E36D4BDFDA4

See examples/keyfield-a2/README.md.

Keyfield Pulse

Keyfield Pulse is a clean, always-live interpretation of the proven Keyfield effects. It removes A2's calibration and app-shell UI while retaining all 68 mapped key lights, hold-sensitive release pads, and three-stage waves. A session-local, edge-latched orange layer provides a visible Caps Lock state.

Its exact device-tested PAK, editable UE4.27 assets, canonical map snapshot, manifest, preview, and checksum are included. See examples/keyfield-pulse/README.md.

Koi Pond

Koi Pond is a full-keyboard ambient physics sandbox. Six animated koi roam over an underwater scene; every physical key produces a three-stage water ripple and an impulse at that key's calibrated position. The example demonstrates shared sprite animation, persistent steering, world-to-UMG synchronization, bounded physics, and crop-safe full-viewport artwork.

Its exact release PAK, editable UE4.27 assets, canonical map snapshot, ChatGPT-created source artwork, generated animation frames, and reproduction tool are included. See examples/koi-pond/README.md.

Moodfield

Moodfield converts timing and spatial usage into a persistent full-screen substrate. Ordinary typing builds a weighted geography from six slow alpha-row memories, while compact control clusters and a fast WASD path create focused regional moods. Individual presses deform the same surface instead of drawing detached key rectangles.

The included release adds an active-to-afterglow lifecycle, progressive re-engagement after pauses, honest number-row and arrow-mode limitations, and the session-local Caps indicator. Its exact PAK, runtime overlay, canonical map, generated material source, Blueprint authoring library, manifest, preview, checksum, and architecture guide are included. See examples/moodfield/README.md.

Koi Pond: Caps Indicator

This additional example retains the complete Koi Pond experience and adds an orange translucent state layer under the physical Caps Lock key. A dedicated integer state and press-edge latch make the indicator alternate once per physical press even when the analog keyboard repeats actuated reports while a key is held.

The state is device-session-local: the confirmed callback does not expose the host operating system's lock state or composed characters. See examples/koi-pond-caps-indicator/README.md.

License and support

This is an early community authoring surface built from confirmed behavior, not a vendor-supported compatibility promise. It is provided free of charge and without warranty or support.

Original project code, documentation, manifests, tooling, and example artwork are open source under the MIT License. You may use, modify, redistribute, sublicense, or sell copies subject to the license's short notice requirement. Third-party technology and trademarks remain subject to their own terms; see NOTICE.md.

About

Make UE skins for the Finalmouse Centerpiece Pro (CPPRO)

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages