summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido Cella <guido@guidocella.xyz>2024-01-14 21:36:32 +0100
committerDudemanguy <random342@airmail.cc>2024-02-04 15:12:02 +0000
commit4ab521f08010329701885d4e383a6de77589a389 (patch)
treec1a499c1778351b837c072cd01a75af113cd5312
parent68e3412feeab5c8b0c70d5799c3721532af85c35 (diff)
downloadmpv-4ab521f08010329701885d4e383a6de77589a389.tar.bz2
mpv-4ab521f08010329701885d4e383a6de77589a389.tar.xz
command: add load-input-conf
This can be used to auto reload the input configuration file, e.g. in vim: autocmd BufWritePost ~/.config/mpv/input.conf silent !echo load-input-conf %:p | socat - /tmp/mpvsocket Partially fixes #6362. Additionally this can be used as a replacement for deprecated input sections if they are ever actually removed. For example, if you want to define different bindings for images, you can load-input-conf an input.conf for images, and load the original again when switching to a video. Though currently you would have to redefine builtin bindings that were overwritten with image ones in the default input.conf.
-rw-r--r--DOCS/interface-changes.rst1
-rw-r--r--DOCS/man/input.rst5
-rw-r--r--input/input.c8
-rw-r--r--input/input.h4
-rw-r--r--player/command.c11
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),