mpv/DOCS
Avi Halachmi (:avih) 2a183c5ca7 input: new option: --no-input-builtin-bindings
This is similar to [no-]input-default-bindings, but affects only
builtin bindings (while input-default-bindings affects anything which
config files can override, like scripting mp.add_key_binding).

Arguably, this is what input-default-binding should have always done,
however, it does not.

The reason we add a new option rather than repurpose/modify the
existing option is that it behaves differently enough to raise
concerns that it will break some use cases for existing users:
- The new option is only applied once on startup, while
  input-default-bindings can be modified effectively at runtime.
- They affects different sets of bindings, and it's possible that
  the set of input-default-bindings is useful enough to keep.

Implementation-wise, both options are trivial, so keeping one or the
other or both doesn't affect code complexity.

It could be argued that it would be useful to make the new option
also effective for runtime changes, however, this opens a can of
worms of how the bindings are stored beyond the initial setup.

TL;DR: it's impossible to differentiate correctly at runtime between
builtin bindings, and those added with mp.add_key_bindings.

The gist is that technically mpv needs/uses two binding "classes":
- weak/builtin bindings - lower priority than config files.
- "user" bindings - config files and "forced" runtime bindings.

input-default-bindings affects the first class trivially, but
input-builtin-bindings would not be able split this class further
at runtime without meaningful changes to a lot of delicate code.

So a new option it is. It should be useful to some libmpv clients
(players) which want to disable mpv's builtin bindings without
breaking mp.add_key_bindings for scripts.

Fixes #8809
(again. the previous fix 8edfe70b only improved the docs, while
now we're actually making the requested behavior possible)
2021-10-11 22:16:51 +03:00
..
man input: new option: --no-input-builtin-bindings 2021-10-11 22:16:51 +03:00
client-api-changes.rst client API: inactivate the opengl_cb API 2020-09-03 14:52:11 +02:00
compatibility.rst DOCS/compatibility.rst: add this file 2019-10-05 02:11:55 +02:00
compile-windows.md DOCS: convert 3rd party http links to https 2021-08-17 13:42:21 +00:00
contribute.md DOCS/contrinute: add commit title example prefixes 2021-08-15 22:15:27 +03:00
edl-mpv.rst edl: add a way to add tags 2021-05-11 22:18:40 +02:00
encoding.rst DOCS/encoding.rst: remove deprecated usage of multiple items with *-add 2020-01-07 18:13:12 +01:00
interface-changes.rst input: new option: --no-input-builtin-bindings 2021-10-11 22:16:51 +03:00
mplayer-changes.rst DOCS: convert mpv.io and github links to https 2021-08-17 13:42:21 +00:00
release-policy.md DOCS/release-policy.md: clarify a few details 2019-10-27 14:06:16 +01:00
tech-overview.txt options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
waf-buildsystem.rst DOCS: replace dead waf book link with working one 2021-08-17 13:42:21 +00:00