diff options
Diffstat (limited to 'player')
-rw-r--r-- | player/command.c | 7 | ||||
-rw-r--r-- | player/lua/defaults.lua | 10 |
2 files changed, 11 insertions, 6 deletions
diff --git a/player/command.c b/player/command.c index 28f48b43e1..00ebddf343 100644 --- a/player/command.c +++ b/player/command.c @@ -5516,9 +5516,10 @@ static void cmd_script_binding(void *p) char state[3] = {'p', incmd->is_mouse_button ? 'm' : '-'}; if (incmd->is_up_down) state[0] = incmd->repeated ? 'r' : (incmd->is_up ? 'u' : 'd'); - event.num_args = 4; - event.args = (const char*[4]){"key-binding", name, state, - incmd->key_name ? incmd->key_name : ""}; + event.num_args = 5; + event.args = (const char*[5]){"key-binding", name, state, + incmd->key_name ? incmd->key_name : "", + incmd->key_text ? incmd->key_text : ""}; if (mp_client_send_event_dup(mpctx, target, MPV_EVENT_CLIENT_MESSAGE, &event) < 0) { diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua index 127e92036b..38b6a9d04b 100644 --- a/player/lua/defaults.lua +++ b/player/lua/defaults.lua @@ -54,10 +54,10 @@ local function reserve_binding() return "__keybinding" .. tostring(message_id) end -local function dispatch_key_binding(name, state, key_name) +local function dispatch_key_binding(name, state, key_name, key_text) local fn = dispatch_key_bindings[name] if fn then - fn(name, state, key_name) + fn(name, state, key_name, key_text) end end @@ -176,11 +176,15 @@ local function add_binding(attrs, key, name, fn, rp) ["r"] = "repeat", ["p"] = "press", } - key_cb = function(name, state, key_name) + key_cb = function(name, state, key_name, key_text) + if key_text == "" then + key_text = nil + end fn({ event = key_states[state:sub(1, 1)] or "unknown", is_mouse = state:sub(2, 2) == "m", key_name = key_name, + key_text = key_text, }) end msg_cb = function() |