Drive develop, the grid, the sidebar and People from the keyboard

An audit of every action by view against the keys the handlers bind left
develop without zoom, pan, fit or a way back to the grid, the grid without
select-none, thumbnail size or keywording, People with no key at all, and
the export and copy sheets without Enter. It also found the reverse gap
FR-UI-5 forbids: pick and reject had no route but P, X and U, and the
2026-09-19 amendment's judging in develop had not been built.

Develop: Ctrl+= and Ctrl+Plus zoom in and Ctrl+- out about the middle of the
view, Ctrl+0 fits and Ctrl+1 goes to 1:1, Shift and an arrow pan a magnified
view, G goes back to the grid, Ctrl+Y redoes, and Enter keeps a crop that hid
a mask. 0-5, P, X and U rate and flag the open photograph without moving on,
with stars and Pick/Reject in the top bar as the pointer and touch route.
= and - nudge the control last moved by a hundredth of its travel; the
framing sliders, perspective included, now count as "last moved", so R puts
them back as well. J turns the selected mask part's join chip.

Grid: Ctrl+D and Ctrl+Shift+A clear the selection, = and - resize the
thumbnails, Ctrl+K opens keywording, and Flag in the selection bar gives
pick and reject a pointer and touch route. Sidebar: Enter commits a
collection's name, and Enter or Escape hands the keyboard back to the grid,
where it used to go nowhere until something was clicked. People: Up and Down
walk the rail, F2 puts the name field under the keys, and Escape or Back now
leave the screen the way its back button does instead of doing nothing.
Sheets: Enter does what the export or copy sheet's button does.

The choices follow Lightroom where it has one. No new key steals typing: the
grid's and People's keys live on focus holders that are not ancestors of any
text field, and the sheets' Enter comes after a focused field has had it.
Every binding is tagged beside its handler, and the gate added in the
previous commit holds the two to each other.
This commit is contained in:
2026-09-24 23:42:26 -04:00
parent 9d1e31ffbb
commit d489a34190
15 changed files with 975 additions and 160 deletions
+82 -10
View File
@@ -37,7 +37,7 @@ pub const GESTURES: &[Gesture] = &[
section: "Develop",
touch: "Pinch it with two fingers",
pointer: "The scroll wheel over it",
keys: "",
keys: "Ctrl+= or Ctrl+Plus in, Ctrl+- out, about the middle of the view",
manual: "looking-closer",
},
Gesture {
@@ -45,7 +45,7 @@ pub const GESTURES: &[Gesture] = &[
section: "Develop",
touch: "Drag it",
pointer: "Drag it",
keys: "",
keys: "Shift+←, Shift+→, Shift+↑ and Shift+↓, a fifth of the view at a time",
manual: "looking-closer",
},
Gesture {
@@ -69,7 +69,7 @@ pub const GESTURES: &[Gesture] = &[
section: "Develop",
touch: "Tap the step below the current one in the History list",
pointer: "Click it, or press Redo in the History header",
keys: "Ctrl+Shift+Z",
keys: "Ctrl+Shift+Z, or Ctrl+Y",
manual: "history-snapshots-presets",
},
Gesture {
@@ -120,6 +120,30 @@ pub const GESTURES: &[Gesture] = &[
keys: "Ctrl+E",
manual: "export",
},
Gesture {
title: "Keep a crop that leaves a mask outside",
section: "Develop",
touch: "Press \"Keep crop\" on the notice, or \"Undo crop\" to take it back",
pointer: "Press \"Keep crop\" on the notice, or \"Undo crop\" to take it back",
keys: "Enter keeps it; Ctrl+Z takes the crop back, like any other step",
manual: "",
},
Gesture {
title: "Go back to the grid",
section: "Develop",
touch: "Press \"‹ Library\" in the top bar",
pointer: "Press \"‹ Library\" in the top bar",
keys: "G",
manual: "",
},
Gesture {
title: "Nudge the control last moved",
section: "Develop",
touch: "Drag its track",
pointer: "Drag its track",
keys: "= or Plus up and - down, a hundredth of its travel at a time; hold for more",
manual: "",
},
Gesture {
title: "Change which group of adjustments is on screen",
section: "Develop",
@@ -133,9 +157,25 @@ pub const GESTURES: &[Gesture] = &[
section: "Develop",
touch: "Double-tap the photograph",
pointer: "Double-click it, or press the zoom readout floating over the canvas",
keys: "Z",
keys: "Z goes in and back out; Ctrl+1 goes to 1:1 and Ctrl+0 back to the whole frame",
manual: "looking-closer",
},
Gesture {
title: "Rate this photograph",
section: "Develop",
touch: "Tap a star in the top bar",
pointer: "Click a star in the top bar",
keys: "0–5",
manual: "",
},
Gesture {
title: "Pick or reject this photograph",
section: "Develop",
touch: "Press Pick or Reject in the top bar; again to take the flag off",
pointer: "Press Pick or Reject in the top bar; again to take the flag off",
keys: "P picks, X rejects and U takes the flag off",
manual: "",
},
Gesture {
title: "Give this photograph a colour label",
section: "Develop",
@@ -205,7 +245,7 @@ pub const GESTURES: &[Gesture] = &[
section: "Develop",
touch: "Tap the + / − / ∩ chip on the part's row",
pointer: "Click the + / − / ∩ chip on the part's row",
keys: "",
keys: "J turns the selected part's chip, while masking",
manual: "local-adjustments",
},
Gesture {
@@ -224,6 +264,14 @@ pub const GESTURES: &[Gesture] = &[
keys: "Escape, or Back where the device has one",
manual: "",
},
Gesture {
title: "Do what a sheet offers",
section: "Everywhere",
touch: "Press its button — Export, or Copy",
pointer: "Press its button — Export, or Copy",
keys: "Enter, on the export and copy sheets",
manual: "",
},
Gesture {
title: "Pick a collection up to rearrange the tree",
section: "Collections sidebar",
@@ -253,7 +301,7 @@ pub const GESTURES: &[Gesture] = &[
section: "Collections sidebar",
touch: "Hold the collection, then \"Rename\"",
pointer: "Double-click its name, or right-click it and choose \"Rename\"",
keys: "Escape while typing abandons the new name",
keys: "Type the name and press Enter; Escape abandons it",
manual: "collections",
},
Gesture {
@@ -272,6 +320,22 @@ pub const GESTURES: &[Gesture] = &[
keys: "",
manual: "people",
},
Gesture {
title: "Move between people",
section: "People",
touch: "Tap a person on the rail",
pointer: "Click a person on the rail",
keys: "↑ and ↓, along the rail",
manual: "",
},
Gesture {
title: "Name a person",
section: "People",
touch: "Tap the name field over their faces, type, and press Enter",
pointer: "Click the name field over their faces, type, and press Enter",
keys: "F2 puts the name field under the keys",
manual: "",
},
Gesture {
title: "See a person's photographs",
section: "People",
@@ -368,6 +432,14 @@ pub const GESTURES: &[Gesture] = &[
keys: "Ctrl+V",
manual: "copying-settings",
},
Gesture {
title: "Keyword the selection",
section: "Library grid",
touch: "Select them, then Keywords in the selection bar",
pointer: "Select them, then Keywords in the selection bar",
keys: "Ctrl+K",
manual: "",
},
Gesture {
title: "Show only photographs with some number of stars",
section: "Library grid",
@@ -387,8 +459,8 @@ pub const GESTURES: &[Gesture] = &[
Gesture {
title: "Pick or reject a photograph",
section: "Library grid",
touch: "",
pointer: "",
touch: "Select them, then Flag in the selection bar and Pick, Reject or No flag",
pointer: "Select them, then Flag in the selection bar and Pick, Reject or No flag",
keys: "P picks, X rejects and U takes the flag off, with the pointer over it or on the selection",
manual: "",
},
@@ -429,7 +501,7 @@ pub const GESTURES: &[Gesture] = &[
section: "Library grid",
touch: "Pinch the grid with two fingers",
pointer: "Ctrl and the scroll wheel",
keys: "",
keys: "= or Plus for larger, - for smaller",
manual: "getting-about",
},
Gesture {
@@ -469,7 +541,7 @@ pub const GESTURES: &[Gesture] = &[
section: "Library grid",
touch: "Press Clear in the selection strip",
pointer: "Press Clear in the selection strip",
keys: "",
keys: "Ctrl+D or Ctrl+Shift+A",
manual: "selecting-several",
},
Gesture {