Feature Request: highlight available macro keys
ryan-maus opened this issue · 2 comments
It would be pretty handy to highlight all the currently occupied slots when the Key_MacroPlay button is pressed.
This seems like a great idea! Thanks for the suggestion.
Actually, I think this is currently not possible given how things currently work in Kaleidoscope. I'll keep this issue open though in case I'm wrong or in case features are added to Kaleidoscope to enable this.
more technical details for anyone following along:
MacrosOnTheFly tracks slots by their Key
value, not by (row, col)
; but LEDs are effectively indexed by (row, col)
. There is no way to map a Key
value to the (row, col)
where it currently resides in the keymap. (Everywhere MacrosOnTheFly currently illuminates keys, it's because the key was recently pressed and we cached the row/col as it came in.)
A naive solution would be to manually go through and check every key in the keymap looking for the Key
associated with each occupied slot. This seems unacceptably expensive. Worse, we would have to consider all possible layers of the keymap (as occupied slots could be on any layer), and this strategy also wouldn't interact well with other plugins like DualUse/Qukeys/Leader or even standard macros.
If there were a technical solution that we found acceptable, some UX questions remain that are not impossible but worth thinking about. What if the occupied slot is on a different layer, what do we display? Do we light the key anyway? (Unintuitive because then pressing the illuminated key doesn't actually work.) Do we do another search for the appropriate ShiftToLayer()
/LockLayer()
key and illuminate that? Do we light both the layer key and the key for the actual slot? I would lean toward lighting only occupied slots from the current layer, plus the layer keys for any layers that also had occupied slots (but not the occupied slots on other layers themselves).