A column staggered ortholinear keyboard powered by the Raspberry Pi Pico running Rust!
- Mouse Input
- Multiple layers
- 1 kHz polling rate
- One-shot modifiers
Typing_Test.mp4
Pre-built uf2
is available at releases
Otherwise to build from source:
- Install rust
- Download the toolchain for the
thumbv6-none-eabi
(ARM Cortex-M0+) target
rustup target add thumbv6-none-eabi
- Build the firmware elf
cargo build --release
- Converting elf to uf2 using elf2uf2-rs
cargo install elf2uf2-rs
elf2uf2-rs target/thumbv6-none-eabi/release/egboard egboard.uf2
- A new
egboard.uf2
file should be created
- Enter the pico into bootloader mode by holding the
Bootsel
button - Mount the pico's mass storage to the PC's file system (should be done automatically in most Operating Systems)
- Copy the
firmware.uf2
file to the mounted location
The hardware files required to generate the top and bottom plates can be found here
Part | Quantity | Description |
---|---|---|
Raspberry Pi Pico | 1 | Microcontroller that powers the whole thing |
M3 screw | 40 | Used to mount the top and bottom plates together |
M2 screw | 4 | Used to mount the raspberry pi pico to the top plate |
M3 standoff | 20 | Provide spacing between the top and bottom plate to house the electronics |
Switch | 38 | Key switches mounted to the top plate (both 3-pin and 5-pin work) |
Keycaps | 38 | Keycaps for the switches |
Diodes | 38 | Required to achieve n-key rollover |
USB Cable | 1 | Used to connect the pico to the computer |
Bump Switch (optional) | 1 | Used to get the board to bootloader mode |
Connect the switches in a 10x4
matrix with the following layout:
NOTE: The above picture shows the layout from top side, flip it horizontally when doing the wiring with the board upside down.
The diodes should be connected in Column to Row
ordering i.e the cathode
of the diode (the side with the line) should be facing away from the keys and the cathode
of the diodes in same row should all be connected.
The anode
of the diodes should each connect to one pin of the switch and the other pin should be connected straight with all the pins of switches in same column.
For wiring the Raspberry Pi Pico, the indexing used in wiring diagram above correspond to the pico's pinout as follows:
Row | 0 | 1 | 2 | 3 |
---|---|---|---|---|
Pin | 0 | 1 | 2 | 3 |
Column | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
Pin | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 |
The keymap for the board is specified in default_keymap.rs
file.
Each Keymap
can include upto 256 Layers
which are added using the add_layer
method.
Each Layer
comprises of a 30 element array for the finger cluster and 8 element array for the thumb clusters.