Using a remote control with XBMC

Note: this article assumes you are using XBMC v10.0 Dharma or a later version. Earlier versions of XBMC such as v9.11 Camelot do not support key modifiers like control, shift and alt so the key mappings required for Media Center Remotes will not work.

If you have one of the many cheap MCE remote controllers then just connect it to your PC and there's a fair chance it will just work. If you have the official Microsoft MCE remote controller or a full compatible then you may need a small amount of extra effort to get it working: details below.

If you're in a hurry to get your remote working jump straight to:

 Using a Microsoft remote control in Windows Using an MCE remote control in Windows 

However if you have the spare five minutes it will take to read this article I recommend that you take the time to do it. Once you've read this article the articles above will make more sense.

If you haven't yet bought a remote there are some reviews in the article Remote Control Reviews.

Media Center remotes are obviously designed to work with Microsoft Windows Media Center Edition (hence the "MCE" acronym) so this article concentrates on Windows. However the same remotes will usually work with Linux and possibly OSX, and much of this discussion applies to all platforms.

On Linux there is a standard method for supporting remote controllers using software called Lirc. Assuming there is a Linux driver for your remote controller you can configure Lirc to use it with XBMC. Note that XBMCLive is already configured to work with the official MS remote. Sadly, on Windows the situation is a lot more confused.

Why there is a problem (on Windows) ...
The problem with using MCE remotes is that there is no such thing as a standard MCE remote. There is the official Microsoft remote of course, and some remotes are genuinely fully compatible with the MS remote. Unfortunately the majority of MCE remote controllers, especially the cheap ones, work in different ways. There are four different ways a remote can work on Windows.

 The remote can send an IR code like the Microsoft remote. To use the remote an application has to link to the IR driver. 

The remote can send the Windows message WM_APPCOMMAND. This message is used to send a multimedia application messages like "Play", "Pause", "Stop" etc. To use this type of remote an application has to process the WM_APPCOMMAND messages. 

The remote can simulate multimedia key presses when you press a button. Multimedia keys were introduced with the Microsoft multimedia keyboard, which has extra keys for multimedia functions like "Play" etc. To use this type of remote an application has to process the multimedia keypresses. 

Finally the remote can simulate the standard MS Media Center keyboard shortcuts. When Microsoft introduced Media Center the specified a set of standard keyboard shortcuts to operate it. For example control-shift-P means "Play". Many cheap MCE remotes simulate these keyboard shortcuts e.g. when you press the Play button they simulate the key press control-shift-P. To use this type of remote an application has to process the Media Center key presses. 

... and how to solve it
The good news is that from build 26407 onwards XBMC has support built in for remote controllers of types 2, 3 and 4. This includes the vast majority of the cheap MCE remotes, so the basic functions like "Play" etc will work without any messing around. A lot of MCE remotes include extra keys not on the official MS remote, and to get these to do anything you will need some manual configuration. All this is covered in Using an MCE remote control in Windows.

Ironically the official MS remote will not work with XBMC out of the box, or rather it will partially work: some buttons will work while others won't. This is because the MS remote uses IR codes i.e. type 1 in the list above, and XBMC does not support this. The good news is that the MS remote is easily reconfigured to work as a type 4 remote instead. This is covered in the article Using a Microsoft remote control in Windows.

A note on Linux
Remotes of type 3 and 4 will probably work on Linux out of the box, provided Linux sees the remote as a keyboard sending MCE keys. Some brief testing with a handful of cheap remotes showed they all work.

What to do next
If you have a type 1 remote such as the Microsoft remote, or one of the remotes compatible with it, see Using a Microsoft remote control in Windows.

If you have a type 2, 3 or 4 remote then it will probably work without any messing around. You might want to modify the key mappings for the myriad of extra buttons on a typical MCE clone remote. In that case see Using an MCE remote control in Windows for an introduction, or go straight to Modifying keyboard.xml if you want to jump straight in and start modifying the key mappings.