// the find
tenderlove/initial-v
It's a BMW shifter converted to a Bluetooth Keyboard that you use with Vim
A BMW F-series gear selector wired up as a Bluetooth HID keyboard for Vim, built around an ESP32 and CAN bus decoding. The shifter's physical positions map to Vim modes and commands, and it syncs state back from Vim via HID output reports so the handle reflects what the editor is actually doing. This is a hardware hack project by Aaron Patterson (tenderlove), written for the joy of it.
The bidirectional state sync is the clever part — the Vim plugin pushes mode changes back to the handle over HID output reports, so if you hit `i` on your keyboard the shifter physically moves to Neutral. That's a real solution to a real problem in input-device Vim controllers. The hardware stack is well-chosen: ESP-MINI-1 for BLE, SN65HVD230D for CAN bus, and a buck converter to drop the 12v supply — no reinvented wheels. KiCad schematics and OpenSCAD housing files are all included, so you can actually build one. The CAN bus decoding is documented and credited properly, pointing to the upstream reverse-engineering work rather than burying it.
Build instructions are explicitly marked as TODO in the README, so you're largely on your own for assembly. The firmware has no power management — plugged into 12v permanently or you're solving that yourself. The key mapping table is fixed at compile time; there's no config layer, so any customization means editing C and reflashing. Last commit is late 2023 and the repo has 12 forks — it's a finished personal project, not something with ongoing maintenance or a community behind it.