summaryrefslogtreecommitdiffstats
path: root/input/input.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-08-24 13:29:28 +0200
committerwm4 <wm4@nowhere>2012-08-24 14:30:25 +0200
commit27a8610c560b07b04ca3a4ee3ed0bdb8d1daa672 (patch)
tree964cd53e303a3747709a58196dccce8d57273b6e /input/input.c
parent2adc81f0a2459a565437009ff6f4ace1dca3d46c (diff)
downloadmpv-27a8610c560b07b04ca3a4ee3ed0bdb8d1daa672.tar.bz2
mpv-27a8610c560b07b04ca3a4ee3ed0bdb8d1daa672.tar.xz
input: add ability to disable all default bindings for an input section
Add a flags parameter to mp_input_set_section(). Add a flag that defines whether bindings in the default section are used or not. This is useful for special functionality, where the normal key bindings may have unwanted effects. For example, it shouldn't be possible to seek during encoding. However, you want to be able to cancel the encoding process gracefully. For that purpose, the "encode" section of input.conf could be made exclusive: mp_input_set_section(mpctx->input, "encode", MP_INPUT_NO_DEFAULT_SECTION); And input.conf could contain this definition: RIGHT seek 10 q {encode} quit Then only the key "q" would be bound during encoding.
Diffstat (limited to 'input/input.c')
-rw-r--r--input/input.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/input/input.c b/input/input.c
index 98b135c349..6bf45edf7e 100644
--- a/input/input.c
+++ b/input/input.c
@@ -452,6 +452,8 @@ struct input_ctx {
struct cmd_bind_section *cmd_bind_sections;
// Name of currently used command section
char *section;
+ // Bitfield of mp_input_section_flags
+ int section_flags;
// Used to track whether we managed to read something while checking
// events sources. If yes, the sources may have more queued.
@@ -1023,10 +1025,12 @@ static mp_cmd_t *get_cmd_from_keys(struct input_ctx *ictx, int n, int *keys)
cmd = section_find_bind_for_key(ictx, false, ictx->section, n, keys);
if (ictx->default_bindings && cmd == NULL)
cmd = section_find_bind_for_key(ictx, true, ictx->section, n, keys);
- if (cmd == NULL)
- cmd = section_find_bind_for_key(ictx, false, "default", n, keys);
- if (ictx->default_bindings && cmd == NULL)
- cmd = section_find_bind_for_key(ictx, true, "default", n, keys);
+ if (!(ictx->section_flags & MP_INPUT_NO_DEFAULT_SECTION)) {
+ if (cmd == NULL)
+ cmd = section_find_bind_for_key(ictx, false, "default", n, keys);
+ if (ictx->default_bindings && cmd == NULL)
+ cmd = section_find_bind_for_key(ictx, true, "default", n, keys);
+ }
if (cmd == NULL) {
char *key_buf = get_key_combo_name(keys, n);
@@ -1524,10 +1528,11 @@ static int parse_config_file(struct input_ctx *ictx, char *file)
return 1;
}
-void mp_input_set_section(struct input_ctx *ictx, char *name)
+void mp_input_set_section(struct input_ctx *ictx, char *name, int flags)
{
talloc_free(ictx->section);
ictx->section = talloc_strdup(ictx, name ? name : "default");
+ ictx->section_flags = flags;
}
char *mp_input_get_section(struct input_ctx *ictx)