#  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

# MBTN_LEFT     ignore              # don't do anything
# MBTN_LEFT_DBL cycle fullscreen    # toggle fullscreen
F cycle fullscreen
# MBTN_RIGHT    cycle pause         # toggle pause/playback mode
# MBTN_BACK     playlist-prev       # skip to the previous file
# MBTN_FORWARD  playlist-next       # skip to the next file

#  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
# WHEEL_UP      seek 10          # seek 10 seconds forward
# WHEEL_DOWN    seek -10         # seek 10 seconds backward
# WHEEL_LEFT    add volume -2
# WHEEL_RIGHT   add volume 2
#

# Anime filter keys
Ctrl+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A (Fast)"
Ctrl+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B (Fast)"
Ctrl+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C (Fast)"
Ctrl+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A+A (Fast)"
Ctrl+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B+B (Fast)"
Ctrl+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C+A (Fast)"

Ctrl+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"

# # Seek units are in seconds, but note that these are limited by keyframes
RIGHT seek  4 exact                    # seek 5 seconds forward
LEFT  seek -4 exact                    # seek 5 seconds backward
j seek -12 exact
l seek  12 exact
# UP    seek  60                         # seek 1 minute forward
# DOWN  seek -60                         # seek 1 minute backward
#  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       # seek exactly 1 second forward
# Shift+LEFT  no-osd seek -1 exact       # seek exactly 1 second backward
# Shift+UP    no-osd seek  5 exact       # seek exactly 5 seconds forward
# Shift+DOWN  no-osd seek -5 exact       # seek exactly 5 seconds backward
# Ctrl+LEFT   no-osd sub-seek -1         # seek to the previous subtitle
# Ctrl+RIGHT  no-osd sub-seek  1         # seek to the next subtitle
# Ctrl+Shift+LEFT sub-step -1            # change subtitle timing such that the previous subtitle is displayed
# Ctrl+Shift+RIGHT sub-step 1            # change subtitle timing such that the next subtitle is displayed
# Alt+left  add video-pan-x  0.1         # move the video right
# Alt+right add video-pan-x -0.1         # move the video left
# Alt+up    add video-pan-y  0.1         # move the video down
# Alt+down  add video-pan-y -0.1         # move the video up
# Alt++     add video-zoom   0.1         # zoom in
# Alt+-     add video-zoom  -0.1         # zoom out
# Alt+BS set video-zoom 0 ; set video-pan-x 0 ; set video-pan-y 0 # reset zoom and pan settings
# PGUP add chapter 1                     # seek to the next chapter
# PGDWN add chapter -1                   # seek to the previous chapter
# Shift+PGUP seek 600                    # seek 10 minutes forward
# Shift+PGDWN seek -600                  # seek 10 minutes backward
# [ multiply speed 1/1.1                 # decrease the playback speed
# ] multiply speed 1.1                   # increase the playback speed
# { multiply speed 0.5                   # halve the playback speed
# } multiply speed 2.0                   # double the playback speed
# BS set speed 1.0                       # reset the speed to normal
# Shift+BS revert-seek                   # undo the previous (or marked) seek
# Shift+Ctrl+BS revert-seek mark         # mark the position for revert-seek
# q quit
# Q quit-watch-later                     # exit and remember the playback position
# q {encode} quit 4
# ESC set fullscreen no                  # leave fullscreen
# 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                      # toggle pause/playback mode
k cycle pause                      # toggle pause/playback mode
# > playlist-next                        # skip to the next file
# ENTER playlist-next                    # skip to the next file
# < playlist-prev                        # skip to the previous file
# O no-osd cycle-values osd-level 3 1    # toggle displaying the OSD on user interaction or always
# o show-progress                        # show playback progress
# P show-progress                        # show playback progress
# i script-binding stats/display-stats   # display information and statistics
# I script-binding stats/display-stats-toggle # toggle displaying information and statistics
# ` script-binding console/enable        # open the console
# z add sub-delay -0.1                   # shift subtitles 100 ms earlier
# Z add sub-delay +0.1                   # delay subtitles by 100 ms
# x add sub-delay +0.1                   # delay subtitles by 100 ms
[ add sub-delay -0.1                   # shift subtitles 100 ms earlier
] add sub-delay +0.1                   # delay subtitles by 100 ms
{ add sub-delay -10                    # shift subtitles 10s earlier
} add sub-delay +10                    # delay subtitles by 10s
( add audio-delay -0.1           # change audio/video sync by delaying the audio
) add audio-delay +0.1           # change audio/video sync by shifting the audio earlier
+ add sub-scale +0.01
_ add sub-scale -0.01
# ctrl++ add audio-delay 0.100           # change audio/video sync by delaying the audio
# ctrl+- add audio-delay -0.100          # change audio/video sync by shifting the audio earlier
# Shift+g add sub-scale +0.1             # increase the subtitle font size
# Shift+f add sub-scale -0.1             # decrease the subtitle font size
# 9 add volume -2
# / add volume -2
# 0 add volume 2
# * add volume 2
m cycle mute                           # toggle 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 current-window-scale 0.5     # halve the window size
# Alt+1 set current-window-scale 1.0     # reset the window size
# Alt+2 set current-window-scale 2.0     # double the window size
# d cycle deinterlace                    # toggle the deinterlacing filter
# r add sub-pos -1                       # move subtitles up
# R add sub-pos +1                       # move subtitles down
# t add sub-pos +1                       # move subtitles down
# v cycle sub-visibility                 # hide or show the subtitles
# Alt+v cycle secondary-sub-visibility   # hide or show the secondary subtitles
# V cycle sub-ass-vsfilter-aspect-compat # toggle stretching SSA/ASS subtitles with anamorphic videos to match the historical renderer
# u cycle-values sub-ass-override "force" "no" # toggle overriding SSA/ASS subtitle styles with the normal styles
# j cycle sub                            # switch subtitle track
# J cycle sub down                       # switch subtitle track backwards
n cycle sub                            # switch subtitle track
N cycle sub down                       # switch subtitle track backwards
# SHARP cycle audio                      # switch audio track
a cycle audio
A cycle audio down
# _ cycle video                          # switch video track
# T cycle ontop                          # toggle placing the video on top of other windows
# f cycle fullscreen                     # toggle fullscreen
# s screenshot                           # take a screenshot of the video in its original resolution with subtitles
# S screenshot video                     # take a screenshot of the video in its original resolution without subtitles
# Ctrl+s screenshot window               # take a screenshot of the window with OSD and subtitles
# Alt+s screenshot each-frame            # automatically screenshot every frame; issue this command again to stop taking screenshots
# w add panscan -0.1                     # decrease panscan
# W add panscan +0.1                     # shrink black bars by cropping the video
# e add panscan +0.1                     # shrink black bars by cropping the video
# A cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "-1" # cycle the video aspect ratio ("-1" is the container aspect)
# POWER quit
# PLAY cycle pause                       # toggle pause/playback mode
# PAUSE cycle pause                      # toggle pause/playback mode
# PLAYPAUSE cycle pause                  # toggle pause/playback mode
# PLAYONLY set pause no                  # unpause
# PAUSEONLY set pause yes                # pause
# STOP quit
# FORWARD seek 60                        # seek 1 minute forward
# REWIND seek -60                        # seek 1 minute backward
# NEXT playlist-next                     # skip to the next file
# PREV playlist-prev                     # skip to the previous file
# VOLUME_UP add volume 2
# VOLUME_DOWN add volume -2
= add volume 4
- add volume -4
# MUTE cycle mute                        # toggle mute
CLOSE_WIN quit
# CLOSE_WIN {encode} quit 4
ctrl+q quit
ctrl+w quit
# E cycle edition                        # switch edition
# l ab-loop                              # set/clear A-B loop points
A ab-loop                              # set/clear A-B loop points
# L cycle-values loop-file "inf" "no"    # toggle infinite looping
# ctrl+c quit 4
# DEL script-binding osc/visibility      # cycle OSC visibility between never, auto (mouse-move) and always
# ctrl+h cycle-values hwdec "auto" "no"  # toggle hardware decoding
# F8 show-text ${playlist}               # show the playlist
# F9 show-text ${track-list}             # show the list of video, audio and sub tracks

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

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

#  ? cycle sub-forced-only               # toggle DVD forced subs
#  ? stop                                # stop playback (quit or enter idle mode)