summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/lua.rst6
-rw-r--r--player/lua/defaults.lua8
2 files changed, 10 insertions, 4 deletions
diff --git a/DOCS/man/lua.rst b/DOCS/man/lua.rst
index fbba495a4f..e01754b3ef 100644
--- a/DOCS/man/lua.rst
+++ b/DOCS/man/lua.rst
@@ -181,7 +181,7 @@ The ``mp`` module is preloaded, although it can be loaded manually with
Return the current mpv internal time in seconds as a number. This is
basically the system time, with an arbitrary offset.
-``mp.add_key_binding(key, name|fn [,fn])``
+``mp.add_key_binding(key, name|fn [,fn [,flags]])``
Register callback to be run on a key binding. The binding will be mapped to
the given ``key``, which is a string describing the physical key. This uses
the same key names as in input.conf, and also allows combinations
@@ -198,6 +198,10 @@ The ``mp`` module is preloaded, although it can be loaded manually with
overwritten. You can omit the name, in which case a random name is generated
internally.
+ The last argument is used for additional flags. Currently, this includes
+ the string ``repeatable``, which enables key repeat for this specific
+ binding.
+
Internally, key bindings are dispatched via the ``script_message_to`` input
command and ``mp.register_script_message``.
diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua
index 6708f06470..f995dd40d2 100644
--- a/player/lua/defaults.lua
+++ b/player/lua/defaults.lua
@@ -105,8 +105,9 @@ local function update_key_bindings()
local cfg = ""
for k, v in pairs(key_bindings) do
if v.forced ~= def then
- cfg = cfg .. v.key .. " script_message_to " .. mp.script_name
- .. " " .. v.name .. "\n"
+ local flags = (v.repeatable and " repeatable") or ""
+ cfg = cfg .. v.key .. " " .. flags .. " script_message_to "
+ .. mp.script_name .. " " .. v.name .. "\n"
end
end
mp.input_define_section(section, cfg, flags)
@@ -115,12 +116,13 @@ local function update_key_bindings()
end
end
-local function add_binding(attrs, key, name, fn)
+local function add_binding(attrs, key, name, fn, rp)
if (type(name) ~= "string") and (not fn) then
fn = name
name = "message" .. tostring(message_id)
message_id = message_id + 1
end
+ attrs.repeatable = rp == "repeatable"
attrs.key = key
attrs.name = name
key_bindings[name] = attrs