OSMC remote with Ubuntu 20.10

I am setting up a new machine with my OSMC remote and have some issues with the remote being correctly detected.

To install, I have grabbed the latest AMD64 packages and followed the advice in the following thread:

The packages seem to install as expected and eventlircd is running. On my old machine, when plugging the remote I see the following in dmesg:

[601899.071875] usb 1-4: New USB device found, idVendor=2252, idProduct=1037, bcdDevice= 1.04
[601899.071879] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[601899.071880] usb 1-4: Product: USB Keyboard Mouse
[601899.071881] usb 1-4: Manufacturer: HBGIC Technology Co., Ltd.
[601899.096198] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse as /devices/pci0000:00/0000:00:01.2/0000:01:00.0/usb1/1-4/1-4:1.0/0003:2252:1037.0014/input/input47
[601899.153329] hid-generic 0003:2252:1037.0014: input,hidraw0: USB HID v1.10 Keyboard [HBGIC Technology Co., Ltd. USB Keyboard Mouse] on usb-0000:01:00.0-4/input0
[601899.170642] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse as /devices/pci0000:00/0000:00:01.2/0000:01:00.0/usb1/1-4/1-4:1.1/0003:2252:1037.0015/input/input48
[601899.170842] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse Consumer Control as /devices/pci0000:00/0000:00:01.2/0000:01:00.0/usb1/1-4/1-4:1.1/0003:2252:1037.0015/input/input49
[601899.229305] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse System Control as /devices/pci0000:00/0000:00:01.2/0000:01:00.0/usb1/1-4/1-4:1.1/0003:2252:1037.0015/input/input50
[601899.229422] hid-generic 0003:2252:1037.0015: input,hidraw1: USB HID v1.10 Mouse [HBGIC Technology Co., Ltd. USB Keyboard Mouse] on usb-0000:01:00.0-4/input1
[601899.406526] input: eventlircd as /devices/virtual/input/input51
[601899.495752] input: eventlircd as /devices/virtual/input/input54

You can see at the end that eventlircd creates virtual input devices. On the new machine, this doesn’t happen:

   85.231012] usb 1-2: New USB device found, idVendor=2252, idProduct=1037, bcdDevice= 1.04
[   85.231013] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   85.231013] usb 1-2: Product: USB Keyboard Mouse
[   85.231014] usb 1-2: Manufacturer: HBGIC Technology Co., Ltd.
[   85.237842] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2252:1037.001B/input/input40
[   85.295383] hid-generic 0003:2252:1037.001B: input,hidraw0: USB HID v1.10 Keyboard [HBGIC Technology Co., Ltd. USB Keyboard Mouse] on usb-0000:00:14.0-2/input0
[   85.299791] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:2252:1037.001C/input/input41
[   85.359242] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:2252:1037.001C/input/input42
[   85.359363] input: HBGIC Technology Co., Ltd. USB Keyboard Mouse System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:2252:1037.001C/input/input43
[   85.359583] hid-generic 0003:2252:1037.001C: input,hidraw1: USB HID v1.10 Mouse [HBGIC Technology Co., Ltd. USB Keyboard Mouse] on usb-0000:00:14.0-2/input1

I then test the remote with irw and get junk output. It feels like eventlircd is failing to do its job.

Do you have any pointers on what I could try get it seen correctly?

In OSMC we have moved away from using lircd with those remotes in order to gain long-press. If you remove those packages you should have most of the buttons working. Which buttons don’t work and what language are you using?

I have the original first edition remote (for now, considering the new one). The arrow keys work and OK key. Home and back seems to work too. Info, list, stop, ff, rw are all broken from what I can tell.

On my old machine I had the following customkeys.xml:

<keymap>
 <visualisation>
  <keyboard>
   <key id="166">volumeup</key>
   <key id="167">volumedown</key>
   <key id="168">skipnext</key>
   <key id="169">skipprevious</key>
   <key id="11">playpause</key>
  </keyboard>
 </visualisation>
 <fullscreenvideo>
  <keyboard>
   <key id="166">volumeup</key>
   <key id="167">volumedown</key>
  </keyboard>
 </fullscreenvideo>
</keymap>

But that doesn’t seem to be helping here.

Try making a file at /etc/udev/hwdb.d/osmcrf.hwdb with the following content…

evdev:input:b0003v2252p1037*
 KEYBOARD_KEY_7004a=esc
 KEYBOARD_KEY_c0060=i
 KEYBOARD_KEY_10084=c
 KEYBOARD_KEY_c0226=x
 KEYBOARD_KEY_c00cd=p
 KEYBOARD_KEY_c00b4=volumedown
 KEYBOARD_KEY_c00b3=volumeup

…and then reboot and see if that gets everything going. Please note that the file must NOT be set with an executable permission. Additionally notice that there is a single space before each of the “KEYB…” lines and this is required for this to work. Normally I would have the remap for the last two pointing to mappings for rw/ff but no reason to bother with a keymap here.

1 Like

That is great! definitely made progress. Thank you.

The only key that seems odd now is the play/pause key. That doesn’t see, to do anything.

I also noticed that the ff/rw keys change the volume, but I can probably work with that.

I updated my previous post with a remap for that key. Update that file and let me know if that works. As for the ff/rw keys I remapped to volume as you showed that you were already doing that with a keymap (that and ff/rw does not generally work well in Kodi). You can change to mappings to “rewind” and “fastforward” if you wish.

Thank you.

Gave it a test but no joy. I seem to be experiencing the same issue as described here:

It seems that key is perhaps picked up by the OS as that overlay/no entry symbol is not part of Kodi.

I’m going to order a new remote anyway, as I think it will be better with the new dedicated volume keys. Will the new remote need a new hwdb file?

I had forgotten about that thread. Did you try using “p” in the hwdb instead of playpause? I still don’t understand why other Debian spinoffs are not acting the same in respect to the multimedia keys as OSMC does. Unfortunately i’m a bit too much of a Linux noob to figure it out. The new model remotes I would expect to need a hwdb as well, although not the same as above. As for the new remote the dedicated volume will be no different than remapping this way with the old remote. I don’t want to discourage a sale, and I have never put my hands on that model of remote, but I don’t believe it is all that different from the current model, at least from the users perspective.

Might be because he’s using X11

p is better for sure. I can then correct it with a custom keymap which it seemed to need as well:

<keymap>
 <visualisation>
  <keyboard>
   <p>PlayPause</p>
  </keyboard>
 </visualisation>
 <fullscreenvideo>
  <keyboard>
   <p>PlayPause</p>
  </keyboard>
 </fullscreenvideo>
</keymap>

Thanks again for all your help.

Your welcome. I’m curious, is there a reason you keymaped that way instead of just doing…

<keymap>
 <global>
  <keyboard>
   <p>PlayPause</p>
  </keyboard>
 </global>
</keymap>

Also note that you can keymap long-press actions now as well.

I didn’t choose global because it seems to be better set as Select in a global context:

 <global>
  <keyboard>
   <p>Select</p>
  </keyboard>
 </global> 

This allows Play/Pause to start a video too.

Ah yes, long press could be interesting to tinker with too.

Ah. I guess that would be for something like using it to play from a widget on the home screen without having to map it that way?

Long-press is great but it can be a bit tricky at times. This is what we are using currently in OSMC which you could use as well with a bit of modification to make it match up with your current button layout. More information on it can be found [here].

Current OSMC custom keymap
<?xml version="1.0" encoding="UTF-8"?>
<!-- The second and third generation OSMC remotes use i and c keys that stop functioning with some keyboard languages in OSMC.           -->
<!-- We have remapped those keys in OSMC to kpleftparen and kprightparen with udev to overcome this issue. This file maps those keys to  -->
<!-- Kodi actions and adds tweaks to provide enhanced function. Home was remapped in v1&2 for consistency. The buttons map in Kodi as... -->
<!--                                                                                                                                     -->
<!-- OSMC with udev remap                            non-OSMCv1                 non-OSMCv2                 non-OSMCv3                    -->
<!-- Home  = escape        <key id="61467">          Home  = home               Home  = home               Home  = escape                -->
<!-- Info  = leftbracket   <key id="61480">          Info  =                    Info  = i                  Info  = i                     -->
<!-- Up    = up            <key id="61568">          Up    = up                 Up    = up                 Up    = up                    -->
<!-- Down  = down          <key id="61569">          Down  = down               Down  = down               Down  = down                  -->
<!-- Left  = left          <key id="61570">          Left  = left               Left  = left               Left  = left                  -->
<!-- Right = right         <key id="61571">          Right = right              Right = right              Right = right                 -->
<!-- OK    = return        <key id="61453">          OK    = return             OK    = return             OK    = return                -->
<!-- Back  = browser_back  <key id="61616">          Back  = browser_back       Back  = browser_back       Back  = browser_back          -->
<!-- Menu  = rightbracket  <key id="61481">          Menu  =                    Menu  = c                  Menu  = c                     -->
<!-- Play  = play_pause    <key id="61629">          Play  = play_pause         Play  = play_pause         Play  = play_pause            -->
<!-- Stop  = stop          <key id="61628">          Stop  = stop               Stop  = stop               Stop  = stop                  -->
<!-- Vol-  = volume_down   <key id="61624">          RW    = rewind             Vol-  = minus              Vol-  = minus                 -->
<!-- Vol+  = volume_up     <key id="61625">          FF    = fastforward        Vol+  = equals             Vol+  = equals                -->
<!--                                                                                                                                     -->
<!-- Keymap created by DarwinDesign version 20-04-01                                                                                     -->
<!--                                                                                                                                     -->
<keymap>
	<global>
		<keyboard>
			<escape>PreviousMenu</escape>
			<home>PreviousMenu</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<leftbracket>Info</leftbracket>
			<i>Info</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<left>Left</left>
			<right>Right</right>
			<up>Up</up>
			<down>Down</down>
			<return>Select</return>
			<return mod="longpress">noop</return> <!-- removes default context menu & stops cycling -->
			<browser_back>Back</browser_back>
			<rightbracket>ContextMenu</rightbracket>
			<c>ContextMenu</c>
			<rightbracket mod="longpress">Menu</rightbracket>
			<c mod="longpress">Menu</c>
			<play_pause>PlayPause</play_pause>
			<play_pause mod="longpress">noop</play_pause> <!-- removes default info & stops cycling -->
			<stop>Stop</stop>
			<volume_down>VolumeDown</volume_down>
			<volume_up>VolumeUp</volume_up>
			<f2>Notification(OSMC Remote Controller, Low Battery Please Replace,5000)</f2>
		</keyboard>
	</global>
	<Home>
		<keyboard>
			<escape>CECActivateSource</escape>
			<home>CECActivateSource</home>
			<escape mod="longpress">CECStandby</escape>
			<home mod="longpress">CECStandby</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<browser_back mod="longpress">ActivateWindow(ShutdownMenu)</browser_back>
			<return mod="longpress">ReloadSkin()</return>
			<play_pause mod="longpress">UpdateLibrary(video)</play_pause>
		</keyboard>
	</Home>
	<VirtualKeyboard>
		<keyboard>
			<rightbracket mod="longpress">noop</rightbracket>
			<c mod="longpress">noop</c>
			<up mod="longpress">Shift</up>
			<down mod="longpress">Symbols</down>
			<return mod="longpress">Enter</return>
		</keyboard>
	</VirtualKeyboard>
	<FileManager>
		<keyboard>
			<right mod="longpress">Highlight</right>
			<left mod="longpress">Highlight</left>
		</keyboard>
	</FileManager>
	<FullscreenVideo>
		<keyboard>
			<escape>ActivateWindow(videobookmarks)</escape>
			<home>ActivateWindow(videobookmarks)</home>
			<escape mod="longpress">playerdebug</escape>
			<home mod="longpress">playerdebug</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<return mod="longpress">Playlist</return>
			<up mod="longpress">SkipNext</up>
			<down mod="longpress">SkipPrevious</down>
			<left mod="longpress">AudioDelay</left>
			<right mod="longpress">subtitledelay</right>
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
			<c>ActivateWindow(osdvideosettings)</c>
			<rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket>
			<c mod="longpress">ActivateWindow(osdaudiosettings)</c>
			<play_pause mod="longpress">showsubtitles</play_pause>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
		</keyboard>
	</FullscreenVideo>
	<FullscreenGame>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>OSD</rightbracket>
			<c>OSD</c>
		</keyboard>
	</FullscreenGame>
	<FullscreenInfo>
		<keyboard>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</FullscreenInfo>
	<Visualisation>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">ActivateWindow(MusicPlaylist)</return>
			<rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket>
			<c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c>
			<rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket>
			<c mod="longpress">ActivateWindow(VisualisationPresetList)</c>
		</keyboard>
	</Visualisation>
	<MusicOSD>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<return mod="longpress">back</return>
			<rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket>
			<c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c>
			<rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket>
			<c mod="longpress">ActivateWindow(VisualisationPresetList)</c>
		</keyboard>
	</MusicOSD>
	<VisualisationPresetList>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
		</keyboard>
	</VisualisationPresetList>
	<slideshow>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<play_pause>pause</play_pause>
			<up mod="longpress">ZoomIn</up>
			<down mod="longpress">ZoomOut</down>
			<return mod="longpress">ZoomNormal</return>
			<rightbracket></rightbracket> <!-- removes mapping from osmc-classic -->
		</keyboard>
	</slideshow>
	<VideoOSD>
		<keyboard>
			<escape>ActivateWindow(videobookmarks)</escape>
			<home>ActivateWindow(videobookmarks)</home>
			<escape mod="longpress">playerdebug</escape>
			<home mod="longpress">playerdebug</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<up mod="longpress">SkipNext</up>
			<down mod="longpress">SkipPrevious</down>
			<left mod="longpress">AudioDelay</left>
			<right mod="longpress">subtitledelay</right>
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
			<return mod="longpress">back</return>
			<c>ActivateWindow(osdvideosettings)</c>
			<rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket>
			<c mod="longpress">ActivateWindow(osdaudiosettings)</c>
			<play_pause mod="longpress">showsubtitles</play_pause>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
		</keyboard>
	</VideoOSD>
	<VideoMenu>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket></rightbracket> <!-- removes mapping from osmc-classic -->
		</keyboard>
	</VideoMenu>
	<OSDVideoSettings>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
			<stop>back</stop>
		</keyboard>
	</OSDVideoSettings>
	<OSDAudioSettings>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
			<stop>back</stop>
		</keyboard>
	</OSDAudioSettings>
	<osdsubtitlesettings>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
			<stop>back</stop>
		</keyboard>
	</osdsubtitlesettings>
	<VideoBookmarks>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<rightbracket mod="longpress">back</rightbracket>
			<c mod="longpress">back</c>
		</keyboard>
	</VideoBookmarks>
	<Videos>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">SendClick(14)</return> <!-- Toggle view between unwatched and all videos -->
			<play_pause mod="longpress">togglewatched</play_pause>
		</keyboard>
	</Videos>
	<VideoPlaylist>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">Back</return>
		</keyboard>
	</VideoPlaylist>
	<ContextMenu>
		<keyboard>
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</ContextMenu>
	<MusicInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</MusicInformation>
	<MusicPlaylist>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">back</return>
		</keyboard>
	</MusicPlaylist>
	<SongInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</SongInformation>
	<MovieInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</MovieInformation>
	<PictureInfo>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</PictureInfo>
	<FullscreenLiveTV>
		<keyboard>
			<rightbracket>ActivateWindow(PVROSDChannels)</rightbracket>
			<c>ActivateWindow(PVROSDChannels)</c>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<left mod="longpress">AudioDelay</left>
			<right mod="longpress">subtitledelay</right>
			<return mod="longpress">Record</return>
			<play_pause mod="longpress">showsubtitles</play_pause>
			<stop mod="longpress">ActivateWindow(Teletext)</stop>
		</keyboard>
	</FullscreenLiveTV>
	<TVGuide>
		<keyboard>
			<return mod="longpress">Record</return>
		</keyboard>
	</TVGuide>
	<FullscreenRadio>
		<keyboard>
			<rightbracket>ActivateWindow(PVROSDChannels)</rightbracket>
			<c>ActivateWindow(PVROSDChannels)</c>
		</keyboard>
	</FullscreenRadio>
	<AddonInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</AddonInformation>
	<PlayerProcessInfo>
		<keyboard>
			<leftbracket>back</leftbracket>
			<i>back</i>
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
			<c>ActivateWindow(osdvideosettings)</c>
			<rightbracket mod="longpress">noop</rightbracket>
			<c mod="longpress">noop</c>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
		</keyboard>
	</PlayerProcessInfo>
	<yesnodialog> <!-- Added to allow CEC when update dialog box appears -->
		<keyboard>
			<escape>CECActivateSource</escape>
			<home>CECActivateSource</home>
			<escape mod="longpress">CECStandby</escape>
			<home mod="longpress">CECStandby</home>
		</keyboard>
	</yesnodialog>
	<selectdialog>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
		</keyboard>
	</selectdialog>
	<contextmenu>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
		</keyboard>
	</contextmenu>
	<addonsettings>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
		</keyboard>
	</addonsettings>
	<addonbrowser>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</addonbrowser>
	<filemanager>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</filemanager>
	<interfacesettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</interfacesettings>
	<systeminfo>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</systeminfo>
	<eventlog>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</eventlog>
	<playersettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</playersettings>
	<mediasettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</mediasettings>
	<pvrsettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</pvrsettings>
	<servicesettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</servicesettings>
	<gamesettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</gamesettings>
	<profiles>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</profiles>
	<systemsettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</systemsettings>
	<music>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</music>
	<pictures>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</pictures>
	<skinsettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</skinsettings>
	<musicplaylisteditor>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</musicplaylisteditor>
	<games>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</games>
	<programs>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</programs>
	</keymap>
1 Like

This is a big help thank you. Great to see how you are using longpress in this keymap, some neat little tricks I will have to copy :slight_smile:

1 Like

Just to wrap this thing up I did a bit of testing with Linux Mint and this should be something that will work with all three versions of the OSMC remotes.

Make a file at /etc/udev/hwdb.d/osmcrf.hwdb with the following content…

evdev:input:b0003v2017p1689*
 KEYBOARD_KEY_c0226=x
 KEYBOARD_KEY_c00cd=p
 KEYBOARD_KEY_7002e=volumeup
 KEYBOARD_KEY_7002d=volumedown

evdev:input:b0003v2017p1688*
 KEYBOARD_KEY_7004a=esc
 KEYBOARD_KEY_c0060=i
 KEYBOARD_KEY_10084=c
 KEYBOARD_KEY_c0226=x
 KEYBOARD_KEY_c00cd=p
 KEYBOARD_KEY_7002e=volumeup
 KEYBOARD_KEY_7002d=volumedown

evdev:input:b0003v2252p1037*
 KEYBOARD_KEY_7004a=esc
 KEYBOARD_KEY_c0060=i
 KEYBOARD_KEY_10084=c
 KEYBOARD_KEY_c0226=x
 KEYBOARD_KEY_c00cd=p
 KEYBOARD_KEY_c00b3=f
 KEYBOARD_KEY_c00b4=r

…and then reboot for the remap to take effect. Please note that the file must NOT be set with an executable permission. Additionally, notice that there is a single space before each of the “KEYB…” lines and this is required for this to work.

If there is any Linux experts out there that know why when trying to remap to a keyboard multimedia keys “playpause” and “stop” don’t work and might have a solution then I would happy to hear it.

1 Like

Just to confirm then, this updated /etc/udev/hwdb.d/osmcrf.hwdb along with the keymap above, should, in theory give full controller support to all remotes.

The hwdb file above should make any of the three OSMC remotes that have been released work in any current Debian based x11 distro. It will make it such that the buttons will produce the following key mappings…

(button) = (how Kodi sees it)
Home  = escape
Info  = i
Up    = up
Down  = down
Left  = left
Right = right
OK    = return
Back  = browser_back 
Menu  = c
Play  = p
Stop  = x
Vol-  = volume_down
Vol+  = volume_up
FF    = f
RW    = r

These keys all correspond to things that work with Kodi’s standard keymap. The Kodi keymap I posted above was only written to cover mappings with the native mappings of the remote and the one we are using in OSMC. I will update the keymap to cover this layout as well when I get some time.

This keymap with the hwdb above should make any OSMC remote act the same as it does running under OSMC. I checked for syntax errors but didn’t actually test it so feedback is welcome.

Updated OSMC custom keymap
<?xml version="1.0" encoding="UTF-8"?>
<!-- The second and third generation OSMC remotes use i and c keys that stop functioning with some keyboard languages in OSMC.           -->
<!-- We have remapped those keys in OSMC to kpleftparen and kprightparen with udev to overcome this issue. This file maps those keys to  -->
<!-- Kodi actions and adds tweaks to provide enhanced function. Home was remapped in v1&2 for consistency. The buttons map in Kodi as... -->
<!--                                                                                                                                     -->
<!-- OSMC with udev remap                            non-OSMCv1                 non-OSMCv2                 non-OSMCv3                    -->
<!-- Home  = escape        <key id="61467">          Home  = home               Home  = home               Home  = escape                -->
<!-- Info  = leftbracket   <key id="61480">          Info  =                    Info  = i                  Info  = i                     -->
<!-- Up    = up            <key id="61568">          Up    = up                 Up    = up                 Up    = up                    -->
<!-- Down  = down          <key id="61569">          Down  = down               Down  = down               Down  = down                  -->
<!-- Left  = left          <key id="61570">          Left  = left               Left  = left               Left  = left                  -->
<!-- Right = right         <key id="61571">          Right = right              Right = right              Right = right                 -->
<!-- OK    = return        <key id="61453">          OK    = return             OK    = return             OK    = return                -->
<!-- Back  = browser_back  <key id="61616">          Back  = browser_back       Back  = browser_back       Back  = browser_back          -->
<!-- Menu  = rightbracket  <key id="61481">          Menu  =                    Menu  = c                  Menu  = c                     -->
<!-- Play  = play_pause    <key id="61629">          Play  = play_pause         Play  = play_pause         Play  = play_pause            -->
<!-- Stop  = stop          <key id="61628">          Stop  = stop               Stop  = stop               Stop  = stop                  -->
<!-- Vol-  = volume_down   <key id="61624">          RW    = rewind             Vol-  = minus              Vol-  = minus                 -->
<!-- Vol+  = volume_up     <key id="61625">          FF    = fastforward        Vol+  = equals             Vol+  = equals                -->
<!--                                                                                                                                     -->
<!-- Keymap created by DarwinDesign version 20-11-02                                                                                     -->
<!--                                                                                                                                     -->
<keymap>
	<global>
		<keyboard>
			<escape>PreviousMenu</escape>
			<home>PreviousMenu</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<leftbracket>Info</leftbracket>
			<i>Info</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<left>Left</left>
			<right>Right</right>
			<up>Up</up>
			<down>Down</down>
			<return>Select</return>
			<return mod="longpress">noop</return> <!-- removes default context menu & stops cycling -->
			<browser_back>Back</browser_back>
			<rightbracket>ContextMenu</rightbracket>
			<c>ContextMenu</c>
			<rightbracket mod="longpress">Menu</rightbracket>
			<c mod="longpress">Menu</c>
			<play_pause>PlayPause</play_pause>
			<p>PlayPause</p>
			<play_pause mod="longpress">noop</play_pause> <!-- removes default info & stops cycling -->
			<p mod="longpress">noop</p>
			<stop>Stop</stop>
			<x>Stop</x>
			<volume_down>VolumeDown</volume_down>
			<volume_up>VolumeUp</volume_up>
			<f2>Notification(OSMC Remote Controller, Low Battery Please Replace,5000)</f2>
		</keyboard>
	</global>
	<Home>
		<keyboard>
			<escape>CECActivateSource</escape>
			<home>CECActivateSource</home>
			<escape mod="longpress">CECStandby</escape>
			<home mod="longpress">CECStandby</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<browser_back mod="longpress">ActivateWindow(ShutdownMenu)</browser_back>
			<return mod="longpress">ReloadSkin()</return>
			<play_pause mod="longpress">UpdateLibrary(video)</play_pause>
			<p mod="longpress">UpdateLibrary(video)</p>
		</keyboard>
	</Home>
	<VirtualKeyboard>
		<keyboard>
			<rightbracket mod="longpress">noop</rightbracket>
			<c mod="longpress">noop</c>
			<up mod="longpress">Shift</up>
			<down mod="longpress">Symbols</down>
			<return mod="longpress">Enter</return>
		</keyboard>
	</VirtualKeyboard>
	<FileManager>
		<keyboard>
			<right mod="longpress">Highlight</right>
			<left mod="longpress">Highlight</left>
		</keyboard>
	</FileManager>
	<FullscreenVideo>
		<keyboard>
			<escape>ActivateWindow(videobookmarks)</escape>
			<home>ActivateWindow(videobookmarks)</home>
			<escape mod="longpress">playerdebug</escape>
			<home mod="longpress">playerdebug</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<return mod="longpress">Playlist</return>
			<up mod="longpress">SkipNext</up>
			<down mod="longpress">SkipPrevious</down>
			<left mod="longpress">AudioDelay</left>
			<right mod="longpress">subtitledelay</right>
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
			<c>ActivateWindow(osdvideosettings)</c>
			<rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket>
			<c mod="longpress">ActivateWindow(osdaudiosettings)</c>
			<play_pause mod="longpress">showsubtitles</play_pause>
			<p mod="longpress">showsubtitles</p>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
			<x mod="longpress">ActivateWindow(osdsubtitlesettings)</x>
		</keyboard>
	</FullscreenVideo>
	<FullscreenGame>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>OSD</rightbracket>
			<c>OSD</c>
		</keyboard>
	</FullscreenGame>
	<FullscreenInfo>
		<keyboard>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</FullscreenInfo>
	<Visualisation>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">ActivateWindow(MusicPlaylist)</return>
			<rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket>
			<c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c>
			<rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket>
			<c mod="longpress">ActivateWindow(VisualisationPresetList)</c>
			<p/>
		</keyboard>
	</Visualisation>
	<MusicOSD>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<return mod="longpress">back</return>
			<rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket>
			<c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c>
			<rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket>
			<c mod="longpress">ActivateWindow(VisualisationPresetList)</c>
			<p/>
		</keyboard>
	</MusicOSD>
	<VisualisationPresetList>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
			<p/>
		</keyboard>
	</VisualisationPresetList>
	<slideshow>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<play_pause>pause</play_pause>
			<p>pause</p>
			<up mod="longpress">ZoomIn</up>
			<down mod="longpress">ZoomOut</down>
			<return mod="longpress">ZoomNormal</return>
			<rightbracket></rightbracket> <!-- removes mapping from osmc-classic -->
		</keyboard>
	</slideshow>
	<VideoOSD>
		<keyboard>
			<escape>ActivateWindow(videobookmarks)</escape>
			<home>ActivateWindow(videobookmarks)</home>
			<escape mod="longpress">playerdebug</escape>
			<home mod="longpress">playerdebug</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<up mod="longpress">SkipNext</up>
			<down mod="longpress">SkipPrevious</down>
			<left mod="longpress">AudioDelay</left>
			<right mod="longpress">subtitledelay</right>
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
			<return mod="longpress">back</return>
			<c>ActivateWindow(osdvideosettings)</c>
			<rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket>
			<c mod="longpress">ActivateWindow(osdaudiosettings)</c>
			<play_pause mod="longpress">showsubtitles</play_pause>
			<p mod="longpress">showsubtitles</p>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
			<x mod="longpress">ActivateWindow(osdsubtitlesettings)</x>
		</keyboard>
	</VideoOSD>
	<VideoMenu>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket></rightbracket> <!-- removes mapping from osmc-classic -->
		</keyboard>
	</VideoMenu>
	<OSDVideoSettings>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
			<stop>back</stop>
			<x>back</x>
		</keyboard>
	</OSDVideoSettings>
	<OSDAudioSettings>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
			<stop>back</stop>
			<x>back</x>
		</keyboard>
	</OSDAudioSettings>
	<osdsubtitlesettings>
		<keyboard>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<rightbracket>back</rightbracket>
			<c>back</c>
			<stop>back</stop>
			<x>back</x>
		</keyboard>
	</osdsubtitlesettings>
	<VideoBookmarks>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<rightbracket mod="longpress">back</rightbracket>
			<c mod="longpress">back</c>
		</keyboard>
	</VideoBookmarks>
	<Videos>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">SendClick(14)</return> <!-- Toggle view between unwatched and all videos -->
			<play_pause mod="longpress">togglewatched</play_pause>
			<p mod="longpress">togglewatched</p>
		</keyboard>
	</Videos>
	<VideoPlaylist>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">Back</return>
		</keyboard>
	</VideoPlaylist>
	<ContextMenu>
		<keyboard>
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</ContextMenu>
	<MusicInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</MusicInformation>
	<MusicPlaylist>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
			<return mod="longpress">back</return>
		</keyboard>
	</MusicPlaylist>
	<SongInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</SongInformation>
	<MovieInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</MovieInformation>
	<PictureInfo>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</PictureInfo>
	<FullscreenLiveTV>
		<keyboard>
			<rightbracket>ActivateWindow(PVROSDChannels)</rightbracket>
			<c>ActivateWindow(PVROSDChannels)</c>
			<leftbracket>info</leftbracket>
			<i>info</i>
			<leftbracket mod="longpress">playerprocessinfo</leftbracket>
			<i mod="longpress">playerprocessinfo</i>
			<left mod="longpress">AudioDelay</left>
			<right mod="longpress">subtitledelay</right>
			<return mod="longpress">Record</return>
			<play_pause mod="longpress">showsubtitles</play_pause>
			<p mod="longpress">showsubtitles</p>
			<stop mod="longpress">ActivateWindow(Teletext)</stop>
			<x mod="longpress">ActivateWindow(Teletext)</x>
		</keyboard>
	</FullscreenLiveTV>
	<TVGuide>
		<keyboard>
			<return mod="longpress">Record</return>
		</keyboard>
	</TVGuide>
	<FullscreenRadio>
		<keyboard>
			<rightbracket>ActivateWindow(PVROSDChannels)</rightbracket>
			<c>ActivateWindow(PVROSDChannels)</c>
		</keyboard>
	</FullscreenRadio>
	<AddonInformation>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
			<leftbracket>Back</leftbracket>
			<i>Back</i>
			<leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
			<i mod="longpress">noop</i> <!-- stops cycling -->
			<rightbracket>Back</rightbracket>
			<c>Back</c>
		</keyboard>
	</AddonInformation>
	<PlayerProcessInfo>
		<keyboard>
			<leftbracket>back</leftbracket>
			<i>back</i>
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
			<c>ActivateWindow(osdvideosettings)</c>
			<rightbracket mod="longpress">noop</rightbracket>
			<c mod="longpress">noop</c>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
			<x mod="longpress">ActivateWindow(osdsubtitlesettings)</x>
		</keyboard>
	</PlayerProcessInfo>
	<yesnodialog> <!-- Added to allow CEC when update dialog box appears -->
		<keyboard>
			<escape>CECActivateSource</escape>
			<home>CECActivateSource</home>
			<escape mod="longpress">CECStandby</escape>
			<home mod="longpress">CECStandby</home>
		</keyboard>
	</yesnodialog>
	<selectdialog>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
		</keyboard>
	</selectdialog>
	<contextmenu>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
		</keyboard>
	</contextmenu>
	<addonsettings>
		<keyboard>
			<escape>back</escape>
			<home>back</home>
		</keyboard>
	</addonsettings>
	<addonbrowser>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</addonbrowser>
	<filemanager>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</filemanager>
	<interfacesettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</interfacesettings>
	<systeminfo>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</systeminfo>
	<eventlog>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</eventlog>
	<playersettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</playersettings>
	<mediasettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</mediasettings>
	<pvrsettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</pvrsettings>
	<servicesettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</servicesettings>
	<gamesettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</gamesettings>
	<profiles>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</profiles>
	<systemsettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</systemsettings>
	<music>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</music>
	<pictures>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</pictures>
	<skinsettings>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</skinsettings>
	<musicplaylisteditor>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</musicplaylisteditor>
	<games>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</games>
	<programs>
		<keyboard>
			<escape>ActivateWindow(Home)</escape>
			<home>ActivateWindow(Home)</home>
			<escape mod="longpress">fullscreen</escape>
			<home mod="longpress">fullscreen</home>
		</keyboard>
	</programs>
	</keymap>
1 Like

Just wanted to say that I have a new remote and all the keys/keymaps are working perfectly with the last two files here. Thanks again.

Thanks for the feedback.