Darktable keyboard shortcuts - best practices

Coming of an off-topic discussion in the agx-thread I thought it might be nice to gather some of our best practices for keyboard shortcuts. Maybe with a bit of an explanation and the shortcutsrc-file?

Echoing what I answered in that thread:

I mostly assigned one key to a module and add functionality by double-presses, mousewheel etc.: f: filmic, b: colour balance, w: colour calibration, s: sigmoid, c: crop, k: lens corrections, j: chromatic aberrations, z: colour equalizer, n: contrast equalizer, x: diffuse or sharpen, p: primaries, s: snapshots

Those correspond to a mostly consistent set of variants of double-keypress, alt+key etc.:

  • single key: Show module (e.g. w = colour calibration)
  • single key + mousewheel: Adjust a parameter within that module (e.g. e for exposure). More examples
    • c: contrast in ā€œfilmicā€; b and w for black and white level correction in filmic.
    • k: vignetting-correction in ā€œlens correctionsā€
    • r: rotating the image via ā€œrotate and perspectiveā€.
  • double key: Brings up a picker (ww for white balance picker, ff for auto adjust levels in filmic, zz for the colour picker) or activates a preset (xx for ā€œlocal contrastā€ in ā€œdiffuse or sharpenā€)
  • alt + key: resets the corresponding module (e.g. alt+w resets colour calibration, alt+f resets filmic, alt+h resets the history stack)
  • shift+key: Some other special (e.g. shift+h compresses the history stack)

Because I switch the histogram around a lot I have set
ü: Waveform; ö: Vectorscope; ä: Histogram; + switch orientation of waveform
(which of course only makes sense on german QWERTZ)

shortcutsrc.txt (9.7 KB)

9 Likes

Personally I only use the keyboard short cuts provided by default but is more my bad than good practice. I haven’t felt the need to create more keyboard shortcuts and I have enough trouble remembering the supplied ones. Not really answering your question however. Hopefully others will provide more useful answers.

you can use single key + mouse up/down and single key + mouse left/right too. single key + left click and single key + middle click works also.

1 Like

Why I no longer use a MIDI controller and why Darktable offers the best possible user experience compared to Lightroom CC and similar programs.

Here is my current keyboard layout for Darkroom.

This page is in German, so simply translate it in your browser.

https://net-fx.de/darktable-tastaturbelegung/

2 Likes

There are some great ideas and very well-thought-out personal systems in this thread.

The only personal touch that I chose to implement was to always use a double-press.

I have a shortcut for export: xx.

Yes, I know it is CTRL-e, system default. But that means lifting the whole forearm to reach ā€˜e’ as well as using another finger for CTRL. Be my guest: you are welcome to gasp at my laziness :rofl: .

Actually, I usually copy my edit, as the next pic is likely to be similar. ā€˜x’ is close to ā€˜c’: CTRL-C xx is very streamlined. as well as lazy!

Does anybody here have fallbacks enabled? Any feedback on that? Any suggestions on what is missing/could be improved.

And +right click. And all of those double and triple clicked as well, of course.

It even gets more silly; you can triple press a key and hold, then double press the right mouse key and hold and then press and hold the left mouse key and then move the mouse left/right or up/down or diagonally.

Except, now that I try it (of course i don’t use this feature irl) there seems to be some breakage; the number of presses or clicks doesn’t get reinitialised correctly so double and triple presses are generated inadvertently. I’ll have to fix this at some point but since apparently nobody is using more complex combinations, there’s no real hurry :slight_smile:

2 Likes

@dterrahe For the love of me I cannot understand how fallbacks work. Yes, I read the manual, and I still don’t get it.

I enabled them in the preferences, and then? Can you give me an example of something that I can do with fallbacks enabled and something that I cannot?

I suspect that I could find them very useful, if only I understood them :slight_smile:

Let me be more concrete. I understand the following as ā€œadding the Cmd or Shift modifier changes the granularity of the modulationā€:

And it works. If I Shift+scroll or Cmd+Scroll on, say, the exposure slider I see that the granularity of the modulation changes.

However, it works also if I uncheck enable fallbacks in the preferences. So, what is the fallback actually doing?

If that was not clear, I am officially confused.

The keyboard/mouse mapping alone is a killer feature that no other image editing software offers.

Other programs require additional hardware for control to feel right.

Darktable doesn’t need a MIDI controller or a Loupedeck to be used perfectly.

With a little practice, everything can be controlled without the modules.

Simply use the keyboard keys pressed with your left hand and gentle mouse movements.

I’m contemplating trying one of the LLMs to help write documentation for this. Just to find out if it could be any good in providing a structure that allows new users to understand. For me this is hard, because it is all so ā€œobviousā€ to me :wink:
I do think especially in this case the user documentation could benefit from providing additional examples that the user could extrapolate from. At least that’s how I learn, but everybody is different.

OK, back to fallbacks. The idea here is that many of the objects you can interact with via shortcuts have several different defined effects a shortcut can trigger. If you had to separately set up shortcuts for each of them, that would be a lot of work and it would be a challenge to keep consistency. But if you don’t set them up for each one, it is hard to remember what works where so you’ll probably not use them at all.

For example:
If you have a shortcut set up for a slider (or module), you can also set up a separate shortcut to reset it to default value(s). @mino above has done this. Or for color picker buttons associated with the slider.
Fallbacks does this automatically.
For example, you link a key press to a slider.
Now when you press and release the key, you get the popup for that slider (to type a value).
If you hold the key and use the mouse scroll wheel, you change the value directly. If you add the CTRL key, you fine tune (changes 10 times smaller). Adding SHIFT makes changes 10 times larger. This is consistent throughout the user interface.
You can also hold the key and move mouse left-right for fine moves or up-down for large changes.
Click mouse button (while holding key) to press the ā€œquadā€ (usually color picker) button. Double click for reset (also for modules).
For module shortcuts, right click is presets menu. etc etc. You can see all the defined fallbacks in the shortcuts preference tab or dialog.
If you keep holding the key (it may have been double or triple pressed, so not having to repeat can be handy) you can do multiple actions. Like first double click and then horizontal move to fine-tune starting from default.
There may be multiple layers to fallbacks. key+double right-click gives you the module instance menu, but if instead you hold the mouse after the double click and move it up/down you immediately change the module’s order in the pipe. Or key+single right click+move to cycle through the presets.

It is somewhat powerful so easy to shoot yourself in the foot. That’s why it is disabled by default.

2 Likes

The ā€œfallbacksā€ checkbox applies to shortcuts. Correct me if I’m wrong but you may be referring to directly manipulating the slider (by either scrolling while hovering over it or by using the cursor keys when it is focused)? Yes, those support the same speed up/slown down modifiers shift/ctrl (I believe consistency across the interface is very important) but those are not shortcut fallbacks in this case. (although they take their values, *10 & *.1 or custom ones, from there).

If you define, say e+scroll to change exposure but you leave fallbacks off then e+shift+scroll doesn’t speed up. And of course ā€œeā€ with fallbacks has the drawback that ctrl+e has been long defined as export so thats gets in the way of fine-tuning changes with ctrl+e+scroll. But as @Thad_E_Ginathom points out, you can easily move that out of the way.

3 Likes

You are absolutely right; for many keyboard+mouse combinations work just as well as a separate midi board. What I still find nice about the x-touch is that you get visual feedback as well. The button lights can indicate which module is focused and the rotor ring lights indicate current values. So you can work ā€œblindā€ (i.e. have the right panel hidden) and still have all the information in front of you. But I admit it can feel like a little bit of a gimmick. Personal preferences though!

1 Like

Oooooh, thanks a lot @dterrahe, I finally got it.

Kramer is mind blown.

This was the missing bit for me. If I define a shortcut to select a processing module, then the fallbacks/processing module can be used to modify it. If I define a shortcut on the value of a slider, then the fallbacks/value can be used to modify it, and so on.

This is indeed quite nice!

Thanks for your explanation! I find ā€œfallbackā€ kinda misleading and wondering what will trigger the ā€œfallbackā€ hindered my understanding of then. They are apparently more of a ā€œglobal defaultā€?

@dterrahe Shortcut editing IMHO is complicated by the preferences window being modal. I.e., you may define a new shortcut with the pref window open, but then you cannot really test it without closing the window first.

Doing this for N shortcuts becomes tedious very quickly, also because the preferences window does not remember its last state, so every time that one opens it one has to navigate back to shortcuts tab and find whatever shortcut one was working on.

Would it be conceivable to add a control to the preferences window to toggle its modal state? So one could edit a shortcut, focus the main window, try it out and edit as needed.

This would also be beneficial for theme editing, as I had suggested in another post.

I had similar ideas for a complete redesign of the keyboard shortcuts, but then I settled for the really key operations where I want my eyes to be constantly focused on the image.

I do global tone corrections with the Color balance RGB module, specifically with perceptual brilliance grading. To change shadows, midtones, and highlights, I use one of the numbers 4, 5, and 6 and the mouse wheel. This allows me to make quick changes in either direction. In the settings, you can also specify the degree of steps, which is very convenient, as I want bigger changes with small movements in shadows and smaller changes with highlights. Absolutely killer feature!

What kind of shortcuts are you setting up? If they are for sliders, buttons, modules or other visual elements, using shortcut mapping mode is much quicker, as the message at the top of the shortcut tab points out (if you haven’t removed it yet which requires three clicks). In that mode you can directly go to the relevant detailed settings by clicking on a widget. You can also open this stand-alone shortcut dialog by right-clicking on the shortcut button next to settings.

The manual is intentionally minimal because we can’t keep it up to date, and there are not enough people participating in manual writing.

We also generally don’t get Mich from the developers, and figuring things out from scratch is tiresome and takes a long time.

But like, we have been over this.

1 Like

I know that but I find that modality difficult to use. I feel more in control of what I am doing by selecting an action in the shortcuts menu and setting a shortcut for it. Also, the quick shortcut thingy behaves strangely if by mistake you select an already existing shortcut, and in the past I ended up with messed shortcuts because of that. Also, I prefer to test each shortcut after adding it instead of adding them in batch.

Oh, had missed that. This makes it a bit easier, thanks.

In mapping mode, if you move your mouse over the center (or anywhere there is no widget) you can try out a just created shortcut without switching off mapping mode first. But anyway, i understand things are not perfect for you.