Control your ZSA keyboard (Moonlander / Voyager / Ergodox) using the Keymapp API (Protobuf) in Python.
See also a Talon implementation https://github.com/ohare93/zsa-keymapp-talon for voice and foot-pedal control of your keyboard layers.
This repo uses poetry as a package manager and Python 3.12 (though older versions may work fine).
- Install the dependencies in the pyproject.toml
poetry install
- Generate the Protobuf API code from the keymapp.proto file
poetry run python -m grpc.tools.protoc -I. --proto_path . --python_out . --mypy_out . --grpc_python_out . ./protos/*.proto
Any .proto files in the protos/ folder will be used for generation.
Ensure your Keymapp API is enabled in the application,
Run it:
poetry run python keymapp.py
This will change the keyboard layer to the 2nd layer (layer 1!). Change the code in keymapp.py to do whatever you like 🎉 Set the layer, increase the brightness, change led colours in your keyboard. See protos/keymapp.proto for the valid endpoints.
See also:
- Kontroll a command-line tool written in Rust to interact with the Keymapp API. (Where the keymapp.proto file was taken from)