During the WE I had a bit of time and I implemented a way to navigate through the visible modules using the arrow keys.
Paired with the option miscellaneous > shortcuts with multiple instances > prefer focused instance, this allows me to target any instance of any module without having to define multiple shortcuts.
I added new key bindings to the search box so that, when it is focused, you can press Up/Down to cycle through all visible modules. If the search box is not empty, this will only cycle through the search results.
As you cycle, a toast displays which instance of which module is selected.
As the search bar is still focused, if you keep typing you will just keep editing the text in the search box, so your shortcuts (if you are using the keyboard) will not fire. To address this issue, I added a special handling for Enter, which will remove the focus from the search box and allow you to control the currently focused module with whatever shortcuts you defined for it.
The video below shows it in action. I have set up / to focus the search bar and E + scroll to control the exposure level.
So, I can type / to focus the search bar, expo to find the exposure instances, Up/Down to select a certain instance, Enter to defocus the search bar and use the same shortcut E + scroll to control the level of the different exposure instances.
If folks find this interesting and the devs have no objection I am happy to prepare a PR. Personally, I find it very useful, it’s a small change but it greatly improves my ability to operate multiple instances with a smaller set of key bindings.
Tagging @dterrahe who I believe may be interested.
Uhh I like that. I find searching for modules clumsy and switching out of the search field with this fix might help. For me there is also a slight delay when entering the search-bar with STRG+f which makes it slightly unwieldy. (/ doesnt really work on QUERTZ).
If you want to reach developers to discuss actual code, github might be a better platform. I don’t check here as often and don’t get notified by email when I’m @ed.
This sounds like useful functionality, but it makes sense to think about next steps. If you are able to change the focused module by keyboard, it would be useful to change the focused widget within those modules by keyboard as well. Then you can manipulate any slider, even those without shortcuts already set up. But that won’t work with an approach where the search box needs to be focused for keys (up/down) to get a special meaning (to change module focus). Because the search box and a slider cannot have focus at the same time. To me that suggests that you want to have real shortcuts (that can be used at all times and don’t require the search box to be focused) to change modules. I would suggest PgUp/PgDown. Look at darkroom/move/vertical how a shortcut is defined so you can also assign a key+mouse move(scroll) to it or allow going to the last/first in one move.
For changing the focused slider/combo, we could then use Up/Down. Those currently are already captured by bauhaus but do the same as left/right. So the question is if it is likely that people prefer them like that or if they are happy to have them change focus instead. Maybe for combos it is preferable to have up/down act the same as when the dropdown is open. In that case we’d need to look for other keys (and might make them real shortcuts instead of special bauhaus keys). I think it would be preferable to wrap around the focused widget within the focused module (from the last go back to the first), rather than progressing to adjacent modules (since an Up/Down via the above shortcut would do that). You could keep the “same” widget within a module focused if you change to the next module of the same type. With that I mean if you are in exposure module and you have the exposure widget active, then PgDown would go to the next exposure module instance and again focus on its exposure widget.
Enter to de-focus/leave the search box is not necessary as Tab already does this (for any Entry; if there are multiple Entries chained, like in the metadata module, it will cycle through them).
Yes, actually that was my first implementation. I added two actions to move up and down. The Up/Down when search is focused seemed like a nice way to introduce the functionality with as little code changes as possible.
Yes, totally. I did not look into it yet, but it’s on my todo list This is somewhat already achievable via <focused>/slider etc., but I agree that a generic way to achieve that would be more convenient.
What tamed my enthusiasm is that currently there is no vidual clue (that I am aware of) to show visually which widget has focus. Though maybe this can be addressed via theming.
In the spirit of <focused>, I would probably go for a different shortcut to cycle each type of widget (i.e., slider, button, combo, curve node), which would make it easier to access all widgets with fewer keystrokes.
There is! It is just very very (very!) subtle. But if you know its there you’ll see it (and not just think there’s a slight bug).
Power vs complexity. I would just do all Bauhaus (slider+combo mixed) and ignore everything else because they can’t currently focus (and it makes sense to keep it that way; should pressing a button give it focus, which redirects some keys?) and don’t generally have keyboard handling). We may need to add a keyboard way to press the Bauhaus “quad” button. Space?
I had some more time to work on this, and thanks to @dterrahe’s indications it’s getting better and better.
So, I implemented three new actions:
Cycle modules, to cycle all the currently visible processing modules.
Cycle widgets, to cycle all the (bauhaus, for now) widgets in the currently selected module
Edit focused value, to edit the value of the selected widget
I added Z+scroll as a shortcut to control the first, X+scroll for the second and C+scroll for the third.
Now, with just three keys (and / to search and TAB to remove focus from the search box), I can basically navigate the whole darkroom
See the video below for a quick demo:
Naturally one can also use just the keyboard to do the same, but with the scroll navigating through all the controls of complex modules, also with multiple pages (e.g., color balance RGB), is a breeze.
[I also did some theme hacking to make the focused widget more prominent]
Maybe I missed it but I see you are working top to bottom, I - and I guess more of us - often work bottom to top. Is that easily possible? And I guess this functionality is applicable in all module-tabs?
It’s bi-directional and circular, for both modules and widgets. You can start top or bottom and when you reach the end it continues from the other side.
Scrolling widgets only works within the focused module, so you cannot switch module without wanting it.
And by the way, you can also do random access. With a shortcut to focus the search box you can then type three letters to show your module, Tab to leave search and scroll (up or down) to the instance that you want to change.