Skip to content

sago35/tinygo-keyboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 28, 2025
8ed23dd · Feb 28, 2025
Feb 20, 2024
Aug 23, 2023
Dec 26, 2023
Feb 28, 2025
Dec 26, 2023
Feb 14, 2025
Dec 7, 2024
Dec 26, 2023
Nov 20, 2024
Dec 12, 2022
Nov 19, 2024
Dec 18, 2024
Jan 3, 2025
Sep 1, 2023
Nov 19, 2024
Nov 19, 2024
Jan 30, 2024
Jul 31, 2024
Jan 30, 2024
Jan 30, 2024
Feb 29, 2024
Jan 16, 2024
Dec 12, 2024
Jan 16, 2024
Feb 27, 2025
Feb 12, 2025
Apr 17, 2023
May 18, 2023
Sep 14, 2023
Sep 8, 2023
Feb 12, 2025

Repository files navigation

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