The PC

I wanted a HTPC that I could use to play anything, and that could do anything. And since it was going to be hooked up to a big TV, it might as well be powerful enough to play some modern games on the big screen. I chose to use a relatively new computer (Core 2 Duo 2Ghz, Nvidia GeForce GT 220) and run Windows 7. My previous HTPC ran Linux, but with a powerful enough computer, the ability to play games on the HTPC made me move to Windows.

The Three HTPC pieces

I find that XBMC, Hulu Desktop, and Boxee are all essential parts of a well rounded Home Theater PC (HTPC). XBMC Is great for managing and playing back all of your local media. Hulu Desktop is the complete solution to play anything from Hulu on the big screen. And Boxee does a great job of playing back other online media, such as The Daily Show, Pandora, etc. However these three media center programs do not play nice together. There are some small hacks that can make maybe two get along, but not a complete solution.

The Glue

To control all three programs I use EventGhost. EventGhost is a Windows automation tool which can preform a set of actions based on some user input, Usually a key-press, remote control, or other such device. I was lucky enough to have a HP remote control and USB IR sensor from a laptop I had. pictured below:

HP MCE USB IR Remote

Windows 7 automatically recognized the driver for the remote and with the MCE Remote plugin I was able to have EventGhost use it as an input device. I set EventGhost to capture all of the remote’s input and unregister it as a HID device. This stops windows from acting on the remote and gives EventGhost complete control over it.

Next I started creating my EventGhost profile. I chose a button to launch each of the HTPC apps previously mentioned. When pressed, the action for the button would kill any/all running HTPC apps and then start the app that I assigned to the button. This allows me to start any of the apps from the remote and switch between them easily. I also assigned a fourth button that would just kill them all, bringing me to the windows desktop. I assigned the D-PAD and OK buttons to the arrow keys and enter key. That takes care of most of the universal buttons that should apply across all of the programs. Now I went of to the program specific stuff. Hulu Desktop does not need much else or accept any other keyboard shortcuts, but Boxee and XBMC share a few. The next buttons I mapped to the remote are [Backspace], I, [Space], P, X, [Period], [Comma], F, R, H, [Tab], and M. Refer to the Program’s site to see what each one does. I also added a few extra actions for raising and lowering the volume, ejecting the drive tray, and powering off the computer.

I also made a toggle button that would change the D-Pad and OK button from arrow keys and enter to mouse movement and left click. You can download my EventGhost config file at the end of this article. Below is what my configured EventGhost looks like:

EventGhost MCE HTPC Configuration

By now the HTPC setup should be working. You should be able to control and switch between Boxee, XBMC, and Hulu desktop all from your remote. Just remember to make EventGhost start when windows does, this can be easily done by placing a shortcut to EventGhost in your User’s startup folder.

An Extra Surprise

After using this method for a while, I discovered that the MCE remote would detect my TV’s remote control (Pictured below). I could tell because the USB sensor would light up red (showing that it received a signal) when I pressed a button on the TV remote. And low and behold, EventGhost could detect the signal too!

Toshiba TV Remote

This Toshiba remote is also programmable, meaning that it has the ability to also control your VCR, DVD player, etc. I went through all of the preset codes it can use (by entering them all manually and testing them) and found the one that the USB IR sensor would detect the most buttons on. For most, only a few worked, and some none did. Oddly enough the code “000” had almost all the buttons working. So I went through all the actions in EventGhost and reassigned them to a button on my TV’s remote. This allows me to control both my TV and HTPC from the same remote. All I need to do is switch the Mode/Device at the bottom of the remote to change which device I am controlling.