The reason I have created a separate thread is that, whilst the majority of this HOW TO can be used for any Harmony Remote, the end shows how to take full advantage of the advanced Harmony One and its touch screen when using XBMC.
I also created this as i found it tedious to hunt through the forums\big threads about universal remotes, when I just wanted one for my remote & HOW to take full advantage of it. Well here goes how I've set it up....
First and foremost when adding your XBOX as a device in the Harmony App, i just chose the normal XBOX + standard Remote (aka MicrosoftXbox). I know there are other remotes on the Logitech database which give like a thousand more buttons, but for me this was unnecessary. In saying that I was surprised when I added the standard remote, that some extra buttons were on the Logitech Database added to the standard remote. These are probably from another remote, but who cares, they are there, and these are the ones that I have used to setup my Harmony One perfectly.
What I always wanted, was a way to to just simply switch to my Movies Library\TV Shows Library\Pictures\Music at the "touch" of a button. I have achieved this and more with this awesome remote, and I'll show you what else is possible further down.
NOTE: This guide is not going to show you how to setup your amp\tv etc. The Harmony app is quite user friendly and you should be able to do this. This HOW TO is purely for the advanced settings required for XBMC & your Harmony One to work together.
1. Intro to Universal Remotes & XBMC
(READ ONLY SECTION, DONT HAVE TO DO ANYTHING)
Firstly big credit goes out to THESE GUYS as this was pretty much the only site that made sense of the foundation of setting up a Universal Remote for XBMC. Ignore the stuff at the start and jump straight to "Personalizing The Remote Buttons". What I had to do, was create a advancedsettings.xml in my UserData folder (HOW) so that it would show a special UNIQUE Code(obc code) on screen(in XBMC) with every button I pressed on my Harmony One.
This was achieved by adding <displayremotecodes>true</displayremotecodes> in the advancedsettings.xml.
So what I did, was go through & I pressed all these extra buttons that Logitech had in their database for the xbox (which were now also on my remote) and noted down the code that was displayed. Later on this would allow me to assign ACTIONS to these codes to be performed by XBMC
Note: I only noted down buttons(from the logitech DB) that WERE NOT used by XBMC. If I noticed an action was performed when i pressed a button I did not add it. Ill explain this more .....
2. The Codes
To save everyone alot of time, I have gone though ALL the extra buttons that are not used by XBMC and have noted their unique code Dont stress it'll be explained how they are used later.
[INDENT]CLICK HERE for Logitech Button & its Unique Code[/INDENT]
So with the above table in mind, EG:
- when I pressed "HDMI" (a button that logitech added to my remote for the XBOX), the code: 5 was displayed in XBMC.
- when I pressed the "3D" button, the code: 90 was displayed onscreen.
- There was a strange occurance though, that being 3 buttons had the same Unique code; "PowerOn" and "PowerOff" and "Input VCR", they all displayed the same number : 58. All this means is I just have to pick one of these so that I can use the code 58 to perform an action in XBMC. As you guessed, ive used this code to turn off my xbox
So with 16 spare codes, I was pretty sure this would be enough to do all the custom buttons\actions I wanted
3. What actions do we want our remote to perform ?
Here is the fun part, choosing what you want your remote to do when you press a button, eg:
- switch to Movies Library
- switch to TV Shows Library
- Restart XBMC etc etc...
Now the final list that I used, and what I wanted XBMC to do is:
- Restart XBMC
- Shutdown XBMC
- Movies Library
- TV Shows Library
- File Manager
- Shutdown Menu
- Take Screenshot
- Update Library (My favourite button )
- Eject Tray
Now to actually perform these, XBMC has specific commands that are needed so it knows that you want to eg Switch to Movies Library.
[INDENT]To find a full list of what functions XBMC can perform CLICK HERE[/INDENT]
Now some are tricky, eg Movies library & TV Show Library. The only way i figured out how to actually go straight to these (as I use Media Stream skin) was to enable Debug Mode and follow how the skin gets to the Moves Library. I know this was far fetched and I could've done THIS but i cbf and just did it the long but sure way. Below is a list of what i wanted XBMC to do, and actually HOW XBMC does it:
- Restart XBMC - XBMC.Reset
- Shutdown XBMC - XBMC.ShutDown
- Movies Library - XBMC.ReplaceWindow(MyVideoLibrary,movietitles,return)
- TV Shows Library - XBMC.ReplaceWindow(MyVideoLibrary,tvshowtitles,return)
- Pictures - XBMC.ReplaceWindow(pictures)
- Music - XBMC.ReplaceWindow(music)
- File Manager - XBMC.ReplaceWindow(filemanager)
- Shutdown Menu - XBMC.ReplaceWindow(ShutdownMenu)
- Take Screenshot - XBMC.Takescreenshot
- Update Library - XBMC.updatelibrary(video)
- Eject Tray - XBMC.EjectTray()
Now that I knew how XBMC would do what I wanted, I now needed to edit my Keymap.xml to do all these lovely things....
4. Telling XBMC what to do \ Setting up Keymap.xml
So with all these codes (from Step 2) & all the XBMC commands\functions (from Step 3), I now needed to bring it ALL TOGETHER and tell XBMC what to do when i pressed a specific button.
Firstly we need to make a copy of the keymap.xml that is in our System folder (..\XBMC\system\keymap.xml) and copy it to our UserData folder, as this file will take precedence as it is in the User Data folder. I dont recommend altering the keymap in the system folder, why? because there's no need to touch the original & its a fallback if you screw up your copied\altered one that sits in UserData.
If you already have a copy of Keymap.xml in your UserData folder, sweet Lets get editing....
Firstly we need to add a section <universalremote> so that XBMC knows, if we press a certain button on our Harmony One, what it should do(what command\function should it perform).
When you open up keymap.xml for editing, scroll down past all the comments which are at the top, until you get to the start:
Now just before the <remote> tag, we need to add a <universalremote> tag. This is how it should look:
This, my friends is where it all happens. This is where we now insert our CODES that we noted down (Step 2), AND our functions we want XBMC to perform (Step 3). This is how it is done:
- Where ## is, you should replace this with the unique CODE we had put down earlier in Step 2. The same line should obviously have the same code.
- Where [command] is, you will replace it with the command that you have chosen.
Overall, I assigned all my buttons in the following configuration: CLICK HERE (The blank ones are spare buttons that I have not used) I highly recommend keeping a Table as I have done, so you remember what function is assigned to what code & what code is assigned to what BUTTON on the remote.
The Keymap.xml looks like this:
Now save this Keymap.xml and upload it to your UserData folder. Restart the Xbox. We havnt finished yet....