快捷键自定义与控制台#

ver.20230212

#

阅读本文前默认已基本熟悉 mpv.conf 内各参数的用途及含义。
本文是 mpv进阶的小节2 的拓展内容。

关联官方手册部分 Manual_inputconf

前文要点#

  • 设置文件夹内的 input.conf 存储用户自行设定的快捷键。通常mpv读取该文件并覆盖内建的初始快捷键方案中的重名项。
    如果没有该文件则默认使用 内建的原始快捷键预设
    (在 mpv.conf 中使用参数 --input-conf=<filename> 可指定使用另外的文件取代 input.conf

  • input.conf 中使用参数 input-builtin-bindings=noinput-default-bindings=no 可屏蔽全部内建的原始快捷键预设(后者能进一步屏蔽外置脚本内的静态若绑定预设)。

  • mpv-lazy版中可供参考的大量示例

1.语法简述#

<键位绑定(按键名)>   <具体命令>   # 支持行后注释

键位绑定 前添加注释符 # 即屏蔽该行内容
若存在多行相同的 按键名 ,则后方的行覆盖之前的行,成为mpv读取的实际内容。

1.1.键位绑定#

1.1.1.单键位#

普通按键和一般功能键可单独作为键位绑定

a 1 F1 SPACE
示例:

SPACE   cycle pause   # 切换暂停

🔺 编辑键值名时,输入符号时应注意中文输入法的全半角(即用英文字符)

1.1.2.组合键#

Shift Ctrl Alt
示例:

Ctrl+a   set aid no   # 禁用音轨

🔺 但是这几个键自身不可以作为键位触发

1.1.3.大写和上档#

不支持 Shift+字母/数字 这种写法,解决方案是 ——

示例1:

A   cycle mute   # 切换静音

在mpv中对应的操作即 Shift + a
当然你也可以在激活 CAPS(大写锁定键) 的情况下直接按 a 触发

示例2:

!   cycle mute   # 切换静音

如果你使用的是美式键盘布局,则实际对应的是 Shift + 1

🔺 由于 注释符 # 与 按键 # 重名,如果你要绑定这个键位,应用 SHARP 作为按键名

1.1.4.连键#

连键不是双击,两次按键之间没有限制触发时间间隔。

示例1:

q-q   quit     # 退出
q     ignore

即按两次 q 退出mpv
此处屏蔽 q 的目的是防止触发上一行时先触发该键的动作

示例2:

q-a-z   quit     # 退出
q       ignore
q-a     ignore

连键不仅支持同个按键,更支持串联多个不同按键
同上,安全起见,屏蔽中间键的动作

1.2.具体命令#

大体分为两类 ——

1.2.1.属性相关#

在mpv运行时可以通过操作属性,来达成动态修改mpv.conf中的选项值的效果。
mpv中可用的属性列表参见 此处
部分 属性名 与 mpv.conf 用的 选项名 重名,未全部列出

设置某个属性为某个值,用 set <属性名> <值>
增减某个属性的数值,用 add <属性名> <数值>
乘以某个属性的数值,用 multiply <属性名> <数值>
使某属性在可变的多个值中切换,用 cycle <属性名>
使某属性在你指定的多个值中切换,用 cycle-values <属性名> <必要值1> <必要值2> [可选值3] ...

以上用途的汇总示例:

w   set volume 100                        # 设定音量为100
e   add saturation 1                      # 增加饱和度 1
r   add hue -2                            # 减少色相 2
t   multiply speed 1/1.1                  # 减速
y   multiply speed 2                      # 倍速
u   cycle fullscreen                      # 切换 全屏
i   cycle-values hwdec yes no auto-copy   # 切换解码模式

🔺 并非所有属性都可以在运行时变更

1.2.1.1.滤镜与着色器列表管理#

虽然依然可用通过 set <属性名> <值> 的方式设置,但是涉及列表的部分属性提供了更灵活的细致操作 ——

  • 滤镜相关的内容详见 此处

  • 着色器相关的内容详见 此处

1.2.2.直接命令#

即指不触碰属性,直接执行动作,示例:

s   stop   # 停止

其中 ignore 为特殊命令,用来屏蔽键位的操作( 小节 “键位绑定” 部分已有示例)

更多可用直接命令参见 此处

1.2.2.1.脚本指令#

mpv的脚本可能提供了额外定义的名义可供用户使用,这通常应由开发者进行详细说明。
涉及的命令为:
script-binding [可选脚本名]/<脚本命令名>
script-message <脚本命令名>
script-message-to <对象名> <脚本命令名>

以内建脚本 stats.lua 为例:

I   script-binding stats/display-stats-toggle   # 开/关 常驻显示统计信息
i   script-binding display-stats-toggle

1.2.3.静默与串联#

大多数命令执行时会显示OSD信息,可以通过 no-osd 作为命令的前缀来禁止其显示。
示例:

RIGHT   no-osd seek 5   # 前进 5 秒

一个键位可以执行多个命令,可以用 ; (半角的分号)作为分隔标志
示例:

RIGHT   seek 5 ; show-text "向前 5 秒"   # 前进 5 秒并显示OSD文本消息

2.辅助#

  • mpv的内建脚本 stats.lua 的第四页可显示已绑定的按键信息

stats_01
  • 终端运行 ./mpv --input-keylist 将列出所有可用的键值名

  • 终端运行 ./mpv --input-test --force-window --idle 将打开一个空mpv窗口便于测试实际键位对应的值
    (mpv-lazy提供了 输入模式 便于更快启动)

3.控制台#

mpv的内建脚本 console.lua 提供了控制台的功能。这是另一种在运行时动态修改“选项值”的解决方案。

默认为 ` 打开控制台(注意观察画面左下角),打开后按 ESC 即可退出控制台。你可以在 input.conf 中重新绑定控制台的启用按键:

TAB   script-binding console/enable # 进入控制台

可在控制台中直接输入命令(它的语法等同 input.conf 中的 <具体命令> ),按 ENTER 立即执行。
示例:

# 输入以下这行并执行,立即截屏
screenshot