| 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 increme… | |
| 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 ar… | |
| 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. |