Skip to content

Put the keyboard shortcuts back on MapRoulette 3's keys - #2911

Merged
CollinBeczak merged 2 commits into
v4from
keyboard-shortcuts-mr3-parity
Sep 8, 2026
Merged

Put the keyboard shortcuts back on MapRoulette 3's keys#2911
CollinBeczak merged 2 commits into
v4from
keyboard-shortcuts-mr3-parity

Conversation

@CollinBeczak

Copy link
Copy Markdown
Collaborator

MR4 kept a shortcut registry but had inverted the ergonomics it existed for. Status changes — the one thing a mapper does on every task — sat on Ctrl/Cmd+F and Ctrl/Cmd+P, the two modifiers a browser already owns for Find and Print, while the bare left-hand keys a one-handed mapper can reach went to view toggles used once a session. Worse, f and d did view and selection things, so MR3 muscle memory produced the wrong action rather than none.

The statuses go back to f q x d w, the editors to e r t y v a, and the map to + - 0. Each opens the confirmation dialog rather than submitting, which is what makes a bare letter safe. h and l stay unbound: MR4 has no previous/next task control for them to shadow, and neither do s and o, whose task-feature and OSM-data layers do not exist here yet.

Three tiers now, with no exceptions: a bare letter acts on the task screen; Shift+letter is the "more" variant of its bare key; Ctrl/Cmd is for the two commands that must work while typing, search and submit. That leaves the MR4-only toggles on keys 3 never used — b/Shift+B for the bundle filter and lasso, m for markers, Shift+O for other challenges.

Around that:

  • Key names come out of the translated strings and are composed at render time from the binding, so rebinding is no longer a change to 16 locale catalogs. They render as key caps in the map tooltips, the editor menu and the search box, which is where mappers look.
  • The registry moves to the app root, so ? works everywhere and the global search key joins it instead of running its own listener.
  • Dialogs suspend shortcuts while they hold the screen. Radix traps focus, but a bare letter still reached the window listener.
  • Shortcuts register unconditionally and flip enabled, carrying the reason they are out of reach, so the dialog can say "start mapping this task first" instead of quietly omitting the row.
  • Categories are ids rather than translated labels, which is what the dialog's ordering was comparing against — it only sorted in English.
  • Matching, formatting and conflict detection move into a tested module, and duplicate bindings now warn in development instead of resolving by registration order.

The editor menu grew an "open in" section: the six editor keys had no visible control to shadow, since picking an editor there only set the default.

MR4 kept a shortcut registry but had inverted the ergonomics it existed
for. Status changes — the one thing a mapper does on every task — sat on
Ctrl/Cmd+F and Ctrl/Cmd+P, the two modifiers a browser already owns for
Find and Print, while the bare left-hand keys a one-handed mapper can
reach went to view toggles used once a session. Worse, `f` and `d` did
view and selection things, so MR3 muscle memory produced the wrong
action rather than none.

The statuses go back to `f` `q` `x` `d` `w`, the editors to `e` `r` `t`
`y` `v` `a`, and the map to `+` `-` `0`. Each opens the confirmation
dialog rather than submitting, which is what makes a bare letter safe.
`h` and `l` stay unbound: MR4 has no previous/next task control for them
to shadow, and neither do `s` and `o`, whose task-feature and OSM-data
layers do not exist here yet.

Three tiers now, with no exceptions: a bare letter acts on the task
screen; Shift+letter is the "more" variant of its bare key; Ctrl/Cmd is
for the two commands that must work while typing, search and submit.
That leaves the MR4-only toggles on keys 3 never used — `b`/`Shift+B`
for the bundle filter and lasso, `m` for markers, `Shift+O` for other
challenges.

Around that:

- Key names come out of the translated strings and are composed at
  render time from the binding, so rebinding is no longer a change to 16
  locale catalogs. They render as key caps in the map tooltips, the
  editor menu and the search box, which is where mappers look.
- The registry moves to the app root, so `?` works everywhere and the
  global search key joins it instead of running its own listener.
- Dialogs suspend shortcuts while they hold the screen. Radix traps
  focus, but a bare letter still reached the window listener.
- Shortcuts register unconditionally and flip `enabled`, carrying the
  reason they are out of reach, so the dialog can say "start mapping
  this task first" instead of quietly omitting the row.
- Categories are ids rather than translated labels, which is what the
  dialog's ordering was comparing against — it only sorted in English.
- Matching, formatting and conflict detection move into a tested module,
  and duplicate bindings now warn in development instead of resolving by
  registration order.

The editor menu grew an "open in" section: the six editor keys had no
visible control to shadow, since picking an editor there only set the
default.
@CollinBeczak
CollinBeczak merged commit ec5d235 into v4 Sep 8, 2026
4 of 5 checks passed
@CollinBeczak
CollinBeczak deleted the keyboard-shortcuts-mr3-parity branch September 8, 2026 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant