From 89c1525585aae363dc57bd1e4510de8e6da2f480 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 24 Nov 2014 16:47:03 +0100 Subject: lua: always handle key repeat on the script side Simpler, and leaves the decision to repeat or not fully to the script (instead of requiring the user to care about it when remapping a script binding). --- input/cmd_list.c | 4 +++- player/lua/defaults.lua | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/input/cmd_list.c b/input/cmd_list.c index 1edc28d521..d5bd203611 100644 --- a/input/cmd_list.c +++ b/input/cmd_list.c @@ -166,7 +166,9 @@ const struct mp_cmd_def mp_cmds[] = { { MP_CMD_VO_CMDLINE, "vo_cmdline", { ARG_STRING } }, - { MP_CMD_SCRIPT_BINDING, "script_binding", { ARG_STRING } }, + { MP_CMD_SCRIPT_BINDING, "script_binding", { ARG_STRING }, + .allow_auto_repeat = true}, + { MP_CMD_SCRIPT_MESSAGE, "script_message", { ARG_STRING }, .vararg = true }, { MP_CMD_SCRIPT_MESSAGE_TO, "script_message_to", { ARG_STRING, ARG_STRING }, .vararg = true }, diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua index 7e038dfbb8..55f5bddf39 100644 --- a/player/lua/defaults.lua +++ b/player/lua/defaults.lua @@ -75,7 +75,7 @@ function mp.set_key_bindings(list, section, flags) local is_mouse = state:sub(2, 2) == "m" local def = (is_mouse and "u") or "d" if event == "r" then - event = "d" + return end if event == "p" and cb then cb() @@ -142,9 +142,7 @@ local function add_binding(attrs, key, name, fn, rp) name = reserve_binding() end local bind = key - if rp == "repeatable" or rp["repeatable"] then - bind = bind .. " repeatable" - end + local repeatable = rp == "repeatable" or rp["repeatable"] if rp["forced"] then attrs.forced = true end @@ -176,6 +174,9 @@ local function add_binding(attrs, key, name, fn, rp) -- Also, key repeat triggers the binding again. local event = state:sub(1, 1) local is_mouse = state:sub(2, 2) == "m" + if event == "r" and not repeatable then + return + end if is_mouse and event == "u" then fn() elseif (not is_mouse) and (event == "d" or event == "r") then -- cgit v1.2.3