Skip to content

kolontsov/m8-kbd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

M8-kbd

USB keypad designed for use with the M8 Headless. The layout is inspired by the original Dirtywave M8 tracker.

Not a replacement for the original hardware, but something I put together with spare parts as a way to get hands-on experience with the M8.

Features:

  • 3x3 handwired keyboard matrix (1N4148 diodes)
  • Kailh Choc V1 switches (datasheet), mounted in 13.85x13.85 square holes
  • Raspberry Pico as the keyboard controller
  • Firmware in Rust, based on rp2040-hal, RTIC v1 and Keyberon
  • QMK firmware is also available (new!)
  • Supports both m8.run and m8c keymaps and special functions (see below)
  • Bottom plate also has a mount for Teensy 4.1 (with headers) which runs M8 Headless.

top plate

Keymap

When you press a key, the keyboard sends a code to the host running the M8 display client. The key code sent depends on the keymap that has been selected.

Keymap #1 (for use with m8.run)

Key code M8 function
Arrows Arrows
Shift Shift
Space Play
Z Option
X Edit

Keymap #2 (for use with m8c):

Key code M8 function
Arrows Arrows
Shift Shift
Space Play
A Option
S Edit

The combination of pressing Left and Down simultaneously acts as the Fn key for invoking special functions. Press Left and Down together as the piano chord, and then add the desired key to activate the function.

  • Fn + Right: Toggle between keymaps. The current keymap number is stored in flash memory.
  • Fn + Play: Perform a firmware reset.
  • Fn + Edit: Enter UF2 bootloader mode.

Install and update

The easiest method is to use UF2:

  • download UF2 file from Releases
  • press and hold the BOOTSEL button while connecting your Pico to your computer; it will mount as a mass storage device
  • drag and drop UF2 file onto the board drive

In the future, you can activate UF2 mass-storage mode by pressing Fn + Edit, eliminating the need to use the BOOTSEL button.

For development, using the SWD (Serial Wire Debug) interface is much more convenient. You only need 3 wires: SWDCLK, GND and SWDIO. Connect a Raspberry Pi Debug Probe (which is just Pico with picoprobe firmware) and run make in the M8-kbd directory. It will use probe-rs to do the actual job.

perspective view side view bottom plate matrix

About

RP2040-based USB keypad for M8 Headless

Resources

License

Stars

Watchers

Forks

Packages

No packages published