Let me explain what is going on.
For some time now I've been thinking that encoder implementations on keyboards were kind of lame. Generally they do one thing and one thing only, like control your computer volume, all time and there's no way to change that during runtime; to change encoder functionality you need to download QMK, program your own encoder, flash the PCB... Yuck, right? There were some implementations here and there that did it something a little bit more sophisticated, but for the most part that is pretty much it. It just felt... frustrating that I would use my car radio and its simple encoder would do it all, from controlling the volume to doing equalizer, to tuning stations. Encoders are meant for greatness, and as the great philosopher Hineybush once said: if you want to be a knob, then be a knob.
For some time now some keyboard designers have tackled this problem in a myriad of ways; for instance, Jack Humbert tried to implement an encoder matrix. See this video:
Jack's implementation makes it possible to hook up multiple encoders to a keyboard using minimal MCU pins. In that implementation, one encoder would, say, control computer volume, another encoder controls LED brightness, another one mimicks mouse wheel, and the list goes on. Myself I tried something similar on Sagittarius (
https://geekhack.org/index.php?topic=107023.0) which (and I didn't see this at the time) is kind of unnecessary... So it came out as a huge meme, culminating with the Simon stream ganking me and I just gave up into madness and "designed" a full encoder Sagittarius which we sent to Taeha Types DMs in Discord because he complained about encoders during the Sagittarius build stream (sorry Nathan, it was bigger me...)
So in short, it is really difficult to make a keyboard support multiple encoder funcionalities in a friendly way that allows the user to seamlessly switch between functionalities.
For Evolv, I still wanted to tackle this problem, but I came up with a lightbulb idea: something I call "encoder modes". The idea here being, the encoder has different modes of operation which can be selected by holding the encoder click for ~2s, which cycles between modes, or pressing layer 1 and rotating the encoder, which also cycles between the modes back and forth. The way you know what mode is up at a given instant is that the RGBs glow a specific color for each mode.
So, for instance, on my stream video, what I do is, I have three encoder modes:
- A pink mode, which I call "media mode": rotating does vol up/down, click does mute, directionals do next/previous song, stop and play.
- A cyan mode, called "application mode": the rotating does alt-tabbing and the click closes it (once you rotate the encoder the alt-tab application menu pops up and you can select an application by either clicking the encoder or waiting for 2s); horizontal directionals cycle between application tabs doing ctrl+tab or ctrl+shift+tab (this would change between Chrome tabs for instance) and vertical directionals do page up/down
- An yellow mode, called "mouse mode": rotating does mousewheel up and down, clicking does mouseclick, and directionals do arrows
These modes are fully user-programmable and customizable, by the way, like adding or removing encoder modes, changing their specific colors, list goes on.
And my thoughts are: this works! This does the trick! The encoder has multiple funcionalities which I can switch among easily and seamlessly. I am very, very happy with this.
However, the directionals are way too much. They make the encoder and the modes kind of way too complicated... And I get that the whole theme about Evolv is to be just a on-your-face overengineered keyboard, but the way the directionals are they just harm the experience more than they add to the core theme. I'm talking to Nathan AlphaMan to switch back into your common EC11E encoder which does rotation and click, but no directionals. This way, everything would be much more clear-cut: we'd still have the encoder modes, but whatever the directionals do can be programmed into another encoder mode or another key in another layer.
In any case, the stream was kind of quiet (firmware streams always are) but I had a blast doing it. There are some things to flush out still (the joystic encoder has a problem with the click and the directionals, they all activate at the same time and it's horrible to deal with software-wise).
So yeah, I am pretty happy with what Evolv has become in this encoder thing. This is what peak encoder performance looks like you guys.
LOOK AT ME, HINEY. I AM BECOME KNOBMAN.