# mpv keybindings
#
# Location of user-defined bindings: ~/.config/mpv/input.conf
#
# Lines starting with # are comments. Use SHARP to assign the # key.
# Copy this file and uncomment and edit the bindings you want to change.
#
# List of commands and further details: DOCS/man/input.rst
# List of special keys: --input-keylist
# Keybindings testing mode: mpv --input-test --force-window --idle
#
# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore').
#
# Strings need to be quoted and escaped:
#   KEY show-text "This is a single backslash: \\ and a quote: \" !"
#
# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with
# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal).
#
# The default keybindings are hardcoded into the mpv binary.
# You can disable them completely with: --no-input-default-bindings

# Developer note:
# On compilation, this file is baked into the mpv binary, and all lines are
# uncommented (unless '' is followed by a space) - thus this file defines the
# default key bindings.

# If this is enabled, treat all the following bindings as default.
# default-bindings start

MOUSE_BTN0 ignore                      # don't do anything
MOUSE_BTN0_DBL cycle fullscreen        # toggle fullscreen on/off
MOUSE_BTN2 cycle pause                 # toggle pause on/off
MOUSE_BTN3 seek 10
MOUSE_BTN4 seek -10
MOUSE_BTN5 add volume -2
MOUSE_BTN6 add volume 2

# Mouse wheels, touchpad or other input devices that have axes
# if the input devices supports precise scrolling it will also scale the
# numeric value accordingly
AXIS_UP    seek 10
AXIS_DOWN  seek -10
AXIS_LEFT  seek 5
AXIS_RIGHT seek -5

# Seek units are in seconds, but note that these are limited by keyframes
RIGHT seek  5
LEFT  seek -5
UP    seek  60
DOWN  seek -60
# Do smaller, always exact (non-keyframe-limited), seeks with shift.
# Don't show them on the OSD (no-osd).
Shift+RIGHT no-osd seek  1 exact
Shift+LEFT  no-osd seek -1 exact
Shift+UP    no-osd seek  5 exact
Shift+DOWN  no-osd seek -5 exact
# Skip to previous/next subtitle (subject to some restrictions; see manpage)
Ctrl+LEFT   no-osd sub-seek -1
Ctrl+RIGHT  no-osd sub-seek  1
PGUP add chapter 1                     # skip to next chapter
PGDWN add chapter -1                   # skip to previous chapter
Shift+PGUP seek 600
Shift+PGDWN seek -600
[ multiply speed 0.9091                # scale playback speed
] multiply speed 1.1
{ multiply speed 0.5
} multiply speed 2.0
BS set speed 1.0                       # reset speed to normal
q quit
Q quit-watch-later
q {encode} quit 4
ESC set fullscreen no
ESC {encode} quit 4
p cycle pause                          # toggle pause/playback mode
. frame-step                           # advance one frame and pause
, frame-back-step                      # go back by one frame and pause
SPACE cycle pause
> playlist-next                        # skip to next file
ENTER playlist-next                    # skip to next file
< playlist-prev                        # skip to previous file
O no-osd cycle-values osd-level 3 1    # cycle through OSD mode
o show-progress
P show-progress
I show-text "${filename}"              # display filename in osd
z add sub-delay -0.1                   # subtract 100 ms delay from subs
x add sub-delay +0.1                   # add
ctrl++ add audio-delay 0.100           # this changes audio/video sync
ctrl+- add audio-delay -0.100
9 add volume -2
/ add volume -2
0 add volume 2
* add volume 2
m cycle mute
1 add contrast -1
2 add contrast 1
3 add brightness -1
4 add brightness 1
5 add gamma -1
6 add gamma 1
7 add saturation -1
8 add saturation 1
Alt+0 set window-scale 0.5
Alt+1 set window-scale 1.0
Alt+2 set window-scale 2.0
# toggle deinterlacer (automatically inserts or removes required filter)
d cycle deinterlace
r add sub-pos -1                       # move subtitles up
t add sub-pos +1                       #                down
v cycle sub-visibility
# stretch SSA/ASS subtitles with anamorphic videos to match historical
V cycle sub-ass-vsfilter-aspect-compat
# switch between applying no style overrides to SSA/ASS subtitles, and
# overriding them almost completely with the normal subtitle style
u cycle-values sub-ass-style-override "force" "no"
j cycle sub                            # cycle through subtitles
J cycle sub down                       # ...backwards
SHARP cycle audio                      # switch audio streams
_ cycle video
T cycle ontop                          # toggle video window ontop of other windows
f cycle fullscreen                     # toggle fullscreen
s screenshot                           # take a screenshot
S screenshot video                     # ...without subtitles
Ctrl+s screenshot window               # ...with subtitles and OSD, and scaled
Alt+s screenshot each-frame            # automatically screenshot every frame
w add panscan -0.1                     # zoom out with -panscan 0 -fs
e add panscan +0.1                     #      in
# cycle video aspect ratios; "-1" is the container aspect
A cycle-values video-aspect "16:9" "4:3" "2.35:1" "-1"
POWER quit
PLAY cycle pause
PAUSE cycle pause
PLAYPAUSE cycle pause
STOP quit
FORWARD seek 60
REWIND seek -60
NEXT playlist-next
PREV playlist-prev
VOLUME_UP add volume 2
VOLUME_DOWN add volume -2
MUTE cycle mute
CLOSE_WIN quit
CLOSE_WIN {encode} quit 4
E cycle edition                        # next edition
l ab-loop                              # Set/clear A-B loop points
L cycle-values loop "inf" "no"         # toggle infinite looping
ctrl+c quit 4

# Apple Remote section
AR_PLAY cycle pause
AR_PLAY_HOLD quit
AR_CENTER cycle pause
AR_CENTER_HOLD quit
AR_NEXT seek 10
AR_NEXT_HOLD seek 120
AR_PREV seek -10
AR_PREV_HOLD seek -120
AR_MENU show-progress
AR_MENU_HOLD cycle mute
AR_VUP add volume 2
AR_VUP_HOLD add chapter 1
AR_VDOWN add volume -2
AR_VDOWN_HOLD add chapter -1

# For tv://
h cycle tv-channel -1                  # previous channel
k cycle tv-channel +1                  # next channel

# For dvb://
H cycle dvb-channel-name -1            # previous channel
K cycle dvb-channel-name +1            # next channel

#
# Legacy bindings (may or may not be removed in the future)
#
! add chapter -1                       # skip to previous chapter
@ add chapter 1                        #         next

#
# Not assigned by default
# (not an exhaustive list of unbound commands)
#

# ? add sub-scale +0.1                  # increase subtitle font size
# ? add sub-scale -0.1                  # decrease subtitle font size
# ? sub-step -1                         # immediately display next subtitle
# ? sub-step +1                         #                     previous
# ? cycle angle                         # switch DVD/Bluray angle
# ? add balance -0.1                    # adjust audio balance in favor of left
# ? add balance 0.1                     #                                  right
# ? cycle sub-forced-only               # toggle DVD forced subs
# ? cycle program                       # cycle transport stream programs
# ? stop                                # stop playback (quit or enter idle mode)
