dfhack/docs/builtins/keybinding.rst

73 lines
2.8 KiB
ReStructuredText

2022-07-18 11:58:35 -06:00
keybinding
==========
2022-07-18 11:58:35 -06:00
.. dfhack-tool::
:summary: Create hotkeys that will run DFHack commands.
2022-08-12 00:34:37 -06:00
:tags: dfhack
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
2022-11-12 11:29:09 -07:00
:file:`dfhack-config/init/dfhack.init`.
2022-07-18 11:58:35 -06:00
2022-11-12 11:29:09 -07:00
Hotkeys can be any combinations of Ctrl/Alt/Shift with A-Z, 0-9, F1-F12, or `
(the key below the :kbd:`Esc` key on most keyboards).
2022-07-18 11:58:35 -06:00
2022-08-17 23:42:02 -06:00
Usage
-----
2022-07-18 11:58:35 -06:00
``keybinding``
Show some useful information, including the current game context.
``keybinding list <key>``
List bindings active for the key combination.
``keybinding clear <key> [<key>...]``
Remove bindings for the specified keys.
2022-11-12 11:29:09 -07:00
``keybinding add <key> "<cmdline>" ["<cmdline>" ...]``
Add bindings for the specified key.
2022-11-12 11:29:09 -07:00
``keybinding set <key> "<cmdline>" ["<cmdline>" ...]``
Clear, and then add bindings for the specified key.
2022-07-18 11:58:35 -06:00
The ``<key>`` parameter above has the following **case-sensitive** syntax::
[Ctrl-][Alt-][Shift-]KEY[@context[|context...]]
2022-11-12 11:29:09 -07:00
where the ``KEY`` part can be any recognized key and :kbd:`[`:kbd:`]` denote
optional parts.
2022-07-18 11:58:35 -06:00
2023-06-07 02:10:20 -06:00
DFHack commands can advertise the contexts in which they can be usefully run.
For example, a command that acts on a selected unit can tell `keybinding` that
it is not "applicable" in the current context if a unit is not actively
selected.
2022-07-18 11:58:35 -06:00
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``.
2022-11-12 11:29:09 -07:00
Commands like `liquids` or `tiletypes` cannot be used as hotkeys since they
require the console for interactive input.
2022-07-18 11:58:35 -06:00
Examples
--------
2022-07-18 11:58:35 -06:00
2022-11-12 11:29:09 -07:00
``keybinding add Ctrl-Shift-C hotkeys``
Bind Ctrl-Shift-C 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.
2022-11-12 11:29:09 -07:00
``keybinding add Ctrl-Shift-Z@dwarfmode/Default "stocks show"``
Bind Ctrl-Shift-Z to run `stocks show <stocks>`, but only when on the main
map in the default mode (that is, no special mode, like cursor look, is
enabled).