_ver.20220102(此为过时旧版,前往首页查看新版)
懒人包内的 input.conf 已包含大量示例与注解,这篇教程可作补充~~~
全文基于纯净版 20210711-git-f049acf 版本(按照惯例程序根目录新建 portable_config 文件夹)进行演示。 本章亦是 mpv进阶的小节2 的拓展内容,可结合阅读。 官方手册关联: https://mpv.io/manual/master/#input https://mpv.io/manual/master/#input-conf
在mpv播放器中,一般情况下,由 input.conf 文件存储用户自行设定的快捷键。 通常,MPV会自动读取 设置文件夹 中的 input.conf ,并覆盖内建的初始快捷键方案中的重名选项。 没有该文件则默认使用 内置的原始快捷键预设 。
语法格式说明:
xxxxxxxxxx11键值名 对应功能 #(可选)在参数后的注释
键值名前加注释符 # 即屏蔽该行全部内容(等于没写)
Ctrl 与 CTRL 可混用)
Shift Ctrl Alt
这几个键自身不可以作为键位触发( caps fn win 等皆不可以作为单键位触发)A 实际对应的是 shift+a)
A 还可以在 激活 CAPS(大写锁定键) 的情况下直接按 a 触发
不要存在同键位的设置,后行将覆盖前行的设定KP1
但小键盘区的符号键值与字母区的相同🔺 编辑键值名时,输入符号注意中文输入法的全半角...(说人话:使用英文字符)
由于注释符与 # 重名,所以如果你要绑定这个键位,用 SHARP 指代
🔺 shift+字母区数字 的组合不可用于直接绑定,因为不同键盘布局可能存在值差异。以美式键盘为例: shift+1 ,如果你要绑定这个键位,应填写 ! 
quit 这类短命令属于特例,直接对应动作,无前/后缀参数,例如 q qiut 即按q键退出程序。
使用 ignore 使某键位无效化,例如 s ignore 将使s键无法被触发。set 指定某参数,例如 set hwdec yes 指定为硬解。
使用 cycle 使某参数在可变的多个值中切换,例如 cycle fullscreen 即让这个参数在可选的 yes 与 no 中切换。
使用 cycle-values 使某参数在你给定的多个值中切换,例如 cycle-values window-scale "0.5" "1.0" "1.5" 即窗口缩放在三个倍率中切换。add 增减某参数的数值,例如 add volume 10 增加十音量、 add volume 10 减少十音量。
🔺 seek 作为特例不需要 add,例如 seek 5 前进五秒、 seek -5 后退5秒;使用 seek 5 absolute 跳转到时间轴的五秒处
使用 multiply 乘某参数的数值,例如 multiply speed 0.5 即逐次半速播放。no-osd 作为前置命令可使后方命令执行时不显示OSD信息,例如 s no-osd screenshot 即截屏时不会显示屏幕文字信息。其它可用的前置命令见 此处
使用 ; 分隔多个并行的命令,例如 ctrl+alt+BS set speed 1.5 ; set volume 80 按下该组合按键时,同时设置速度一点五和音量八十。script-binding 脚本名/脚本功能 ,可追加绑定脚本的按键(不覆盖脚本预设),例如 d script-binding stats/display-stats 使d键位也能显示统计信息。🔺 不是所有基于 属性 的参数可以在运行时成功更改状态,例如当前 cycle-values gpu-api "d3d11" "vulkan" 这种魔幻操作是不存在的
这还需要解释吗...这东西爱写不写~~~
mpv.conf 中相关的参数:
--input-conf=<filename> 使用此参数指定使用另外的 input.conf 而不是主设置文件夹中的文件。--input-default-bindings=no 使用此参数完全屏蔽内建的所有快捷键,可以省去逐个修改或 ignore 。
🔺 外部脚本的快捷键也将一起被屏蔽,记得随后需要手动绑定--input-right-alt-gr=no 使用此参数将右侧的alt键作为独立按键。--input-doubleclick-time=300 以毫秒为单位将此单位间隔的两次触发识别为双击操作而不是两次独立的操作。
例如原始方案中的 MBTN_LEFT_DBL cycle fullscreen 双击鼠标左键切换全屏的操作将受此影响判定。内置脚本 stats.lua 激活后的第四页能显示已绑定的按键信息
( Shift+ ) i → 4 (此时使用 ↑ / ↓ 键翻页浏览)
![[05] stats-01](IMG/[05] stats-01.webp)
powershell 的命令(PS的操作参考 此处)
./mpv --input-keylist
这将列出所有可用的键值名,详情自行测试或见附录部分。./mpv --input-test --force-window --idle
这将打开一个空mpv窗口便于测试实际键位对应的值。
(懒人包用户直接点击运行程序根目录的 mpv-输入模式.bat)./mpv --input-cmdlist
这将列出所有可绑定的命令(功能),详情自行测试或见附录部分。
https://mpv.io/manual/master/#key-names
xxxxxxxxxx1541SPACE2SHARP3IDEOGRAPHIC_SPACE4ENTER5TAB6BS7DEL8INS9HOME10END11PGUP12PGDWN13ESC1415RIGHT16LEFT17DOWN18UP19F120F221F322F423F524F625F726F827F928F1029F1130F1231KP032KP133KP234KP335KP436KP537KP638KP739KP840KP941KP_DEL42KP_DEC43KP_INS44KP_ENTER45MBTN_LEFT46MBTN_MID47MBTN_RIGHT48WHEEL_UP49WHEEL_DOWN50WHEEL_LEFT51WHEEL_RIGHT52MBTN_BACK53MBTN_FORWARD54MBTN955MBTN1056MBTN1157MBTN1258MBTN1359MBTN1460MBTN1561MBTN1662MBTN1763MBTN1864MBTN1965MBTN_LEFT_DBL66MBTN_MID_DBL67MBTN_RIGHT_DBL68GAMEPAD_ACTION_DOWN69GAMEPAD_ACTION_RIGHT70GAMEPAD_ACTION_LEFT71GAMEPAD_ACTION_UP72GAMEPAD_BACK73GAMEPAD_MENU74GAMEPAD_START75GAMEPAD_LEFT_SHOULDER76GAMEPAD_RIGHT_SHOULDER77GAMEPAD_LEFT_TRIGGER78GAMEPAD_RIGHT_TRIGGER79GAMEPAD_LEFT_STICK80GAMEPAD_RIGHT_STICK81GAMEPAD_DPAD_UP82GAMEPAD_DPAD_DOWN83GAMEPAD_DPAD_LEFT84GAMEPAD_DPAD_RIGHT85GAMEPAD_LEFT_STICK_UP86GAMEPAD_LEFT_STICK_DOWN87GAMEPAD_LEFT_STICK_LEFT88GAMEPAD_LEFT_STICK_RIGHT89GAMEPAD_RIGHT_STICK_UP90GAMEPAD_RIGHT_STICK_DOWN91GAMEPAD_RIGHT_STICK_LEFT92GAMEPAD_RIGHT_STICK_RIGHT93POWER94MENU95PLAY96PAUSE97PLAYPAUSE98STOP99FORWARD100REWIND101NEXT102PREV103VOLUME_UP104VOLUME_DOWN105MUTE106HOMEPAGE107WWW108109FAVORITES110SEARCH111SLEEP112CANCEL113RECORD114CHANNEL_UP115CHANNEL_DOWN116PLAYONLY117PAUSEONLY118XF86_PAUSE119XF86_STOP120XF86_PREV121XF86_NEXT122MOUSE_BTN0123MOUSE_BTN1124MOUSE_BTN2125MOUSE_BTN3126MOUSE_BTN4127MOUSE_BTN5128MOUSE_BTN6129MOUSE_BTN7130MOUSE_BTN8131MOUSE_BTN9132MOUSE_BTN10133MOUSE_BTN11134MOUSE_BTN12135MOUSE_BTN13136MOUSE_BTN14137MOUSE_BTN15138MOUSE_BTN16139MOUSE_BTN17140MOUSE_BTN18141MOUSE_BTN19142MOUSE_BTN0_DBL143MOUSE_BTN1_DBL144MOUSE_BTN2_DBL145AXIS_UP146AXIS_DOWN147AXIS_LEFT148AXIS_RIGHT149CLOSE_WIN150MOUSE_MOVE151MOUSE_LEAVE152MOUSE_ENTER153UNMAPPED154ANY_UNICODE
https://mpv.io/manual/master/#list-of-input-commands
| 命令 | 备注 | 
|---|---|
| ignore | |
| seek | target=Time [flags=Flags] [legacy=Choice] | 
| revert-seek | [flags=Flags] | 
| quit | [code=Integer] | 
| quit-watch-later | [code=Integer] | 
| stop | [flags=Flags] | 
| frame-step | |
| frame-back-step | |
| playlist-next | [flags=Choice] | 
| playlist-prev | [flags=Choice] | 
| playlist-play-index | index=Choice | 
| playlist-shuffle | |
| playlist-unshuffle | |
| sub-step | skip=Integer | 
| sub-seek | skip=Integer | 
| print-text | text=String | 
| show-text | text=String [duration=Integer] [level=Integer] | 
| expand-text | text=String | 
| expand-path | text=String | 
| show-progress | |
| sub-add | url=String [flags=Choice] [title=String] [lang=String] | 
| audio-add | url=String [flags=Choice] [title=String] [lang=String] | 
| video-add | url=String [flags=Choice] [title=String] [lang=String] [albumart=Flag] | 
| sub-remove | [id=Integer] | 
| audio-remove | [id=Integer] | 
| video-remove | [id=Integer] | 
| sub-reload | [id=Integer] | 
| audio-reload | [id=Integer] | 
| video-reload | [id=Integer] | 
| rescan-external-file | [flags=Choice] | 
| screenshot | [flags=Flags] [legacy=Choice] | 
| screenshot-to-file | filename=String [flags=Choice] | 
| screenshot-raw | [flags=Choice] | 
| loadfile | url=String [flags=Choice] [options=Key/value list] | 
| loadlist | url=String [flags=Choice] | 
| playlist-clear | |
| playlist-remove | [index=Choice] | 
| playlist-move | index1=Integer index2=Integer | 
| run | command=String args=String... | 
| subprocess | args=String list [playback_only=Flag] [capture_size=ByteSize] [capture_stdout=Flag] [capture_stderr=Flag] [detach=Flag] [env=String list] [stdin_data=String] [passthrough_stdin=Flag] | 
| set | name=String value=String | 
| change-list | name=String operation=String value=String | 
| add | name=String [value=Double] | 
| cycle | name=String [value=up | 
| multiply | name=String value=Double | 
| cycle-values | arg0=String arg1=String argN=String... | 
| enable-section | name=String [flags=Flags] | 
| disable-section | name=String | 
| define-section | name=String contents=String [flags=Choice] | 
| ab-loop | |
| drop-buffers | |
| af | operation=String value=String | 
| vf | operation=String value=String | 
| af-command | label=String command=String argument=String | 
| vf-command | label=String command=String argument=String | 
| ao-reload | |
| script-binding | name=String | 
| script-message | args=String... | 
| script-message-to | target=String args=String... | 
| overlay-add | id=Integer x=Integer y=Integer file=String offset=Integer fmt=String w=Integer h=Integer stride=Integer | 
| overlay-remove | id=Integer | 
| osd-overlay | id=Integer64 format=Choice data=String [res_x=Integer] [res_y=Integer] [z=Integer] [hidden=Flag] [compute_bounds=Flag] | 
| write-watch-later-config | |
| delete-watch-later-config [ | [filename=String] | 
| mouse | x=Integer y=Integer [button=Integer] [mode=Choice] | 
| keybind | name=String cmd=String | 
| keypress | name=String | 
| keydown | name=String | 
| keyup | [name=String] | 
| apply-profile | name=String [mode=Choice] | 
| load-script | filename=String | 
| dump-cache | start=Time end=Time filename=String | 
| ab-loop-dump-cache | filename=String | 
| ab-loop-align-cache |