{"id":24635078,"url":"https://github.com/ohare93/zsa-keymapp-talon","last_synced_at":"2026-05-20T06:02:23.456Z","repository":{"id":273731323,"uuid":"920671684","full_name":"ohare93/zsa-keymapp-talon","owner":"ohare93","description":"Control your ZSA keyboard using the Keymapp API in Talon.","archived":false,"fork":false,"pushed_at":"2025-02-07T10:58:33.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-19T01:57:56.898Z","etag":null,"topics":["ergodox","keymapp","moonlander","poetry","protobuf","python","talon","talonvoice","voyager","zsa"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ohare93.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-22T15:16:30.000Z","updated_at":"2025-02-07T10:58:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"265df432-3b65-4b98-9ab4-a809828419a1","html_url":"https://github.com/ohare93/zsa-keymapp-talon","commit_stats":null,"previous_names":["ohare93/zsa-keymapp-talon"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohare93%2Fzsa-keymapp-talon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohare93%2Fzsa-keymapp-talon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohare93%2Fzsa-keymapp-talon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohare93%2Fzsa-keymapp-talon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ohare93","download_url":"https://codeload.github.com/ohare93/zsa-keymapp-talon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244574781,"owners_count":20474818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ergodox","keymapp","moonlander","poetry","protobuf","python","talon","talonvoice","voyager","zsa"],"created_at":"2025-01-25T09:14:21.224Z","updated_at":"2026-05-20T06:02:23.403Z","avatar_url":"https://github.com/ohare93.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zsa-keymapp-talon\n\nControl your ZSA keyboard (Moonlander / Voyager / Ergodox) using the [Keymapp](https://www.zsa.io/flash) API (Protobuf) in Talon (https://talon.wiki/)\n\n🗣 Say `layer two` to switch to that layer. `layer reset` to be back on the default. Can make your own voice command `layer numbers` or `layer symbols` with ease.\n\n👞 Best enjoyed with a foot pedal ([supported by talon](https://talon.wiki/quickstart/hardware/#foot-pedals\n)) to be on a layer while holding the pedal down\n\n# Installation\n\n1. Clone this repo into your talon user folder (`~/AppData/Roaming/talon/user`)\n\n2. Install grpc into your talon virtual environment\n\n```shell\ncd ~/AppData/Roaming/talon/venv/3.13/Scripts\npip install grpcio\n```\n\n3. Restart Talon\n\n# Usage\n\nEnsure your Keymapp API is enabled in the application,\n\n![](./assets/keymapp-settings.png)\n\n## keymapp.talon file\n\nSay `layer two` to switch to the 2nd layer (layer number 1, 0 is first)\n\n### Making your own talon usage\n\nTrigger the layer change by using the `set_keymapp_layer` function in a .talon file.\n\nSwitch between layer 1 and 2 using a foot pedal:\n\n```\ndeck(pedal_middle:down): user.set_keymapp_layer(1)\ndeck(pedal_middle:up): user.set_keymapp_layer(0)\n```\n\n# Notes\n\nSee also https://github.com/ohare93/zsa-keymapp-python/ for a non Talon implementation\n\n## Generating the grpc files\n\nNo need to do this, since the generated files are included in this repo. But for the sake of documentation here is how they were generated:\n\n```shell\npoetry run python -m grpc.tools.protoc -I. --proto_path . --python_out . --mypy_out . --grpc_python_out . ./protos/*.proto\n```\n\nYou will also need to install the following, the same way as the `grpcio` package:\n\n```shell\npip install grpcio-tools mypy-protobuf\n```\n\nA manual edit was made in the generated `keymapp_pb2_grpc.py` file. Adding `from .` to the import statement of the other generated file on line 6.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohare93%2Fzsa-keymapp-talon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fohare93%2Fzsa-keymapp-talon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohare93%2Fzsa-keymapp-talon/lists"}