Guide to remapping the keys and adding handy functions to a Harmony remote when used with OpenELEC.

I've done a few things to tune my Harmony remote to my liking.

First, in the Harmony software my base device for the XBMC machine is set to 'MicrosoftMedia Center Extender' (found under HTPC options I think - I've found this is a better starting map than the other options people recommend. I think a lot of people's remote problems start right here, they use the wrong base map.

From there, the basic method is this is to look at the 'keys' defined for the remote, and then remap what those keys do in a custom keymap.xml.

To find the keys, we look in: /usr/share/irtrans/remotes/mediacenter.rem

This file defines the signals/names that will come through to XBMC (and therefore what we can easily remap). I suspect speeds can be tweaked in here and I find it a little too fast when scrolling long lists so I will experiment with this later...

[REMOTE]
[NAME]mediacenter

[TIMING]
[0][N]0[RC]2[RP]87[FREQ]36[SB][RS][RC6]

[COMMANDS]
[1][T]0[D]S11101010000000000011110000010000000001
[2][T]0[D]S11101010000000000011110000010000000010
[3][T]0[D]S11101010000000000011110000010000000011
[4][T]0[D]S11101010000000000011110000010000000100
[5][T]0[D]S11101010000000000011110000010000000101
[6][T]0[D]S11101010000000000011110000010000000110
[7][T]0[D]S11101010000000000011110000010000000111
[8][T]0[D]S11101010000000000011110000010000001000
[9][T]0[D]S11101010000000000011110000010000001001
[0][T]0[D]S11101010000000000011110000010000000000
[ok][T]0[D]S11101010000000000011110000010000100010
[T]0[D]S11101010000000000011110000010000100000
[T]0[D]S11101010000000000011110000010000100001 [down][T]0[D]S11101010000000000011110000010000011111 [up][T]0[D]S11101010000000000011110000010000011110 [play][T]0[D]S11101010000000000011110000010000010110 [power][T]0[D]S11101010000000000011110000010000001100 [Stop][T]0[D]S11101010000000000011110000010000011001 [Rec][T]0[D]S11101010000000000011110000010000010111 [Rew][T]0[D]S11101010000000000011110000010000010101 [Fwd][T]0[D]S11101010000000000011110000010000010100 [Pause][T]0[D]S11101010000000000011110000010000011000 [Next][T]0[D]S11101010000000000011110000010000011010 [Prev][T]0[D]S11101010000000000011110000010000011011 [eHome][T]0[D]S11101010000000000011110000010000001101 [Back][T]0[D]S11101010000000000011110000010000100011 [EPG][T]0[D]S11101010000000000011110000010000100110 [Info][T]0[D]S11101010000000000011110000010000001111 [LiveTV][T]0[D]S11101010000000000011110000010000100101 [Video][T]0[D]S11101010000000000011110000010001001010 [Music][T]0[D]S11101010000000000011110000010001000111 [TV][T]0[D]S11101010000000000011110000010001000110 [Pictures][T]0[D]S11101010000000000011110000010001001001 [Vol+][T]0[D]S11101010000000000011110000010000010000 [Vol-][T]0[D]S11101010000000000011110000010000010001 [Mute][T]0[D]S11101010000000000011110000010000001110 [Ch+][T]0[D]S11101010000000000011110000010000010010 [Ch-][T]0[D]S11101010000000000011110000010000010011 [Enter][T]0[D]S11101010000000000011110000010000001011 [Clear][T]0[D]S11101010000000000011110000010000001010 [DVDMenu][T]0[D]S11101010000000000011110000010000100100 [Rectv][T]0[D]S11101010000000000011110000010001001000 [Messenger][T][0][D]S11101010000000000011110000010001100100 [Radio][T][0][D]S11101010000000000011110000010001010000 [Teletext][T][0][D]S11101010000000000011110000010001011010 [Red][T][0][D]S11101010000000000011110000010001011011 [Green][T][0][D]S11101010000000000011110000010001011100 [Yellow][T][0][D]S11101010000000000011110000010001011101 [Blue][T][0][D]S11101010000000000011110000010001011110

The work from here is done in .xbmc/userdata/keymaps/keymap.xml

I've commented my file so it should be easy to follow. To work out waht functions to call, I combed the forums a bit and use the wiki page on functions - http://kodi.wiki/view/List_of_Built_In_Functions - the only really tricky one is calling a showwindow command to toggle between just unwatched stuff & everything views.

<keymap>

<!-- ************* GLOBAL ***************************** -->
<!-- Define R as reload skin, S as screenshot, anywhere -->
<!-- and define some special remote keys 
<!-- Red toggles fullscreen view -->
<!-- Green Toggles the watched status of an item -->
<!-- And yellow will toggle the library views between 'show everything' and 'show watched only' --> 
<global>
    <keyboard>
       <r>XBMC.ReloadSkin()</r>
       <s>Screenshot</s>
    </keyboard>
    <remote>
 <Red>FullScreen</Red> 
 <Green>ToggleWatched</Green>  
 <Yellow>SendClick(25,14)</Yellow>
    </remote>
</global>
<!-- ************************************************ -->
<!-- On the home screen, 1 cleans the library, 2 triggers an update -->  
<home>
     <remote>
       <one>XBMC.CleanLibrary(video)</one>
       <two>XBMC.UpdateLibrary(video)</two>
     </remote>
</home>
<!-- Set up Audio Delay Easy Keys -->
<FullscreenVideo>
    <remote>
 <Yellow>AudioDelayMinus</Yellow>
 <Blue>AudioDelayPlus</Blue> 
    </remote>
</FullscreenVideo>
<!-- Set up zooming in picture slideshows -->
<Slideshow>
    <remote>
 <Yellow>ZoomOut</Yellow>
 <Blue>ZoomIn</Blue> 
    </remote>
</Slideshow>
<!-- make the info window close when info is pressed again -->
  <movieinformation>
    <remote>
      <info>Close</info>
    </remote>
  </movieinformation>
  <musicinformation>
    <remote>
      <info>Close</info>
    </remote>
  </musicinformation>
</keymap>

Harmony_NextSub.jpg

I have done a bit of key mapping in the Harmony software - e.g in additional buttons I have mapped a button for next subtitle so I can easily cycle between subtitles (from none - sub 1 (if there is a sub 1) - sub 2 (if there is a sub 2) - ... - subs off