Karya, built on 2022-03-21T01:30:44 (patch 89d1651424c35e564138d93424a157ff87457245)
Safe HaskellSafe-Inferred



The default keyboard layout.

I group cmds by their function. Overlapping keys will be detected and show up in the log as a warning on startup.

Some global cmds also have a command-key version, so you can invoke them even when kbd entry is on.

Track-specific cmds are bound in Track.

Global generic cmds:

  1. State level operations, like load, save, undo. Set timestep mode, set edit mode. Play, stop. Move the selection.
  2. Modify text independent attributes, like start position and duration. This includes copy and paste, remove, modify duration, nudge, ...

Track-specific cmds are looked up in Cmd.Track.

  1. Track specific event operations, possibly affecting all events in the selection: transposition, etc. These are active regardless of EditMode, and are found in Cmd.*TrackKeymap.
  2. Track specific event editing, which modifies a single event. E.g., input notes and note text, pitches in a certain scale, control values, etc. This is enabled by edit mode, and will shadow printable keys, depending on the track type and edit mode. Found in Cmd.*Track.
  3. Kbd entry, if on, will hijack the letter keys and turn them into NoteOns.

Then there's midi recording: (TODO which is theoretical since it's not implemented)

In record mode, the block is played while recording midi msgs and their timestamps, which are later passed to the integrator to convert into events.



all_keymap :: Cmd.Keymap Cmd.CmdId Source #

This is not useful for execution since the cmds themselves have been stripped of their code, but it's still useful to find keymap collisions and print a global keymap. They're stripped to make them all the same type, so they can all go into the same Keymap, so collision detection and documentation doesn't have to care about pure_keymap vs io_keymap.