diff options
-rw-r--r-- | DOCS/interface-changes.rst | 1 | ||||
-rw-r--r-- | DOCS/man/input.rst | 5 | ||||
-rw-r--r-- | input/input.c | 8 | ||||
-rw-r--r-- | input/input.h | 4 | ||||
-rw-r--r-- | player/command.c | 11 |
5 files changed, 29 insertions, 0 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst index 635dedfc74..9055ca53a2 100644 --- a/DOCS/interface-changes.rst +++ b/DOCS/interface-changes.rst @@ -43,6 +43,7 @@ Interface changes - remove `--term-remaining-playtime` option - change fallback deinterlace to bwdif - add the command `load-config-file` + - add the command `load-input-conf` --- mpv 0.37.0 --- - `--save-position-on-quit` and its associated commands now store state files in %LOCALAPPDATA% instead of %APPDATA% directory by default on Windows. diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 74c3793bcf..d0d5970176 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1341,6 +1341,11 @@ Input Commands that are Possibly Subject to Change was already included, its previous options are not reset before it is reparsed. +``load-input-conf <filename>`` + Load an input configuration file, similar to the ``--input-conf`` option. If + the file was already included, its previous bindings are not reset before it + is reparsed. + ``load-script <filename>`` Load a script, similar to the ``--script`` option. Whether this waits for the script to finish initialization or not changed multiple times, and the diff --git a/input/input.c b/input/input.c index 4c8d8211db..c09eccf193 100644 --- a/input/input.c +++ b/input/input.c @@ -1395,6 +1395,14 @@ void mp_input_load_config(struct input_ctx *ictx) input_unlock(ictx); } +bool mp_input_load_config_file(struct input_ctx *ictx, char *file) +{ + input_lock(ictx); + bool result = parse_config_file(ictx, file); + input_unlock(ictx); + return result; +} + static void clear_queue(struct cmd_queue *queue) { while (queue->first) { diff --git a/input/input.h b/input/input.h index cfc9480342..7f6707eeca 100644 --- a/input/input.h +++ b/input/input.h @@ -178,8 +178,12 @@ struct input_ctx *mp_input_init(struct mpv_global *global, void (*wakeup_cb)(void *ctx), void *wakeup_ctx); +// Load the configured input.conf files. void mp_input_load_config(struct input_ctx *ictx); +// Load a specific input.conf file. +bool mp_input_load_config_file(struct input_ctx *ictx, char *file); + void mp_input_update_opts(struct input_ctx *ictx); void mp_input_uninit(struct input_ctx *ictx); diff --git a/player/command.c b/player/command.c index 1ad7868a7f..f84806ae52 100644 --- a/player/command.c +++ b/player/command.c @@ -6288,6 +6288,15 @@ static void cmd_load_config_file(void *p) mp_notify_property(mpctx, "profile-list"); } +static void cmd_load_input_conf(void *p) +{ + struct mp_cmd_ctx *cmd = p; + struct MPContext *mpctx = cmd->mpctx; + + char *config_file = cmd->args[0].v.s; + cmd->success = mp_input_load_config_file(mpctx->input, config_file); +} + static void cmd_load_script(void *p) { struct mp_cmd_ctx *cmd = p; @@ -6827,6 +6836,8 @@ const struct mp_cmd_def mp_cmds[] = { { "load-config-file", cmd_load_config_file, {{"filename", OPT_STRING(v.s)}} }, + { "load-input-conf", cmd_load_input_conf, {{"filename", OPT_STRING(v.s)}} }, + { "load-script", cmd_load_script, {{"filename", OPT_STRING(v.s)}} }, { "dump-cache", cmd_dump_cache, { {"start", OPT_TIME(v.d), |