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. |