Skip to content

Latest commit

 

History

History
64 lines (45 loc) · 3.38 KB

README.md

File metadata and controls

64 lines (45 loc) · 3.38 KB

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