Home » Questions » Computers [ Ask a new question ]

Can I use my media keys to control MPD?

Can I use my media keys to control MPD?

Can I make the media keys (play/pause, skip) buttons on my macbook control MPD, instead of iTunes?

Asked by: Guest | Views: 257
Total answers/comments: 2
Guest [Entry]

"I don't know about the Apple Remote (though I think there's a free app out there that lets you customize it) but I can help you with the media keys. I did this on an external keyboard using ControllerMate ($15) but I would imagine you could do the same with the free hotkey manager Sparkle: you need to point the key to an AppleScript that in turn runs a shell script that tells MPD what to do. This is not too difficult; I learned to write AppleScript and shell scripts just for this purpose, and it took me a couple of hours all told.

My MPD is on a different computer, and if yours is too you need to make sure that publickey authentication is disabled so you can ssh in without a password. (Alternately, I suppose you could install mpc on your Mac, but I was too timid to do that.) Install MPC on the computer with MPD (and make sure you've got the environment variables right). Then on the Mac, write and save a shell script that tells bash to ssh into your MPD machine and tell mpc to do something. For ""toggle"" (play/pause) this is mine:

#!/bin/bash
ssh 10.0.1.42 -l USERNAME ""export MPD_HOST=10.0.1.42; mpc toggle --no-status""

For some reason I had to put MPD_HOST there. It should be trivial to write scripts for next and previous tracks; if you don't know the mpc commands check out mpc's man page.

My applescript is more complex than yours would be because it decides whether to control MPD or iTunes based on the applications I'm running. On a basic level all you need is

do shell script ""path/to/yourscript.sh""

which you can save as a .scpd. It's easy in either ControllerMate or Sparkle to tie a key to an AppleScript, so you should be all set.

Enjoy!"
Guest [Entry]

"First of all, you will have to tell iTunes not to grab the keys.

Then you use Karabiner to run a shell script when you press those keys (look up for VK_CONSUMERKEY_MUSIC_PLAY).

Step by step.
1. Install Karabiner:

brew install cask karabiner

Download this file to Library/Application Support/Karabiner/private.xml
Enable required items in Karabiner UI, or:

/Applications/Karabiner.app/Contents/Library/bin/karabiner reloadxml
/Applications/Karabiner.app/Contents/Library/bin/karabiner enable private.media_next
/Applications/Karabiner.app/Contents/Library/bin/karabiner enable private.media_play
/Applications/Karabiner.app/Contents/Library/bin/karabiner enable private.media_prev

Gotchas:
- you should use absolute path in scripts
- if you need to use shell built-in commands, run via bash -c 'script goes here'"