DT has a very powerful shortcut system. However, there are only so many keys that it is convenient to operate without moving the hand too much, which is one of the main reasons why until now I have only embraced shortcuts to a certain extent.
This got me thinking that it would be nice to have a way to quickly remap a bunch of keys so that I can reuse the same set of keys for different parts of the workflow.
Enter: shortcut overlays.
It is actually pretty simple: a thin layer of overrides applied on top of your standard shortcuts that allow you to create “contexts” in which new shortcuts are assigned, or the shortcuts perform different actions. A bunch of new actions make it easy to create, delete and switch between overlays.
As an example, take a look at the video below. In this example, my default shortcuts use zxcvb with scroll to control the main AgX settings. I then hit Tab, which I mapped to the cycle shortcut overlays action, which loads my AgX primaries overlays. This is reflected in the title of the window, so that you always know if you are using an overlay, and which one. In this overlay, the same set of shortcuts is used to control the primaries sliders. When I am done, I hit Tab again and I go back to default mode (i.e., no overlay), where the keys are, again, controlling the main AgX settings.
The whole thing is completely optional, and you can keep using your shortcuts with no change to your workflow whatsoever.
If you create an overlay, after switching to it all the shortcuts that you registered will automatically be stored in the overlay. As soon as you go back to the default, i.e., no overlay, the new shortcuts disappear (if they were new additions), or go back to whatever function they already had before (if they were overrides). The current implementation adds a section for each overlay in the shortcutsrc file, e.g.:
[agx primaries]
b;scroll=iop/agx/blue attenuation
b;long=iop/agx/blue attenuation
c;scroll=iop/agx/green attenuation
c;long=iop/agx/green attenuation
n;scroll=iop/agx/blue rotation
n;pan=iop/agx/blue rotation
v;scroll=iop/agx/green rotation
x;scroll=iop/agx/red rotation
z;scroll=iop/agx/red attenuation
Note that, while in the example I am only using AgX to avoid too much UI fiddling during the screencast, there is no limit to what shortcuts an overlay can override. So, for example, you could have an overlay for your lightroom operations, one for the main technical edits in the darkroom, one for a specific module, one for color grading, whatever. The granularity is completely arbitrary and up to you.
The code footprint is 600 insertions and 100 deletions, so it’s a pretty tiny change.
Any thoughts? @Pascal_Obry, I always loop you in to understand whether it’s worth spending more time refining the idea or not.
Thanks, cheers
