Title: Use a gamepad to control mpv video playback
       Author: Solène
       Date: 21 June 2022
       Tags: opensource unix
       Description: This article explains how to configure mpv to control it
       using a gamepad.
       
       # Introduction
       
       This is certainly not a common setup, but I have a laptop plugged on my
       TV through an external GPU, and it always has a gamepad connected to
       it.  I was curious to see if I could use the gamepad to control mpv
       when watching videos; it turns out it's possible.
       
       In this text, you will learn how to control mpv using a gamepad / game
       controller by configuring mpv.
       
       # Configuration
       
       All the work will happen in the file ~/.config/mpv/inputs.conf.  As mpv
       uses the SDL framework this gives easy names to the gamepad buttons and
       axis.  For example, forget about brand specific buttons names (A, B, Y,
       square, triangle etc...), and welcome generic names such as action UP,
       action DOWN etc...
       
       Here is my own configuration file, comments included:
       
       ```mpv configuration file
       # left and right (dpad or left stick axis) will move time by 30 seconds increment
       GAMEPAD_DPAD_RIGHT seek +30
       GAMEPAD_DPAD_LEFT seek -30
       
       # using up/down will move to next/previous chapter if the video supports it
       GAMEPAD_DPAD_UP add chapter 1
       GAMEPAD_DPAD_DOWN add chapter -1
       
       # button down will pause or resume playback, the "cycle" keyword means there are different states (pause/resume)
       GAMEPAD_ACTION_DOWN cycle pause
       
       # button up will switch between windowed or fullscreen
       GAMEPAD_ACTION_UP cycle fullscreen
       
       # right trigger will increase playback speed every time it's pressed by 20%
       # left trigger resets playback speed
       GAMEPAD_RIGHT_TRIGGER multiply speed 1.2
       GAMEPAD_LEFT_TRIGGER set speed 1.0
       ```
       
       You can find the actions list in mpv man page, or by looking at the
       sample inputs.conf that should be provided with mpv package.
       
       # Run mpv
       
       By default, mpv won't look for gamepad inputs, you need to add
       --input-gamepad=yes parameter when you run mpv, or add
       "input-gamepad=yes" as a newline in ~/.config/mpv/mpv.conf mpv
       configuration file.
       
       If you use a button on the gamepad while mpv is running from a
       terminal, you will have some debug output showing you which button was
       pressed, including its name, this is helpful to find the inputs names.
       
       # Conclusion
       
       Using the gamepad instead of a dedicated remote is very convenient for
       me, no extra expense, and it's very fun to use.