## Built a Macro Pad with Knob and Display I did not have time to build a full mechanical keyboard (and I'm happy with [X-Bows Lite](https://developer.run/64)), so I built myself the macro pad. Extra buttons are always useful, especially a knob for volume control. Buttons are mapped to: Play/Pause, Next Song, Start/Stop Pomodoro, and one for later use. I've even found a practical application for an OLED display: * When I'm playing fullscreen games, [display shows](https://github.com/dmi3/bin/blob/master/temp.sh) GPU/GPU temperature and overheat warnings to not overcook the chips. And the current time so I don't overcook my brain by forgetting to sleep. * When media is playing, display [shows title](https://developer.run/72) of currently playing song or Youtube video. * When rotating the knob, the display shows the percent of volume. The trick is that it shows the actual OS volume, so it will be correct even in case the volume is changed by other means (like os interface). This is achieved by sending the current system volume to the device when handling [volume keypress in Linux](https://github.com/dmi3/bin/blob/master/volume#L41-L44). * When idle, the display shows some awesome monochrome logos I've [shared previously](https://developer.run/54#pixel-perfect-images). Just like the way it looks. To communicate with the display made a [script](https://github.com/dmi3/qmk_firmware/blob/master/keyboards/handwired/onekey/kb2040/kbecho.py) to send any text, or show logo or progress bar on the macro pads display. On the receiving end is some [QMK trickery](https://github.com/qmk/qmk_firmware/compare/master...dmi3:qmk_firmware:master#files_bucket), of course. ! Wire with fancy "aviator connectors" goes to a custom Scroll Wheel I've put in the center of a keyboard. This is an evolution of my [QMK Scroll Wheel project](https://developer.run/68) by adding some extra functionality to Raspberry Pi Pico.