finalizing rmk article.
This commit is contained in:
parent
292f9635db
commit
bc2eac981c
|
@ -1,7 +1,7 @@
|
||||||
+++
|
+++
|
||||||
title = "Rust on the Ferris Sweep"
|
title = "Rust on the Ferris Sweep"
|
||||||
date = 2025-03-25T17:28:15+01:00
|
date = 2025-03-29T13:06:15+01:00
|
||||||
draft = true
|
draft = false
|
||||||
[cover]
|
[cover]
|
||||||
image = "keyboard-with-rust"
|
image = "keyboard-with-rust"
|
||||||
+++
|
+++
|
||||||
|
@ -14,7 +14,7 @@ it felt only fitting that I flash it with RMK.
|
||||||
Since I first built it, my Ferris Sweep has been running [QMK](https://qmk.fm/),
|
Since I first built it, my Ferris Sweep has been running [QMK](https://qmk.fm/),
|
||||||
a very mature C-based keyboard firmware.
|
a very mature C-based keyboard firmware.
|
||||||
QMK is a great project, and doing basic keymaps for an already-supported keyboard is straightforward and well-documented.
|
QMK is a great project, and doing basic keymaps for an already-supported keyboard is straightforward and well-documented.
|
||||||
However if you are designing your own keyboard, or want to use certan advanced QMK features,
|
However if you are designing your own keyboard, or want to use certain advanced QMK features,
|
||||||
you wont be able to use QMKs JSON-based 'data driven' features.
|
you wont be able to use QMKs JSON-based 'data driven' features.
|
||||||
Instead, you will have to use its C macro based configuration,
|
Instead, you will have to use its C macro based configuration,
|
||||||
which can be daunting and may require understanding QMKs complex build system.
|
which can be daunting and may require understanding QMKs complex build system.
|
||||||
|
@ -61,7 +61,7 @@ but I wasn't doing anything fancy enough to justify that.
|
||||||
|
|
||||||
The first part of the `keyboard.toml` contains some basic metadata about your keyboard,
|
The first part of the `keyboard.toml` contains some basic metadata about your keyboard,
|
||||||
like its name, USB ID, and what microcontroller it uses.
|
like its name, USB ID, and what microcontroller it uses.
|
||||||
I lifted all this info from [QMK's Ferris Sweep info.json](https://github.com/gabevenberg/qmk_firmware/blob/personal/keyboards/ferris/sweep/info.json) for consistencies sake.
|
I lifted all this info from [QMK's Ferris Sweep info.json](https://github.com/gabevenberg/qmk_firmware/blob/personal/keyboards/ferris/sweep/info.json) for the sake of consistency.
|
||||||
|
|
||||||
Then I had to configure the pin mappings, defining which pin correspond to each key (in the Ferris Sweeps case, as it is a direct wire, where each pin corresponds to exactly 1 key),
|
Then I had to configure the pin mappings, defining which pin correspond to each key (in the Ferris Sweeps case, as it is a direct wire, where each pin corresponds to exactly 1 key),
|
||||||
or defining which pins correspond to rows and columns of the keyboard matrix (in the case of most larger keyboards.)
|
or defining which pins correspond to rows and columns of the keyboard matrix (in the case of most larger keyboards.)
|
||||||
|
@ -92,7 +92,7 @@ My [keymap](https://github.com/gabevenberg/qmk_firmware/blob/personal/keyboards/
|
||||||
other than its extensive use of layers and tap-hold Keybinds.
|
other than its extensive use of layers and tap-hold Keybinds.
|
||||||
(keybinds that do a different thing on being held down than they do on tapping them)
|
(keybinds that do a different thing on being held down than they do on tapping them)
|
||||||
All the features I use are [well documented](https://haobogu.github.io/rmk/keyboard_configuration.html#layout) by RMK,
|
All the features I use are [well documented](https://haobogu.github.io/rmk/keyboard_configuration.html#layout) by RMK,
|
||||||
so while porting the keymap was tedious, it was not especially difficult or noteworthly.
|
so while porting the keymap was tedious, it was not especially difficult or noteworthy.
|
||||||
|
|
||||||
### `vial.json`
|
### `vial.json`
|
||||||
|
|
||||||
|
@ -115,12 +115,12 @@ A day or 2 of investigation later revealed that the half-duplex serial implement
|
||||||
only used the RP2040's internal pull-up resistors,
|
only used the RP2040's internal pull-up resistors,
|
||||||
which for my keyboard and TRRS cable were insufficient for a baud rate of 115200.
|
which for my keyboard and TRRS cable were insufficient for a baud rate of 115200.
|
||||||
This was (temporarily) fixed by setting a lower baud rate in the RMK source code,
|
This was (temporarily) fixed by setting a lower baud rate in the RMK source code,
|
||||||
but for the long term, I've made a [PR](https://github.com/HaoboGu/rmk/pull/291) mirroring [QMKs solution](https://github.com/qmk/qmk_firmware/blob/6d0e5728aa61b442885d48caf49d29e5c60e8197/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c#L133) to this problem.
|
but for the long term, I've made a [PR](https://github.com/HaoboGu/rmk/pull/291) mirroring [QMKs solution](https://github.com/qmk/qmk_firmware/blob/6d0e5728aa61b442885d48caf49d29e5c60e8197/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c#L133) to this problem, which has since been merged.
|
||||||
|
|
||||||
But, after all that, I had a Ferris Sweep running Rust,
|
But, after all that, I had a Ferris Sweep running Rust,
|
||||||
just as the silkscreen demands.
|
just as the silkscreen demands.
|
||||||
Granted, until the PR gets merged and a new release is cut,
|
Granted, until the PR gets merged and a new release is cut,
|
||||||
its running a modified version of RMK from my own fork, but its still Rust.
|
its running a modified version of RMK from my own fork, but it's still Rust.
|
||||||
|
|
||||||
The final firmware repo is [here](https://github.com/gabevenberg/ferris-sweep-rmk),
|
The final firmware repo is [here](https://github.com/gabevenberg/ferris-sweep-rmk),
|
||||||
if you want to use it for your own RP2040, wired Ferris Sweep,
|
if you want to use it for your own RP2040, wired Ferris Sweep,
|
||||||
|
|
Loading…
Reference in a new issue