diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 46b6c4cde7293..0fc0619a11ec6 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1344,13 +1344,16 @@ Input Commands that are Possibly Subject to Change key with a letter is normally not emitted as having a modifier, and results in upper case text instead, but some backends may mess up). - The key state consists of 2 characters: + The key state consists of 3 characters: 1. One of ``d`` (key was pressed down), ``u`` (was released), ``r`` (key is still down, and was repeated; only if key repeat is enabled for this binding), ``p`` (key was pressed; happens if up/down can't be tracked). 2. Whether the event originates from the mouse, either ``m`` (mouse button) or ``-`` (something else). + 3. Whether the event results from a cancellation (e.g. the key is logically + released but not physically released), either ``c`` (canceled) or ``-`` + (something else). Not all types of cancellations set this flag. Future versions can add more arguments and more key state characters to support more input peculiarities. diff --git a/player/command.c b/player/command.c index cabd517331e91..ddf5c7dd4a9f3 100644 --- a/player/command.c +++ b/player/command.c @@ -6342,7 +6342,8 @@ static void cmd_script_binding(void *p) target = space; name = sep + 1; } - char state[3] = {'p', incmd->is_mouse_button ? 'm' : '-'}; + char state[4] = {'p', incmd->is_mouse_button ? 'm' : '-', + incmd->canceled ? 'c' : '-'}; if (incmd->is_up_down) state[0] = incmd->repeated ? 'r' : (incmd->is_up ? 'u' : 'd'); event.num_args = 5;