dterrahe / darktable

darktable is an open source photography workflow application and raw developer
https://www.darktable.org
GNU General Public License v3.0
2 stars 0 forks source link

NG Input: Better setup mechanism #2

Closed elstoc closed 3 years ago

elstoc commented 3 years ago

I'm not 100% convinced by the point-and-click widget-based setup for keyboard shortcuts. There will always be actions that are not directly accessable through clickable widgets and the only way to do that right now is to have two different mechanisms to set them up - one with point-and-click and a second in the preferences window.

Can I suggest that it might be easier if the point-and-click was at a higher level, similar to how the help links work (in fact we could use a similar mechanism and perhaps improve the help links in the process).

So, for example, you could click on the "create shortcut" button and then select one of the following UI "areas" (from small to big) to bring up a dialog for shortcut creation. Hovering those areas should highlight them and popup a tooltip.

This way you can still have a point-and-click approach but also expose the non-clicky shortcuts in a consistent way. There could then be a larger screen with all of the shortcuts that uses a similar mechanism.

Ref: https://github.com/darktable-org/darktable/pull/8078

dterrahe commented 3 years ago

That's a great idea!

I was thinking of moving the shortcuts "preferences" outside of the larger preferences dialog, because size-wise it doesn't really fit and it takes a few extra clicks to get to the right tab each time. Your suggestion could be a great way to directly get to a subsection of the Actions list within the dialog for the non-visual items.

Actually, the help links approach was already reused for shortcuts. I just realised there's no need for an actual click if you want to map to a visual item (slider etc). I find it is so fast now, you can remap shortcuts on the fly temporarily during a task. I was thinking of adding a mode to the shortcut mapper (holding CTRL while pressing the button, for example) that skips the question whether you want to override an existing shortcut to make it even faster.

The module shortcuts will in phase 2 be redefined as "effects". The advantage is that it will work together with the fallback mechanism. You would have fallbacks for left-click=enable, long left-click=focus, right-click=presets, double left-click= reset parameters, long right click=create instance for example (all redefinable by the user) and then if you map E to the exposure module, F to filmic, etc etc then you'd get all the other combinations enabled automatically, rather than tediously having to map each of them.

github-actions[bot] commented 3 years ago

This issue did not get any activity in the past 30 days and will be closed in 365 days if no update occurs. Please check if the master branch has fixed it and report again or close the issue.

dterrahe commented 3 years ago

The current version allows opening the shortcuts dialog (the same shortcuts/actions split screen that is also used in Preferences) for a specific action or category by either clicking on a widget (after toggling the define shortcuts button top right) or module header or on a region. There's no visual feedback (yet) to highlight the regions (either tooltip or red border or something like that) as I haven't figured out how to do that yet and it wasn't high priority for me since you can still change the category once the dialog has opened. And if you use the functionality a lot (which is when this is useful) it is easy to figure our that the top of the screen gives you global actions, the left libs, the right iops (or libs), the middle current view specific actions and the bottom thumbtable actions (if visible).

In the dialog, clicking on an action or group/category of actions at the bottom filters the top view with shortcuts to just those actions.

So, for example, a quick way to define a "negative" dynamic accelerator (one that moves in the opposite direction to normal, see https://github.com/darktable-org/darktable/pull/8078#issuecomment-828667873) take just these steps:

  1. click on "define shortcuts"
  2. show the module (say "filmic rgb"; you can still click on the header to open the module, as long as you don't click on the name or buttons)
  3. hover above the slider (say "black relative exposure")
  4. press a key combination (shift+F7, or you can add mouse buttons or limit this to a particular move, say just scroll).
  5. now left click on the slider to further edit the shortcut that was just mapped
  6. see the new shortcut in the top half under "active view". Click in the "speed" column to edit
  7. Add a "-" in front of the "1.000". Press enter and Esc.
  8. repeat 3 & 4 for "white relative exposure" and key shift+F6
  9. right click to exit define shortcut mode.

Now hold both shift+F6 & F7 and scroll.