Changes all usages of `KeyCombination.ReadableString()` to
`ReadableKeyCombinationProvider.GetReadableString()`.
Subscribing to `KeymapChanged` is only required in `KeyButton`.
All other places query `GetReadableString()` every time.
Not the most obvious keys, but does match stable expectations so let's
go with it for now.
Rationale for not using +/- is that local audio offset was bound to
those, and people will expect it to be when we get to implementing
eventually.
Also, adjust the scroll speed is a pretty rare thing to do since it's
been constant across beatmaps for years now.
`IdleTracker` in its construction quietly assumed that the clock it
receives from its parent starts ticking from 0 at the point at which it
is passed down. This is not necessarily the case when headless
executions are involved, which means that the initial state of the
tracker could be computed as idle incorrectly.
Resolve by explicitly reading the clock time at the point of
`LoadComplete()`.
With the recent changes to the order of processing key bindings
(`GlobalAction`s are handled first), having the alt-wheel bindings in here causes a
regression as they are handled before `OnScroll` events.
Specifically, this means editor alt-scroll functionality no longer works
with the default bindings.
Removing the bindings fixes this, while also still allowing alt-wheel
adjustment of the volume via `VolumeControlReceptor`:
a2f50af424/osu.Game/Overlays/Volume/VolumeControlReceptor.cs (L21-L26)
In conjunction with the special case in `OsuScrollContainer`:
02d5b1352b/osu.Game/Graphics/Containers/OsuScrollContainer.cs (L103-L105)