The Clave module provides methods to map keyboard input to actions. Its main ideas are * `KeyCode`: (a physical key position) * `KeyState`: (a set of keys, such as the ones held down) * `KeyInput`: (a key press as a command) * `KeySnapshot`: (the keyboard at one instant: what's held, and what was pressed or released since the last one) * `KeyFormula`: (a boolean function of which keys are held, pressed and released, built on Amphora's BinaryDecisionDiagram) * `Chord`: (a key combination to match against a snapshot, such as Ctrl+Z) * `ChordSet`: (chords that compete for the same input, where the most specific matching chord wins) This module doesn't deal with how input is routed from hosts, just how the input is interpreted and built up to form more complex key presses.