From b0381d27eb19d8f70f4f711d41dd342c616ae843 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 23 Dec 2015 19:13:45 +0100 Subject: input: add a catch-all "unmapped" command This can be used to grab all unmapped keys. Fixes #2612. --- input/input.c | 4 +++- input/keycodes.c | 2 ++ input/keycodes.h | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'input') diff --git a/input/input.c b/input/input.c index 58907ccd50..24281fe99e 100644 --- a/input/input.c +++ b/input/input.c @@ -446,7 +446,9 @@ static mp_cmd_t *get_cmd_from_keys(struct input_ctx *ictx, char *force_section, return handle_test(ictx, code); struct cmd_bind *cmd = find_any_bind_for_key(ictx, force_section, code); - if (cmd == NULL) { + if (!cmd) + cmd = find_any_bind_for_key(ictx, force_section, MP_KEY_UNMAPPED); + if (!cmd) { if (code == MP_KEY_CLOSE_WIN) return mp_input_parse_cmd_strv(ictx->log, (const char*[]){"quit", 0}); int msgl = MSGL_WARN; diff --git a/input/keycodes.c b/input/keycodes.c index 21a3c10e64..d6c07288c2 100644 --- a/input/keycodes.c +++ b/input/keycodes.c @@ -171,6 +171,8 @@ static const struct key_name key_names[] = { { MP_KEY_MOUSE_LEAVE, "MOUSE_LEAVE" }, { MP_KEY_MOUSE_ENTER, "MOUSE_ENTER" }, + { MP_KEY_UNMAPPED, "UNMAPPED" }, + { 0, NULL } }; diff --git a/input/keycodes.h b/input/keycodes.h index d95edb1f45..da88d52c37 100644 --- a/input/keycodes.h +++ b/input/keycodes.h @@ -200,6 +200,9 @@ #define MP_KEY_IS_MOUSE(code) \ (MP_KEY_IS_MOUSE_CLICK(code) || MP_KEY_IS_MOUSE_MOVE(code)) +// No input source should generate this. +#define MP_KEY_UNMAPPED (MP_KEY_INTERN+4) + // Emit a command even on key-up (normally key-up is ignored). This means by // default they binding will be triggered on key-up instead of key-down. // This is a fixed part of the keycode, not a modifier than can change. -- cgit v1.2.3