bbtrackball-rs
bbtrackball-rs copied to clipboard
Experimenting with Blackberry trackball for keyboard ergonomics
:mouse: Blackberry rusty mouse
The purpose of this project is to build a blackberry-trackball mouse and glue it to the middle of an (allegedly) ergonomic keyboard... in Rust Embedded, for the STM32F042 :)
This came about from twitter idea to board, then to Rust Embedded. The code is based on RTIC rust-embedded framework (formerly known as RTFM). It exclusively uses interrupts and also works on OSX, not only Linux (wink wink, nudge nudge, James ;P).
:rocket: Future improvements shall you take this code with you
- DPI tweaking to have a better trackball accuracy or speed/stepping.
- Button debouncer.
- Remove one of the buttons of the PCB, since it conflicts with one of the trackball GPIOs... oops, hardware blopper ;)
- Add acceleration like @LSChyi did?
- Perhaps a clever (optical) system to make this experiment actually practical and useful :P
- On OSX the mouse works fine. On GNU/Linux systems, the mouse might stop responding after ~30 seconds of use. This could be related to the Linux USB autosuspend subsystem.. Try to fix that from the firmware so that it works everywhere?
- If enough people show interest and choose to sponsor me, I would love to look at how to:
- Understand the flash process of the Beken 3231.
- Implement an LLVM backend for the ARM968E-S and have
rustc
working with it. - Goal: have a sub-$1 bluetooth IC that potentially does all we need and more plus learn to implement an LLVM backend from scratch. Also provide a way to upcycle bluetooth hardware, keeping it away from the dumpster.
- ~~Write a simplified RTIC example to return the favour to that amazing rust-embedded community~~: Done.
:clap: Special thanks to
@joshajohnson @mvirkkunen @therealprof @jamesmunns @TeXitoi @TheZoq2
And all the folks from the RTIC matrix.org community for patiently guiding and helping me in this experiment.