This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 1.0.1 instead.
Reason given by maintainers: Made remote display reconnection more robust in 1.0.1
enigma (host library)
The Python side of Enigma: it enumerates the USB-HID boards, applies JSON configs (control names, LED schemes, thresholds), reads control-state changes, drives indicator LEDs, and publishes state to companion displays over WebSocket.
Install
pip install .
That pulls the core runtime dependencies: hid and pyusb (USB-HID access) and
python-socketio[asyncio_client] (which brings in aiohttp) for the WebSocket
client that publishes spec values to displays.
Two optional extras add subsystem-specific dependencies, installed only if you ask for them:
| Command | Adds | For |
|---|---|---|
pip install .[audio] |
pyaudio, soundfile, pydub |
audio playback (music, voice, ambient, alerts) |
pip install .[display] |
flask, flask-socketio |
the Flask companion-display server |
pip install .[audio,display] |
both of the above | audio + displays |
The audio packages have native prerequisites (PyAudio needs PortAudio), so they are kept out of the base install for anyone who only wants control-surface and display functionality.
How it works
EnigmaManager owns the boards and the displays. You hand it a ConfigManager
pointed at your JSON config directory; it reads the configs, brings up every
connected board, and from then on each update() tick polls hardware, runs your
device logic, drives the indicator LEDs, and pushes changed spec values to any
connected displays.
For a runnable end-to-end version, see examples/engine-sw/.
Package layout
| Module | What it is | Interface reference |
|---|---|---|
enigma/manager.py |
EnigmaManager: top-level orchestrator for boards + displays |
Manager |
enigma/config.py |
ConfigManager: loads and validates the JSON configs |
ConfigManager |
enigma/device.py |
spec / published-value base classes (the shared state model) | Device, specs |
enigma/panelmanager.py |
panel/control lifecycle across boards | Panel |
enigma/displaymanager.py |
WebSocket display publishing + inbound events | DisplayManager |
enigma/hid_protocol.py |
the board wire protocol | HID protocol |
enigma/colors.py |
print_error / print_warning / brightness helpers |
- |
enigma/boards/ |
per-board drivers: SW14, QD04, AN08, plus Thrustmaster and G Pro | New board handler |
enigma/audio/ |
the layered audio engine (optional [audio] extra) |
Audio, usage |
enigma/tools/ |
code generators and command-line utilities (below) | Code generation |
enigma/docs/ |
full documentation | docs index |
The generated control classes (EngineControl etc.) aren't a module here: they
are produced from the configs; their interface is the Control
reference.
Code generation
The Spec, control, and audio classes your code imports are generated from the JSON configs. Regenerate after editing any config:
./mk.sh
mk.sh is a convenience wrapper over the three generators in
enigma/tools/; see CODE_GENERATION.md
for what each one does and the switches they take. The generators emit both
Python code and reference docs.
Command-line tools
In enigma/tools/:
enigma_cli.py: inspect and exercise connected boards from a shellhid_monitor.py: watch raw HID traffic to and from a boardgenerate_controls.py/generate_devices.py/generate_audio.py: the code generators (mk.shruns all three)gpro-daemon-*.sh: build, install, and manage the G Pro keyboard daemon
Documentation
Full reference documentation lives in enigma/docs/. Start with
the design guide, then:
- Board configuration: SW14, QD04, AN08
- Device specs and control mappings
- Audio configuration and audio usage
- Displays: development, WebSocket protocol
- HID wire protocol
- API reference: Manager, Panel, Device, Control, Audio
Example
examples/engine-sw/ is a complete end-to-end slice: a Python
app that defines a spec and publishes values, its JSON board and display config,
a Flask browser display, and a Unity receiver. See examples/.
Elsewhere in the repo
- Repository overview: what Enigma is, top-level map
- Firmware: the C/C++ that runs on the boards
- Hardware: the PCB designs
License
MIT; see the repository root LICENSE. Source files carry SPDX
identifiers.
Metadata
Release files for enigma-console 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| enigma_console-1.0.0.tar.gz | 120.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| enigma_console-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 257.8 kB
Release files / enigma_console-1.0.0.tar.gz
| Download URL | enigma_console-1.0.0.tar.gz |
|---|---|
| Size | 120.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3863f6f2b49ea04063762e9a2d4729836e0961b6808e1477f6af855a862eaf70
|
|
BLAKE2b-256 checksum How to use checksums |
c698f0c197870667c7b2ee00dc20bd0dd456fada0346dc6be88567534ddad785
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / enigma_console-1.0.0-py3-none-any.whl
| Download URL | enigma_console-1.0.0-py3-none-any.whl |
|---|---|
| Size | 137.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
399164b4f235741424dbda1908803260e1a6728411d6837e15caf1f90ca4a8e2
|
|
BLAKE2b-256 checksum How to use checksums |
28837ba343db542fb26df63347615a0e490e5984ade00775258a5e04e7700996
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|