A column staggered ortholinear keyboard powered by the Raspberry Pi Pico running Rust!
https://github.com/ArchUsr64/egboard/assets/83179501/ff6934fe-465e-4626-92a0-021e62bb25d1
Pre-built uf2 is available at releases
Otherwise to build from source:
1. Install rust
2. Download the toolchain for the thumbv6-none-eabi(ARM Cortex-M0+) target
rustup target add thumbv6-none-eabi
3. Build the firmware elf
cargo build --release
4. Converting elf to uf2 using elf2uf2-rs
cargo install elf2uf2-rs
elf2uf2-rs target/thumbv6-none-eabi/release/egboard egboard.uf2
5. A new egboard.uf2 file should be created
Bootsel buttonfirmware.uf2 file to the mounted locationThe 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.
$ claude mcp add egboard \
-- python -m otcore.mcp_server <graph>