keybinding ========== .. dfhack-tool:: :summary: Create hotkeys that will run DFHack commands. :tags: system Like any other command, it can be used at any time from the console, but bindings are not remembered between runs of the game unless re-created in `dfhack.init`. Hotkeys can be any combinations of Ctrl/Alt/Shift with A-Z, 0-9, F1-F12, or ``\``` (the key below the ``Esc`` key. Usage: ``keybinding`` Show some useful information, including the current game context. ``keybinding list `` List bindings active for the key combination. ``keybinding clear [...]`` Remove bindings for the specified keys. ``keybinding add "cmdline" ["cmdline"...]`` Add bindings for the specified key. ``keybinding set "cmdline" ["cmdline"...]`` Clear, and then add bindings for the specified key. The ```` parameter above has the following **case-sensitive** syntax:: [Ctrl-][Alt-][Shift-]KEY[@context[|context...]] where the ``KEY`` part can be any recognized key and [] denote optional parts. When multiple commands are bound to the same key combination, DFHack selects the first applicable one. Later ``add`` commands, and earlier entries within one ``add`` command have priority. Commands that are not specifically intended for use as a hotkey are always considered applicable. The ``context`` part in the key specifier above can be used to explicitly restrict the UI state where the binding would be applicable. Only bindings with a ``context`` tag that either matches the current context fully, or is a prefix ending at a ``/`` boundary would be considered for execution, i.e. when in context ``foo/bar/baz``, keybindings restricted to any of ``@foo/bar/baz``, ``@foo/bar``, ``@foo``, or none will be active. Multiple contexts can be specified by separating them with a pipe (``|``) - for example, ``@foo|bar|baz/foo`` would match anything under ``@foo``, ``@bar``, or ``@baz/foo``. Interactive commands like `liquids` cannot be used as hotkeys. Examples -------- ``keybinding add Alt-F1 hotkeys`` Bind Alt-F1 to run the `hotkeys` command on any screen at any time. ``keybinding add Alt-F@dwarfmode gui/quickfort`` Bind Alt-F to run `gui/quickfort`, but only when on a screen that shows the main map.