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
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/
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/
sgh60

tinygo flash --target waveshare-rp2040-zero --size short --stack-size 8kb ./targets/sgh60/
wiokey-0.1.0

$ tinygo flash --target wioterminal --size short --stack-size 8kb ./targets/wiokey/
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/
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/
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/
Gopher Badge

$ tinygo flash --target gopher-badge --size short --stack-size 8kb ./targets/gopher-badge/
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 8kb
settings is required.
- If changing the version of tinygo-keyboard causes it to not work properly, please perform the
Restore default keymap
procedure.
LICENSE
MIT