tinygo-keyboard
USB HID keyboard firmware for tinygo
Go★ 113⑂ 20 forksMITupdated 3 days ago
git clone https://github.com/sago35/tinygo-keyboard.gitsago35/tinygo-keyboardREADME.mdfork it — it’s yours
USB HID Keyboard firmware for TinyGo
The API is not yet fixed.
The following are supported.
- key input
- squared matrix scan
- matrix scan
- duplex-matrix scan
- rotary encoder
- GPIO
- UART
- Shifter (tinygo.org/x/drivers/shifter)
- layer feature by mod key
- mouse click / mouse wheel
- support TRRS (UART)
- support Vial
- Keymap
- Layers (MO(x), TO(x))
- Matrix testers
- Macros
- Mod-Tap
- Modifier Keys
- Combos
Microcontrollers
The following microcontrollers are supported.
- rp2040
- nrf52840
- samd51
- samd21
Tutorial
Additional Resources
sgkb-0.4.0
# sgkb-0.4.0
$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/left/
$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/right/
# sgkb-0.3.0 or before
$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/left-0.3.0/
$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkb/right/
- files
- ./kicad/sgkb for KiCad 7.0
- KiCanvas : sgkb-0.4.0 left
- KiCanvas : sgkb-0.4.0 right
- KiCanvas : sgkb-0.3.0 left
- KiCanvas : sgkb-0.3.0 right
- ./kicad/sgkb for KiCad 7.0
| name | amount |
|---|---|
| Cherry MX / Kailh Choc V1 | 72 |
| key cap (1u) | 68 |
| key cap (1.5u) | 1 |
| key cap (1.75u) | 1 |
| key cap (2u) | 1 |
| key cap (ISO-ENTER) | 1 |
| Stabilizer (2u) | 2 |
| diode 1N4148 | 72 |
| xiao-rp2040 | 2 |
| pin header 1x7 | 4 |
| TRRS connector | 2 |
| TRRS cable | 1 |
sg48key
tinygo flash --target xiao --size short --stack-size 8kb ./targets/sg48key/
- files
- ./kicad/sg48key
- KiCanvas : sg48key
- ./kicad/sg48key
sgh60
tinygo flash --target waveshare-rp2040-zero --size short --stack-size 8kb ./targets/sgh60/
- files
- ./kicad/sgh60
- KiCanvas : sgh60
- ./kicad/sgh60
wiokey-0.1.0
$ tinygo flash --target wioterminal --size short --stack-size 8kb ./targets/wiokey/
- files
- ./kicad/wiokey for KiCad 7.0
- KiCanvas : wiokey
- ./kicad/wiokey for KiCad 7.0
| name | amount |
|---|---|
| Cherry MX / Kailh Choc V1 | 6 |
| key cap | 6 |
| diode 1N4148 | 6 |
| wioterminal | 1 |
| pin socket 2x20 | 2 |
sgkey-0.1.0
$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/sgkey/
- files
- ./kicad/sgkey for KiCad 7.0
- KiCanvas : sgkey
- ./kicad/sgkey for KiCad 7.0
- build guide
| name | amount |
|---|---|
| Cherry MX / Kailh Choc V1 | 6 |
| key cap | 6 |
| diode 1N4148 | 6 |
| xiao-rp2040 | 1 |
| i2c ssd1306 | 1 |
| register 10k ohm | 2 |
fric10key-0.1.0
$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/fric10key/
- files
- ./kicad/fric10key for KiCad 7.0
- KiCanvas : fric10key
- ./kicad/fric10key for KiCad 7.0
| name | amount |
|---|---|
| Cherry MX / Kailh Choc V1 | 27 |
| key cap (1u) | 26 |
| key cap (2u) | 1 |
| Stabilizer (2u) | 1 |
| diode 1N4148 | 27 |
| xiao-rp2040 | 1 |
xiao-kb01
$ tinygo flash --target xiao-rp2040 --size short --stack-size 8kb ./targets/xiao-kb01/
- files
- ./kicad/xiao-kb01 for KiCad 7.0
- KiCanvas : xiao-kb01
- ./kicad/xiao-kb01 for KiCad 7.0
Gopher Badge
$ tinygo flash --target gopher-badge --size short --stack-size 8kb ./targets/gopher-badge/
- schema
GoBadge / PyBadge
$ tinygo flash --target gobadge --size short --stack-size 8kb ./targets/gobadge
MacroPad RP2040
$ tinygo flash --target macropad-rp2040 --size short --stack-size 8kb ./targets/macropad-rp2040/
Restore default keymap
Set the key with the key code of 0x7C03, and then press it.
Then a reset will restore the default keymap.
See #8.
Restore default keymap (tinygo flash)
Restore default keymap each time it is reset by specifying --tags reset_to_default.
Note that in this setting, any changes made from Vial or other sources will immediately revert to the original setting.
$ tinygo flash --target wioterminal --size short --tags reset_to_default ./targets/wiokey
Note
- Basically, the
--stack-size 8kbsettings is required. - If changing the version of tinygo-keyboard causes it to not work properly, please perform the
Restore default keymapprocedure.
LICENSE
MIT
more like this
kurinji
Kurinji Input Map aims to decouple game play code from device specific input api. This is achieved by providing apis th…
Rust★ 51









