{"id":16219991,"url":"https://github.com/sago35/tinygo-keyboard","last_synced_at":"2025-04-06T15:12:19.348Z","repository":{"id":66369408,"uuid":"576286637","full_name":"sago35/tinygo-keyboard","owner":"sago35","description":"USB HID keyboard firmware for tinygo","archived":false,"fork":false,"pushed_at":"2025-02-28T08:50:31.000Z","size":8592,"stargazers_count":87,"open_issues_count":11,"forks_count":17,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-30T14:11:11.467Z","etag":null,"topics":["atsamd21","atsamd51","firmware","go","golang","hid","keeb","keyboard","nrf52840","rp2040","tinygo","usb","usbhid","vial"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sago35.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2022-12-09T13:14:11.000Z","updated_at":"2025-03-20T07:53:26.000Z","dependencies_parsed_at":"2023-10-12T06:41:43.275Z","dependency_job_id":"1bda57a3-c81d-4530-877d-5f693a9564a9","html_url":"https://github.com/sago35/tinygo-keyboard","commit_stats":{"total_commits":175,"total_committers":3,"mean_commits":"58.333333333333336","dds":"0.011428571428571455","last_synced_commit":"75c716b16505de9fe14ae3a772dc92326fa5a61b"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sago35%2Ftinygo-keyboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sago35%2Ftinygo-keyboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sago35%2Ftinygo-keyboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sago35%2Ftinygo-keyboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sago35","download_url":"https://codeload.github.com/sago35/tinygo-keyboard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247500468,"owners_count":20948880,"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":["atsamd21","atsamd51","firmware","go","golang","hid","keeb","keyboard","nrf52840","rp2040","tinygo","usb","usbhid","vial"],"created_at":"2024-10-10T11:56:47.348Z","updated_at":"2025-04-06T15:12:19.329Z","avatar_url":"https://github.com/sago35.png","language":"Go","funding_links":[],"categories":["Wireless Communication"],"sub_categories":["WASI and WASM Unknown"],"readme":"# USB HID Keyboard firmware for TinyGo\n\n**The API is not yet fixed.**  \n\n![](./img/top.jpg)\n\nThe following are supported.  \n\n* key input\n    * squared matrix scan\n    * matrix scan\n    * duplex-matrix scan\n    * rotary encoder\n    * GPIO\n    * UART\n    * Shifter (tinygo.org/x/drivers/shifter)\n* layer feature by mod key\n* mouse click / mouse wheel\n* support TRRS (UART)\n* support [Vial](https://vial.rocks/)\n    * Keymap\n    * [Layers](https://get.vial.today/manual/layers.html) (MO(x), TO(x))\n    * Matrix testers\n    * [Macros](https://get.vial.today/manual/macros.html)\n    * [Mod-Tap](https://docs.qmk.fm/mod_tap)\n    * [Modifier Keys](https://docs.qmk.fm/feature_advanced_keycodes#modifier-keys)\n    * [Combos](https://get.vial.today/manual/combos.html)\n\n## Microcontrollers\n\nThe following microcontrollers are supported.  \n\n* rp2040\n* nrf52840\n* samd51\n* samd21\n\n## Tutorial\n\n* [tutorial.md](./tutorial.md)\n\n## Additional Resources\n\n* [Create Your Own Keyboard with sago35/tinygo-keyboard (dev.to)](https://dev.to/sago35/create-your-own-keyboard-with-sago35tinygo-keyboard-4gbj)\n* [自作キーボードをTinyGoで作る (Qiita, Japanese)](https://qiita.com/sago35/items/b008ed03cd403742e7aa)\n\n## sgkb-0.4.0\n\n![](./img/sgkb-0.3.0.jpg)\n\n```\n# sgkb-0.4.0\n$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/left/\n$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/right/\n\n# sgkb-0.3.0 or before\n$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/left-0.3.0/\n$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/right/\n```\n\n* files\n    * [./kicad/sgkb](./kicad/sgkb/) for KiCad 7.0\n        * KiCanvas : [sgkb-0.4.0 left](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fsgkb-0.4.0-dev%2Fkicad%2Fsgkb%2Fsgkb)\n        * KiCanvas : [sgkb-0.4.0 right](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fmain%2Fkicad%2Fsgkb-right%2Fsgkb-right)\n        * KiCanvas : [sgkb-0.3.0 left](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fea336a62da237ce1e1972d8fc5d999a584e267c3%2Fkicad%2Fsgkb%2Fsgkb)\n        * KiCanvas : [sgkb-0.3.0 right](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fea336a62da237ce1e1972d8fc5d999a584e267c3%2Fkicad%2Fsgkb-right%2Fsgkb-right)\n\n\n| name | amount |\n| ---- | ------ |\n| Cherry MX / Kailh Choc V1 | 72 |\n| key cap (1u) | 68 |\n| key cap (1.5u) | 1 |\n| key cap (1.75u) | 1 |\n| key cap (2u) | 1 |\n| key cap (ISO-ENTER) | 1 |\n| Stabilizer (2u) | 2 |\n| diode 1N4148 | 72 |\n| xiao-rp2040 | 2 |\n| pin header 1x7 | 4 |\n| TRRS connector | 2 |\n| TRRS cable | 1 |\n\n\n## sg48key\n\n![](./img/sg48key-0.1.0.jpg)\n\n```\ntinygo flash --target xiao --size short --stack-size 8kb ./targets/sg48key/\n```\n\n* files\n    * [./kicad/sg48key](./kicad/sg48key/)\n        * KiCanvas : [sg48key](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fmain%2Fkicad%2Fsg48key%2Fsg48key)\n\n## sgh60\n\n![](./img/sgh60-0.1.0.jpg)\n\n```\ntinygo flash --target waveshare-rp2040-zero --size short --stack-size 8kb ./targets/sgh60/\n```\n\n* files\n    * [./kicad/sgh60](./kicad/sgh60/)\n        * KiCanvas : [sgh60](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fmain%2Fkicad%2Fsgh60%2Fsgh60)\n\n## wiokey-0.1.0\n\n![](./img/wiokey-0.1.0.jpg)\n\n```\n$ tinygo flash --target wioterminal --size short --stack-size 8kb ./targets/wiokey/\n```\n\n* files\n    * [./kicad/wiokey](./kicad/wiokey/) for KiCad 7.0\n        * KiCanvas : [wiokey](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fmain%2Fkicad%2Fwiokey%2Fwiokey)\n\n| name | amount |\n| ---- | ------ |\n| Cherry MX / Kailh Choc V1 | 6 |\n| key cap | 6 |\n| diode 1N4148 | 6 |\n| wioterminal | 1 |\n| pin socket 2x20 | 2 |\n\n## sgkey-0.1.0\n\n![](./img/sgkey-0.1.0.jpg)\n\n```\n$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkey/\n```\n\n* files\n    * [./kicad/sgkey](./kicad/sgkey/) for KiCad 7.0\n        * KiCanvas : [sgkey](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fmain%2Fkicad%2Fsgkey%2Fsgkey)\n* build guide\n    * [./targets/sgkey/README.md](./targets/sgkey/README.md)\n\n| name | amount |\n| ---- | ------ |\n| Cherry MX / Kailh Choc V1 | 6 |\n| key cap | 6 |\n| diode 1N4148 | 6 |\n| xiao-rp2040 | 1 |\n| i2c ssd1306 | 1 |\n| register 10k ohm | 2 |\n\n## fric10key-0.1.0\n\n![](./img/fric10key-0.1.0.jpg)\n\n```\n$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/fric10key/\n```\n\n* files\n    * [./kicad/fric10key](./kicad/fric10key/) for KiCad 7.0\n        * KiCanvas : [fric10key](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fmain%2Fkicad%2Ffric10key%2Ffric10key)\n\n| name | amount |\n| ---- | ------ |\n| Cherry MX / Kailh Choc V1 | 27 |\n| key cap (1u) | 26 |\n| key cap (2u) | 1 |\n| Stabilizer (2u) | 1 |\n| diode 1N4148 | 27 |\n| xiao-rp2040 | 1 |\n\n## xiao-kb01\n\n![](./img/xiao-kb01-0.1.0.jpg)\n\n```\n$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/xiao-kb01/\n```\n\n* files\n    * [./kicad/xiao-kb01](./kicad/xiao-kb01/) for KiCad 7.0\n        * KiCanvas : [xiao-kb01](https://kicanvas.org/?github=https%3A%2F%2Fgithub.com%2Fsago35%2Ftinygo-keyboard%2Ftree%2Fmain%2Fkicad%2Fxiao-kb01%2Fxiao-kb01)\n\n\n## Gopher Badge\n\n![](./img/gopher-badge.jpg)\n\n```\n$ tinygo flash --target gopher-badge --size short --stack-size 8kb ./targets/gopher-badge/\n```\n\n* schema\n    * https://gopherbadge.com/\n\n## GoBadge / PyBadge\n\n```\n$ tinygo flash --target gobadge --size short --stack-size 8kb ./targets/gobadge\n```\n\n* schema\n    * https://learn.adafruit.com/adafruit-pybadge\n\n\n## MacroPad RP2040\n\n![](./img/macropad-rp2040.jpg)\n\n```\n$ tinygo flash --target macropad-rp2040 --size short --stack-size 8kb ./targets/macropad-rp2040/\n```\n\n* schema\n    * https://learn.adafruit.com/adafruit-macropad-rp2040/overview\n\n\n## Restore default keymap\n\nSet the key with the key code of `0x7C03`, and then press it.  \nThen a reset will restore the default keymap.  \nSee [#8](https://github.com/sago35/tinygo-keyboard/pull/8).\n\n## Restore default keymap (tinygo flash)\n\nRestore default keymap each time it is reset by specifying `--tags reset_to_default`.  \nNote that in this setting, any changes made from Vial or other sources will immediately revert to the original setting.  \n\n```\n$ tinygo flash --target wioterminal --size short  --tags reset_to_default ./targets/wiokey\n```\n\n## Note\n\n* Basically, the `--stack-size 8kb` settings is required.\n* If changing the version of tinygo-keyboard causes it to not work properly, please perform the `Restore default keymap` procedure.\n\n## LICENSE\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsago35%2Ftinygo-keyboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsago35%2Ftinygo-keyboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsago35%2Ftinygo-keyboard/lists"}