diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 08a4930065..5c2fdb57d3 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1832,6 +1832,13 @@ prefixes can be specified. They are separated by whitespace. ``nonrepeatable`` For some commands, keeping a key pressed runs the command repeatedly. This prefix forces disabling key repeat in any case. +``nonscalable`` + When some commands (e.g. ``add``) are bound to scalable keys associated to a + high-precision input device like a touchpad (e.g. ``WHEEL_UP``), the value + specified in the command is scaled to smaller steps based on the high + resolution input data if available. + This prefix forces disabling this behavior, so the value is always changed + in the discrete unit specified in the key binding. ``async`` Allow asynchronous execution (if possible). Note that only a few commands will support this (usually this is explicitly documented). Some commands diff --git a/input/cmd.c b/input/cmd.c index 45a96b4517..6a6d4e63e8 100644 --- a/input/cmd.c +++ b/input/cmd.c @@ -53,6 +53,7 @@ static const struct flag cmd_flags[] = { {"raw", MP_EXPAND_PROPERTIES, 0}, {"repeatable", MP_DISALLOW_REPEAT, MP_ALLOW_REPEAT}, {"nonrepeatable", MP_ALLOW_REPEAT, MP_DISALLOW_REPEAT}, + {"nonscalable", 0, MP_DISALLOW_SCALE}, {"async", MP_SYNC_CMD, MP_ASYNC_CMD}, {"sync", MP_ASYNC_CMD, MP_SYNC_CMD}, {0} @@ -618,7 +619,7 @@ bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd) bool mp_input_is_scalable_cmd(struct mp_cmd *cmd) { - return cmd->def->scalable; + return cmd->def->scalable && !(cmd->flags & MP_DISALLOW_SCALE); } void mp_print_cmd_list(struct mp_log *out) diff --git a/input/cmd.h b/input/cmd.h index c82dd337c8..1244502c54 100644 --- a/input/cmd.h +++ b/input/cmd.h @@ -76,6 +76,7 @@ enum mp_cmd_flags { MP_SYNC_CMD = 64, // block on command completion MP_DISALLOW_REPEAT = 128, // if used as keybinding, disallow key repeat + MP_DISALLOW_SCALE = 256, // if used as keybinding, make it non-scalable MP_ON_OSD_FLAGS = MP_ON_OSD_NO | MP_ON_OSD_AUTO | MP_ON_OSD_BAR | MP_ON_OSD_MSG,