138 lines
6.7 KiB
Markdown
138 lines
6.7 KiB
Markdown
# CMDR keyboard 42 (swedish layout)
|
||
|
||
*This HW(PCB) was original made for use with the TeensyLC module and is reused by patching it to fit the rp2040-zero module*
|
||
|
||

|
||
|
||
## Layout
|
||
|
||
```text
|
||
Layer 0
|
||
--------------------------------------- ---------------------------------------
|
||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Å |
|
||
| LCtrl | A | S | D | F | G | | H | J | K | L | Ö | Ä |
|
||
| Shift | Z | X | C | V | B | | N | M | ,; | .: | -_ | Shift |
|
||
--------------------| Alt | Fn | Spc | |Enter| Fn |AG+Fn|--------------------
|
||
------------------- -------------------
|
||
Layer 1 (Fn)
|
||
--------------------------------------- ---------------------------------------
|
||
| Esc | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | BSpc |
|
||
| LCtrl | 1! | 2"@ | 3#£ | 4¤$ | 5% | | 6& | 7/{ | 8([ | 9)] | 0=} | Enter |
|
||
| Shift | 6& | 7/{ | 8([ | 9)] | 0=} | | <>| | ´`± | '*´ | ¨^~ | +?\ | Shift |
|
||
--------------------| Alt | Fn | Spc | | BSpc| Fn |AG+Fn|--------------------
|
||
------------------- -------------------
|
||
Layer 2 (Fn + Fn)
|
||
--------------------------------------- ---------------------------------------
|
||
| Esc | F11 | F12 | F13 | F14 |PrSrc| | § | SLk | Gui | OSLk| CpLk| BSpc |
|
||
| LCtrl | F15 | F16 | F17 | F18 | F19 | | Left| Down| Up |Right| Del | Enter |
|
||
| Shift | F20 | F21 | F22 | F23 | F24 | | Home| PgD | PgU | End | Ins | Shift |
|
||
--------------------| Alt | Fn | Spc | | BSpc| Fn |AG+Fn|--------------------
|
||
------------------- -------------------
|
||
```
|
||
|
||
## Features
|
||
|
||
- 42 keys "Split" keyboard layout. 36 finger buttons and 6 thumb buttons.
|
||
- Extreme low profile (only one pcb).
|
||
- Cost efficient solution with one pcb and one 3D printed cover.
|
||
- Function layers provide three active maps (primary + two Fn layers) with sticky-lock support.
|
||
- High-speed key scanning: 250 µs cadence with enhanced 5-scan debounce (1.25ms) and anti-bounce protection to prevent double characters.
|
||
- Status indication driven by the joystick-style heartbeat model:
|
||
- Heartbeat green while waiting for USB enumeration.
|
||
- Solid green during normal operation; automatic heartbeat idle animation after 5 s inactivity.
|
||
- Blue solid / flashing when sticky lock is armed / latched.
|
||
- Red solid on firmware error, red flashing for Caps Lock.
|
||
- LED turns off during USB suspend for power savings.
|
||
- Power management for USB suspend/resume:
|
||
- Automatic power saving when USB host suspends device.
|
||
- Reduced key scanning frequency (20x slower) during suspend.
|
||
- Wake-on-input detection for any key press.
|
||
- Immediate resume response when keys are pressed.
|
||
|
||
|
||
## Build environment rp2040 Zero
|
||
|
||
Rust embedded, rp2040 HAL
|
||
|
||
- Cargo (cargo.toml)
|
||
- rustup target add thumbv6m-none-eabi
|
||
- cargo install elf2uf2-rs --locked
|
||
- Flashing via rp2040 USB bootloader
|
||
- Pressing reset/boot button on rp2040 Zero board
|
||
- Pressing upper left corner on the keyboard when connecting the usb cable
|
||
|
||
## Hardware
|
||
[Schematics](eCAD/cmdr_mainboard_42_v1.pdf)
|
||
[patch instruction](/eCAD/rp2040_42_patch_instruction.md)
|
||
|
||
- 1x rp2040 Zero
|
||
- 36x Cherry MX compatible switches
|
||
- 6x Kailh Choc low profile switches
|
||
- 42x 1N4148 diodes
|
||
- 1x PCB [Gerber files](eCAD/cmdr_mainboard_42_gerber_v1.zip) (please see [patch instructions](/eCAD/rp2040_42_patch_instruction.md))
|
||
- 1x MCU cover [STL file](mCAD/cmdr_keyboard_42_cover.stl)
|
||
- 1x 6x3 Cherry MX mounting jig (optional) [STL file](mCAD/cmdr_mounting_jig-MountingJig.stl)
|
||
|
||
***
|
||
|
||
# CMDR keyboard 51 (only in concept phase)
|
||
|
||

|
||
|
||
## Layout
|
||
|
||
```text
|
||
Layer 0
|
||
-------------------------------------- ------ ------ --------------------------------------
|
||
| Tab | Q | W | E | R | T || SLk | |PrSrc|| Y | U | I | O | P | Å |
|
||
| LCtrl | A | S | D | F | G || M2 | | M5 || H | J | K | L | Ö | Ä |
|
||
| Shift | Z | X | C | V | B || M3 |-----| M6 || N | M | ,; | .: | -_ | Shift |
|
||
--------------------| Alt | Fn | Spc || BSpc| Gui |Enter|| Spc | Fn |AG+Fn|--------------------
|
||
------------------ ----------------- ------------------
|
||
Layer 1 (Fn)
|
||
-------------------------------------- ------ ------ --------------------------------------
|
||
| Esc | F1 | F2 | F3 | F4 | F5 || M1 | | M4 || F6 | F7 | F8 | F9 | F10 | BSpc |
|
||
| LCtrl | 1! | 2"@ | 3#£ | 4¤$ | 5% || M2 | | M5 || 6& | 7/{ | 8([ | 9)] | 0=} | Enter |
|
||
| Shift | 6& | 7/{ | 8([ | 9)] | 0=} || M3 |-----| M6 || <>| | ´`± | '*´ | ¨^~ | +?\ | Shift |
|
||
--------------------| Alt | Fn | Spc || BSpc| Gui |Enter|| Spc | Fn |AG+Fn|--------------------
|
||
------------------ ----------------- ------------------
|
||
Layer 2 (Fn + Fn)
|
||
-------------------------------------- ------ ------ --------------------------------------
|
||
| Esc | F11 | F12 | F13 | F14 | || M1 | | M4 || § | SLk | | | CpLk| BSpc |
|
||
| LCtrl | F15 | F16 | F17 | F18 | F19 || M2 | | M5 || Left| Down| Up |Right| Del | Enter |
|
||
| Shift | F20 | F21 | F22 | F23 | F24 || M3 |-----| M6 || Home| PgD | PgU | End | Ins | Shift |
|
||
--------------------| Alt | Fn | Spc || BSpc| Gui |Enter|| Spc | Fn |AG+Fn|--------------------
|
||
------------------ ----------------- ------------------
|
||
```
|
||
|
||
## Features
|
||
|
||
- 51 keys "Split" keyboard layout. 36 finger buttons, 9 thumb buttons and 6 function buttons.
|
||
- Extreme low profile (only one pcb).
|
||
- Cost efficient solution with one pcb and one 3D printed cover.
|
||
- Function layers with the same immediate-report, low-latency scanning pipeline as the 42-key variant (primary + two Fn layers with sticky lock).
|
||
- Status LED behaviour mirrors the joystick/42-key firmware: heartbeat during boot, idle animation after 5 s inactivity, blue indicators for sticky lock, and red for caps/error conditions.
|
||
|
||
## Build environment rp2040 Zero
|
||
|
||
Rust embedded, rp2040 HAL
|
||
|
||
- Cargo (cargo.toml)
|
||
- rustup target add thumbv6m-none-eabi
|
||
- cargo install elf2uf2-rs --locked
|
||
- Flashing via rp2040 USB bootloader
|
||
- Pressing reset/boot button on rp2040 Zero board
|
||
- Pressing upper left corner on the keyboard when connecting the usb cable
|
||
|
||
## Hardware
|
||
|
||
[Schematics](eCAD/cmdr_mainboard_52_v1.pdf)
|
||
|
||
- 1x rp2040 Zero
|
||
- 45x Cherry MX compatible switches
|
||
- 6x Kailh Choc low profile switches
|
||
- 51x 1N4148 diodes
|
||
- 1x PCB [Gerber files](eCAD/cmdr_mainboard_51_gerber_v1.zip)
|
||
- 1x MCU cover (TBD)
|
||
- 1x 6x3 Cherry MX mounting jig (optional) [STL file](mCAD/cmdr_mounting_jig-MountingJig.stl)
|