HOW-TO:Configure EventGhost to use a MCE remote (Windows)

Among the many aspects that contributed in making XBMC a success, we can surely count its ease of control through either the standard control pad or the Xbox remote control. Under Windows things are not as simple out of the box but this tutorial will attempt to guide you through the necessary steps, in order to achieve a similarly seamless control experience.

EventGhost, what it is and why we need it
Straight from its webpage, "EventGhost is an open-source automation tool for MS Windows, that can be extended through plugins." In layman's terms, EventGhost monitors everything that happens in your computer. Opening applications, changing focus from one app to another, pressing keys, pressing remote buttons, and so on. All this constitutes events and EventGhost can associate actions to execute to each and every event happening in your machine.

EventGhost is a really powerful tool and this tutorial will barely scratch the surface of what it is capable of. Those interested in more information should read the Short Manual on the EventGhost wiki or the official documentation. Thanks to the work of topfs2 and kirs, a plugin for XBMC is available for EventGhost and that's the key of what we are going to do, since EventGhost is thus able to act as an EventClient for XBMC's EventServer.

Note: As of XBMC 10.1 "Dharma", remote event ports are no longer configured in the GUI as suggested on the EventServer page.

Download, installation and basic configuration
In order to use EventGhost with a MCE Remote (or any remote that works with EventGhost), we need to do the following:
 * Download and install EventGhost from here. For reference, this tutorial has been written using version 0.4.1.r1544 (31 October 2011).
 * Launch EventGhost and get it working with your remote. For MCE Remotes, go to Configuration->Add Plugin.. and select Microsoft MCE Remote. Once setup, pressing a button on the remote should show an Event being logged in EventGhost's main window. If you cannot get your remote showing events in EventGhost, you will need to troubleshoot this issue before proceeding.
 * Enable remote control in XBMC:
 * Go to Settings -> Network -> Services in XBMC
 * Enable "Allow programs on this system to control XBMC"
 * In EventGhost, add the XBMC2 plugin in the Remote Programs section of the plugins list (Configuration -> Add Plugin..). Leave the IP address at 127.0.0.1 and default port (assuming XBMC and EventGhost are running on the same machine). After activating the plugin, an XBMC2 folder with "Buttons", "Actions", "Windows" and "Experimental" should appear. This is a collection of all the possible commands you can have EventGhost trigger in XBMC. There are many commands available!
 * Map events from your remote to trigger events in XBMC:
 * Press a button the remote and you should see it logged in the main window.
 * Open up one of the XBMC macros in the various folders and drag the event from the log window onto the desired macro.
 * Launch XBMC and bring it to the foreground and test the action with your remote.

For more advanced use of EventGhost, consider Enabling or Disabling the XBMC2 event folder when XBMC is launched (Task.Activated.XBMC) using a Macro (Add Macro.. -> EventGhost -> Enable an item) or when it is brought to the foreground. You could also connect EventGhost to an IR blaster or serial port for more advanced automation of receivers and other devices in your setup (i.e. the volume buttons on your MCE remote could go to the receiver instead of Windows).