Best way to set up an Infrared Remote Control?

So I got a Vero 4K from eBay for £45 the other day. Very impressive! Basically the least amount of config I’ve needed to do to get a good performance from Kodi and doesn’t hitch at all on 4K content even when transcoding to AC3 for my old 5.1 style amp.

I’ve already got my customised/slightly tweaked version of Confluence on there as a preferred skin, now the challenge remains in getting a remote layout I’m happy with.

Credit where it’s due, the default OSMC remote layout is very good; even the long presses make a lot of logical sense to me from a usability standpoint, certainly better than the Apple TV style or original Xbox (yep; I’ve been using Kodi since it was XBMC circa 2008). But it just doesn’t have enough buttons, for example to make a persistent “Favourites anywhere” feature, so I’d like to get some kind of universal remote system sorted for it.

Now I do have some choices. First of all, Harmony remotes are out - I have an old Harmony 400 lying around somewhere that I never got on with, something to do with inter-key delay and needing to use that terrible software to configure it. I much prefer the JP1 style remotes and have a couple of One For All variants of this - the older URC7960 and the newer URC1280, plus a FLIRC v1 dongle I used to use to control Kodi on a Fire TV. To control XBMC/Kodi I’ve usually used the original Xbox DVD dongle IR, either on Xbox controller port or with Windows 7 and 10 via a USB adapter and specialist XBCDRC driver plus Eventghost. Has worked great for years.

Tried the Xbox DVD dongle in My OSMC without any luck; won’t pick up any IR input from the remotes using code 0522. I did have some success using the Xbox 360 MC remote via code 1708 although input seems a little sluggish with or without the IR extender, which from what I’ve read on the forums here is a bit of an Achilles heel of the Vero - bluetooth/RF are better being the general consensus.

What I’d like to do is find a way to “teach in” some IR commands via the irremote feature, edit the keymap XML(s) as needed, and see how I get on. Basically I’m not overly fussed which IR solution works here - which JP1 remote code or FLIRC - as long as the solution is reliable, not overly laggy and allows me to assign short and long presses as needed for various functions (like short press info button on remote = standard Kodi info function and long press info on remote = jump directly to System Info, stuff like that).

So, to cut a long first post short, any pointers on the best way to go about things here would be appreciated. I know I need to SSH in and kill Kodi (mediacentre process or whatever it’s called via command line) but I can’t seem to find the forum post I was reading in the wee small hours of the morning earlier.

Thanks in advance! The Vero 4K is looking like THE Kodi box, so far, and I’ve been through enough of them to know (original Xbox, Fire TV, Apple TV 4, three media centre PCs running Windows 7 or Windows 10… probably more) just need to get a working method to customise the remote and I’ll be very happy with this setup, relegating my third HTPC to just being a media server for OSMC boxes instead. :grin::+1:

With the exception of something like trying to get SMS jumps without number keys (bonus Kodi points if you actually know what that is without google :grin:) I think the limited number of buttons is probably still useable for your use if you get a bit more creative with how you program it. Programing a key to the favorites window in global may sound good but in practice it can be problematic as Kodi can crash or have strange behavior when called during certain views. If instead you just programed to to the home window on a longpress then you could from most places click home once and then whatever button to bring up this favorites window.

To the question of other remotes the slowness is due to running though lircd which also keeps long-press from working. I have a USB MCE adapter I was playing with the other day looking to bypass this. I think I know how to make it work but haven’t gotten around to trying it yet. If your not bothered with the lag you can just program a remote to a MS media center remote and set the conf in My OSMC for RC6 and you should have to complete layout without any learning of new keys. For tweaking the keymap there is nothing different in OSMC vs any other Kodi platform.

I think the FLIRC adapters are already excluded from lircd but I don’t own one to know for sure. This would be by far the most flexible as it will take just about any IR input and spit back out whatever keyboard key you wish.

Some references if your not already aware…

OSMC specific remote info

The special keymap it uses that may be informative of how you can customize its use…

Thanks for your speedy reply!

Hehehe yes I DO know what the JumpSMS function is; I use it regularly and it’s an integral part of the Kodi experience for me, handy for quick YouTube add-on searches without needing to grab an entire keyboard or resort to a smartphone casting to the app version on the Apple TV, so I guess I earn me some delicious bonus points :joy:

I see your point; the default clicker is pretty good but I much prefer JP1 style remotes for the silent running and layouts with the guide/info/menu/back keys around the directional dial; it all falls under the fingers easily. Another one I quite like is using the RGYB :red_circle::green_circle::yellow_circle::large_blue_circle: coloured buttons as short cuts (TV shows by title/Movies by title/Videos by folder (for non-library content)/Music by folder) and then repurposing those in FullscreenVideo (Audio delay/Subtitle Delay/Video options/Audio options). I’ve been using Kodi this way for years and it’s very quick and efficient; stuff like being able to hold down the record :record_button: button to trigger an OpenSubtitle search and automatic download saves messing around in menus for 20 seconds when trying to watch and is basically a godsend!

From your good advice, sounds like it might be worth skipping LIRC built-ins on the Vero and using the FLIRC v1 dongle instead to avoid hours of trouble, inconsistent operation and so forth. The way I did it with the Fire TV to maintain regular USB keyboard operation was map “special” customisations to stuff like Ctrl-Alt-1 which didn’t interfere with the regular keymaps. Sounds like I might be able to do that again; bit of a fiddle but at least I’ve done it once before. Using the FLIRC v1 dongle should allow for long press functions to work too, right, unlike the built-in IR functionality?

If you have a FLIRC v1 just give it a try. Like I said, I don’t own one so I really don’t want to speak definitively about it, but I think that long-press works with them. I would discourage doing things like programing to Ctrl-Alt-1. You just make more work for yourself by doing that as not only go you have to keep track of button>flirc map>keymap instead of just button>keymap, but you can miss out on situations where a button is programmed differently for different windows. It is a much better idea to just examine keyboard.xml and program to an appropriate key. Any customizations you just do in your .kodi/userdata/keymaps/ folder as anything there will override the stock keymaps that load before it. The less you step outside of the norm, the less chance your going to run into issues.

Yep definitely sounding like FLIRC is the way to go on this one. This is part of the reason I always have lots of gadgets etc around; you never know when they might come in handy again!

The way I used to get around using different shortcuts like Ctrl-Alt-1 was replicate a base function I liked across all contexts (global and fullscreenvideo for example) by copy/pasting it in the keymap XML and then tweaking it later. That way I could retain the “regular” button function if I messed up by pressing (on a JP1 remote) SETUP- as most commonly the “shifted” button does the stock function, but then I could assign over it with an EFC to do the “customised” function. Not sure if that makes sense - programming JP1 remotes can be a little fiddly but I like it because it can all be done “on-device” rather than lancing up via USB a la Harmony series - but that’s my approach.

Can I just ask, where are the regular keymaps kept, is it safe to edit them etc, and what’s the quickest way to test, is it by editing the keymap, saving it, then exiting/relaunching Kodi? This is gonna take me hours/days to get right so I need to streamline my testing method as I’ve done in the past, and OSMC of course stores things in different places from all the other Kodi builds I’ve had across platforms.

You should never edit the default keymaps which are part of the program install. They will be overwritten by updates if you do that plus you have to deal with permission issues. The only way you should be customizing the keymap is by either using keymap editor or by manually adding a keymap file to ~/.kodi/userdata/keymaps/. The file name is of no consequence other than it must have a xml extension and if you use more than one file they will be loaded in alphabetical order.

Best/fastest is a bit subjective and personalized but what I find works well for me is to install SMB Server from the My OSMC add-on and then access the Kodi box in Windows by bringing up a File Explorer window and typing in the address bar //192.168.x.x (replace that with the actual ip address of your device, default credentials are osmc:osmc) which gives direct access to the home folder so I can make and update a keymap in Windows. I use Notepad++ with a XML tools plugin to make sure it checks my syntax when saving. When I make any changes and I’m ready to test I ssh into my box (start menu>cmd and type in ssh osmc@192.168.x.x) and type in kodi-send -a reloadkeymaps which will let you immediately test your changes negating the need to reboot.

If you were masochistic you could skip the editing in Windows part and ssh and just nano ~/.kodi/userdata/keymaps/keymapname.xml and do your editing directly that way. Kodi will not load a keymap with any xml errors though so if your doing something beyond basic you may want a open a second ssh window to monitor the log when you reloadkeymaps by

kodi-send -a toggledebug
tail -f .kodi/temp/kodi.log

ctrl+c to stop following the log, run the toggledebug again after your done.

The second ssh window can also be useful when figuring out what key is what by turning on debug logging and using the following to see what key is being received.

tail -f .kodi/temp/kodi.log | grep -B 1 'HandleKey'

This is all invaluable advice, thank you! I’ve made some progress already between what you’ve said and the Kodi HOW-TO and it’s actually been a little quicker than I expected.

      <one mod="ctrl,alt">Notification(keypress, Ctrl-Alt-1 working, 3)</one>
      <one mod="ctrl,alt,longpress">Notification(keypress, Ctrl-Alt-1 longpress working, 3)</one>

Those are valid and don’t clash with the regular keyboard.xml key mapping. I didn’t actually know you could call a longpress at the same time as modifiers but, Kodi being awesome, of course you can.

One thing I noticed when comparing the keyboard.xml to the remote.xml is that for some reason if you have JumpSMS mapped as a <global> then you have to change that to regular number calls in the <VirtualKeyboard> section otherwise JumpSMS doesn’t work properly for text entry.

For example, if you have this in <Global> :-

      <two mod="ctrl">JumpSMS2</two>

but don’t have the following in <VirtualKeyboard>

      <two mod="ctrl">Number2</two>

Then using Ctrl-2 works for skipping between a,b,c named Titles in library views, but doesn’t allow SMS style entry in the Virtual Keyboard OSD. As long as both are present the function works as expected. In fact I’d say if you’re using the regular number keys on a regular keyboard this can make library access quicker because a lot of keys like c are mapped to other things (in this case ContextMenu) so this allows you to jump by letter a bit easier in bigger libraries without using PgUp and PgDn. For some reason Ctrl doesn’t work as a modifier on the numpad for that kind of thing; I just tested it and it does nothing. Not a problem for mapping a remote but worth noting.

The ability to use modifiers and long presses gives me more than enough keys to work with when combined with FLIRC, and this is a heck of a lot easier to set up on the Vero 4K than it was on the Fire TV, which required a lot more legwork.

If you were using a keyboard you would hold down shift and press whatever letter you wanted to jump to, editing in a keymap for this is not needed. As for the SMS difference it is a bit of six of one, half a dozen of another. AFAIK the jumpsms actions only do anything in the music and video windows. What you noticed is exactly what is suppose to happen. If you put something in global then it is mapped everywhere except where it becomes mapped to something else for a particular window. As such if you turn a “two” keyname into a global jumpsms2 action then it will do something in the library view but the virtual keyboard doesn’t have anything it is programmed to do when it receives that action. Therefore the two keyname must map back to the number2 action for other windows that are looking for that type of input.

I don’t quite get why you would have a flirc send out a ctrl+2 instead of just 2. You just having to manually add in actions that are already mapped in customcontroller.Harmony.xml for no apparent benifit.

It probably sounds silly but I want none of the original keymap changed, functionality wise. If the number keys on a real keyboard suddenly start acting as JumpSMS it would be confusing because that should only be happening on a remote control. I want the functionality of the keyboard and the remote as separate as possible even though they share the same keymap, so there’s no usability confusion when moving between the two devices. It’s a bit more of a pain to set up this way, but it’s worth it to keep the “default” keyboard behaviour basically the same.

That explanation of why JumpSMS global needs to be set to NumberX as part of the input chain makes sense, actually.

1 Like

I went the JP1 remote route.
i created a custom jp1 device (based on the hauppage protocal) and matching lirc conf for it.

custom jp1 (remotemaster) device file
custom lirc conf

As a note, if you have an IR remote, you would not need a dongle, just symlink /etc/lirc/lirc.conf to whichever IR config you actually want to use.

Now this is interesting! I too stuck with the JP1 remote path :-


One For All URC1280 Contour 8

FLIRC can be a little funny about which codes it’ll accept (some don’t trigger correctly, including the aforementioned original Xbox DVD 0522 codes which if memory serves are based on old RCA ones) so I picked one it was happy with and then altered the keymap into a form I was mostly happy with.

I’m still having trouble making the “jump to home screen” button work consistently even when set as a <global> but I think some of these might be software lockouts by Kodi, i.e. the program is making sure you’re not jumping back to the home screen while the VirtualKeyboard.xml is visible which from a UI standpoint would be confusing. It’s not quite as slick to use as Windows 10 + Eventghost + XBCDRC + Xbox DVD dongle via USB adapter but it’s close enough.

What put me off using the internal IR sensor or even the extender was lag. Developers of OSMC themselves have said that using HDMI-CEC, RF, Bluetooth or even FLIRC probably produces less control latency which for me is really important - lost button presses get quite annoying over time, as do “buffered” ones where nothing happens and then you get the entire buffer cleared and Kodi starts going nuts trying to catch up. Actually Harmony remotes were pretty bad for buffering inputs even when told not to; JP1 remotes are snappier.

Can you tell me if your current JP1 Hauppauge protocol gets around the LIRC + Internal IR Sensor lag problem, and if so how? When I did a brief test run of my aforementioned remote (which is super quick to respond to button presses on every other device) using LIRC + Internal IR Sensor + Xbox 360 Media Extender remote code it was too laggy and “ignoring” button presses to the point where combined with the forum information seemed like an unsolvable problem.

There isn’t a lockout but rather the command to switch to a different window view does not work when their is a overlay on top of the current window (or whatever the proper terminology is). As such switching directly to home from some views is simply not possible and the only good workaround is to make the button do a back for places where it is problematic so it works with a double press, once to go back, once to get home.

An example of this is the update notification. If I use a home button for power on via CEC attached to the home screen with it being a global go to the home window 2 presses of the home button wakes everything up and switches input, unless there was un update notification, which would make the home button do nothing. Making that button for that notification window act as a back it allowed the home button to still do the wake function, just with a third button press.

The path programing a home button view via a global setting I ended up abandoning though. It was found that the Plex add-on would allow you bring up the home window with this action but it was then stuck running in the background with no way to recover short of rebooting Kodi. As there was no fix I could conceive for this issue, and it being a big question mark on where else problems may crop up, I opted for just mapping that action to windows where I had verified it worked ensuring a minimal risk of breakage and bugs. If you look at the keymap for the OSMC remote I linked to earlier you will see this. You can see how I previously had it setup using global below…

Click to expand
<keymap>
	<global>
		<keyboard>
			<escape>ActivateWindow(Home)</escape> <!-- Home v3 -->
			<home>ActivateWindow(Home)</home> <!-- Home v1 -->
			<escape mod="longpress">fullscreen</escape> <!-- Home v3 -->
			<home mod="longpress">fullscreen</home> <!-- Home v1 -->
			<leftbracket>Info</leftbracket> <!-- Info remap -->
			<i>Info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">noop</leftbracket> <!-- Info remap stops cycling -->
			<i mod="longpress">noop</i> <!-- Info v3  stops cycling -->
			<return mod="longpress">noop</return> <!-- removes default context menu  & stops cycling -->
			<browser_back>Back</browser_back> <!-- Back -->
			<rightbracket>ContextMenu</rightbracket> <!-- Menu remap -->
			<c>ContextMenu</c> <!-- Menu v3 -->
			<rightbracket mod="longpress">Menu</rightbracket> <!-- Menu remap -->
			<c mod="longpress">Menu</c> <!-- Menu v3 -->
			<play_pause mod="longpress">noop</play_pause> <!-- removes default info & stops cycling -->
			<f2>Notification(OSMC Remote Controller, Low Battery Please Replace,5000)</f2> <!-- Gen 3 OSMC remote low battery -->
		</keyboard>
	</global>
	<Home>
		<keyboard>
			<escape>CECActivateSource</escape> <!-- Home v3 -->
			<home>CECActivateSource</home> <!-- Home v1 -->
			<escape mod="longpress">CECStandby</escape> <!-- Home v3 -->
			<home mod="longpress">CECStandby</home> <!-- Home v1 -->
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<browser_back mod="longpress">ActivateWindow(ShutdownMenu)</browser_back> <!-- Back -->
			<return mod="longpress">ReloadSkin()</return>
			<play_pause mod="longpress">UpdateLibrary(video)</play_pause>
		</keyboard>
	</Home>
	<VirtualKeyboard>
		<keyboard>
			<rightbracket mod="longpress">noop</rightbracket> <!-- Menu remap -->
			<c mod="longpress">noop</c> <!-- Menu v3 -->
			<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 v3 -->
			<home>ActivateWindow(videobookmarks)</home> <!-- Home v1 -->
			<escape mod="longpress">playerdebug</escape> <!-- Home v3 -->
			<home mod="longpress">playerdebug</home> <!-- Home v1 -->
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<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> <!-- Menu remap -->
			<c>ActivateWindow(osdvideosettings)</c> <!-- Menu v3 -->
			<rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket> <!-- Menu remap -->
			<c mod="longpress">ActivateWindow(osdaudiosettings)</c> <!-- Menu v3 -->
			<play_pause mod="longpress">showsubtitles</play_pause>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
		</keyboard>
	</FullscreenVideo>
	<FullscreenGame>
		<keyboard>
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<rightbracket>OSD</rightbracket> <!-- Menu remap -->
			<c>OSD</c> <!-- Menu v3 -->
		</keyboard>
	</FullscreenGame>
	<FullscreenInfo>
		<keyboard>
			<leftbracket>Back</leftbracket> <!-- Info remap -->
			<i>Back</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<rightbracket>Back</rightbracket> <!-- Menu remap -->
			<c>Back</c> <!-- Menu v3 -->
		</keyboard>
	</FullscreenInfo>
	<Visualisation>
		<keyboard>
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<escape></escape> <!-- removes default home to fullscreen -->
			<return mod="longpress">ActivateWindow(MusicPlaylist)</return>
			<rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket> <!-- Menu remap -->
			<c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c> <!-- Menu v3 -->
			<rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket> <!-- Menu remap -->
			<c mod="longpress">ActivateWindow(VisualisationPresetList)</c> <!-- Menu v3 -->
		</keyboard>
	</Visualisation>
	<MusicOSD>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<return mod="longpress">back</return>
			<rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket> <!-- Menu remap -->
			<c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c> <!-- Menu v3 -->
			<rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket> <!-- Menu remap -->
			<c mod="longpress">ActivateWindow(VisualisationPresetList)</c> <!-- Menu v3 -->
		</keyboard>
	</MusicOSD>
	<VisualisationPresetList>
		<keyboard>
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<rightbracket>back</rightbracket> <!-- Menu remap -->
			<c>back</c> <!-- Menu v3 -->
		</keyboard>
	</VisualisationPresetList>
	<slideshow>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<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 v3 -->
			<home>ActivateWindow(videobookmarks)</home> <!-- Home v1 -->
			<escape mod="longpress">playerdebug</escape> <!-- Home v3 -->
			<home mod="longpress">playerdebug</home> <!-- Home v1 -->
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<up mod="longpress">SkipNext</up>
			<down mod="longpress">SkipPrevious</down>
			<left mod="longpress">AudioDelay</left>
			<right mod="longpress">subtitledelay</right>
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket> <!-- Menu remap -->
			<return mod="longpress">back</return>
			<c>ActivateWindow(osdvideosettings)</c> <!-- Menu v3 -->
			<rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket> <!-- Menu remap -->
			<c mod="longpress">ActivateWindow(osdaudiosettings)</c> <!-- Menu v3 -->
			<play_pause mod="longpress">showsubtitles</play_pause>
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
		</keyboard>
	</VideoOSD>
	<VideoMenu>
		<keyboard>
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<escape></escape> <!-- removes default home to fullscreen -->
			<rightbracket></rightbracket> <!-- removes mapping from osmc-classic -->
		</keyboard>
	</VideoMenu>
	<OSDVideoSettings>
		<keyboard>
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<rightbracket>back</rightbracket> <!-- Menu remap -->
			<c>back</c> <!-- Menu v3 -->
			<stop>back</stop>
		</keyboard>
	</OSDVideoSettings>
	<OSDAudioSettings>
		<keyboard>
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<rightbracket>back</rightbracket> <!-- Menu remap -->
			<c>back</c> <!-- Menu v3 -->
			<stop>back</stop>
		</keyboard>
	</OSDAudioSettings>
	<osdsubtitlesettings>
		<keyboard>
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<rightbracket>back</rightbracket> <!-- Menu remap -->
			<c>back</c> <!-- Menu v3 -->
			<stop>back</stop>
		</keyboard>
	</osdsubtitlesettings>
	<VideoBookmarks>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
			<rightbracket mod="longpress">back</rightbracket> <!-- Menu remap -->
			<c mod="longpress">back</c> <!-- Menu v3 -->
		</keyboard>
	</VideoBookmarks>
	<Videos>
		<keyboard>
			<return mod="longpress">SendClick(14)</return> <!-- OK toggle view of unwatched or all videos -->
			<play_pause mod="longpress">togglewatched</play_pause>
		</keyboard>
	</Videos>
	<VideoPlaylist>
		<keyboard>
			<return mod="longpress">Back</return>
		</keyboard>
	</VideoPlaylist>
	<ContextMenu>
		<keyboard>
			<rightbracket>Back</rightbracket> <!-- Menu remap -->
			<c>Back</c> <!-- Menu v3 -->
		</keyboard>
	</ContextMenu>
	<MusicInformation>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
			<leftbracket>Back</leftbracket> <!-- Info remap -->
			<i>Back</i> <!-- Info v3 -->
			<leftbracket mod="longpress">noop</leftbracket> <!-- Fixes dialog cycling -->
			<i mod="longpress">noop</i> <!-- Fixes dialog cycling -->
			<rightbracket>Back</rightbracket> <!-- Menu remap -->
			<c>Back</c> <!-- Menu v3 -->
		</keyboard>
	</MusicInformation>
  <MusicPlaylist>
    <keyboard>
			<return mod="longpress">back</return>
    </keyboard>
  </MusicPlaylist>
	<SongInformation>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
			<leftbracket>Back</leftbracket> <!-- Info remap -->
			<i>Back</i> <!-- Info v3 -->
			<leftbracket mod="longpress">noop</leftbracket> <!-- Fixes dialog cycling -->
			<i mod="longpress">noop</i> <!-- Fixes dialog cycling -->
			<rightbracket>Back</rightbracket> <!-- Menu remap -->
			<c>Back</c> <!-- Menu v3 -->
		</keyboard>
	</SongInformation>
	<MovieInformation>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
			<leftbracket>Back</leftbracket> <!-- Info remap -->
			<i>Back</i> <!-- Info v3 -->
			<leftbracket mod="longpress">noop</leftbracket> <!-- Fixes dialog cycling -->
			<i mod="longpress">noop</i> <!-- Fixes dialog cycling -->
			<rightbracket>Back</rightbracket> <!-- Menu remap -->
			<c>Back</c> <!-- Menu v3 -->
		</keyboard>
	</MovieInformation>
	<PictureInfo>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
			<leftbracket>Back</leftbracket> <!-- Info remap -->
			<i>Back</i> <!-- Info v3 -->
			<leftbracket mod="longpress">noop</leftbracket> <!-- Fixes dialog cycling -->
			<i mod="longpress">noop</i> <!-- Fixes dialog cycling -->
			<rightbracket>Back</rightbracket> <!-- Menu remap -->
			<c>Back</c> <!-- Menu v3 -->
		</keyboard>
	</PictureInfo>
	<FullscreenLiveTV>
		<keyboard>
			<rightbracket>ActivateWindow(PVROSDChannels)</rightbracket> <!-- Menu remap -->
			<c>ActivateWindow(PVROSDChannels)</c> <!-- Menu v3 -->
			<leftbracket>info</leftbracket> <!-- Info remap -->
			<i>info</i> <!-- Info v3 -->
			<leftbracket mod="longpress">playerprocessinfo</leftbracket> <!-- Info remap -->
			<i mod="longpress">playerprocessinfo</i> <!-- Info v3 -->
			<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> <!-- Menu remap -->
			<c>ActivateWindow(PVROSDChannels)</c> <!-- Menu v3 -->
		</keyboard>
	</FullscreenRadio>
	<PVROSDChannels>
		<keyboard>
			<escape></escape> <!-- removes default home to fullscreen -->
		</keyboard>
	</PVROSDChannels>
	<PVRChannelGuide>
		<keyboard>
			<escape></escape> <!-- removes default home to fullscreen -->
		</keyboard>
	</PVRChannelGuide>
	<AddonInformation>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
			<leftbracket>Back</leftbracket> <!-- Info remap -->
			<i>Back</i> <!-- Info v3 -->
			<leftbracket mod="longpress">noop</leftbracket> <!-- Fixes dialog cycling -->
			<i mod="longpress">noop</i> <!-- Fixes dialog cycling -->
			<rightbracket>Back</rightbracket> <!-- Menu remap -->
			<c>Back</c> <!-- Menu v3 -->
		</keyboard>
	</AddonInformation>
	<PlayerProcessInfo>
		<keyboard>
			<leftbracket>back</leftbracket> <!-- Info remap -->
			<i>back</i> <!-- Info v3 -->
			<rightbracket>ActivateWindow(osdvideosettings)</rightbracket> <!-- Menu remap -->
			<c>ActivateWindow(osdvideosettings)</c> <!-- Menu v3 -->
			<rightbracket mod="longpress">noop</rightbracket> <!-- Menu remap -->
			<c mod="longpress">noop</c> <!-- Menu v3 -->
			<stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
		</keyboard>
	</PlayerProcessInfo>
	<yesnodialog> <!-- Added to allow CEC when update dialog box appears -->
		<keyboard>
			<escape>CECActivateSource</escape> <!-- Home v3 -->
			<home>CECActivateSource</home> <!-- Home v1 -->
			<escape mod="longpress">CECStandby</escape> <!-- Home v3 -->
			<home mod="longpress">CECStandby</home> <!-- Home v1 -->
		</keyboard>
	</yesnodialog>
	<selectdialog>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
		</keyboard>
	</selectdialog>
	<contextmenu>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
		</keyboard>
	</contextmenu>
	<addonsettings>
		<keyboard>
			<escape>back</escape> <!-- Home v3 -->
			<home>back</home> <!-- Home v1 -->
		</keyboard>
	</addonsettings>
</keymap>

That’s kinda what I figured, and it seems some of it was done from a design/failsafe point of view to help prevent “stuck” UI due to a less than ideal combination of button presses that weren’t well anticipated. I wanted to make the home button (I’m using GUIDE button on my particular remote) act as a back button in say Virtual Keyboardand a few other places but it’s a bit of a fiddle to get it to work consistently across all windows.

Come to think of it, I’ve just read this back and there was sadly no reply to the question

:flushed:

Why are you asking me and not @randallspicher who posted that? :grin:

I don’t see how it would. I also didn’t think that would allow long-press to work either. I was hoping for more details as well. I’m quite familiar with Kodi and Keymaps, but Linux info less so.

:joy: oops my mistake, apologies. I figured it was hardware level fubar’d kinda, so I went for a better option. Without long press it wouldn’t be useful anyway; almost every key on my remote has a long press thing going on, like press red :red_circle: for movies by title/hold red for recently added and :green_circle: green press for TV shows, long press for recently added, long press 8 for in-progress TV shows. Just allows you to get around the UI super quick.

I’ve been playing with mine this last week and not having as much success as I hoped. I’m currently in the process of talking myself into forking over the money for a FLIRC USB.

I’d highly recommend it. It’s very close to the lightning fast snappiness of the Xbox DVD dongle via Eventghost on Windows, and that’s just the v1 I have. I would assume it might be even better with future generations of the hardware; I got mine not long after they came out I think.

Quite tempted to pick up a new one and see, actually. Would certainly make Kodi deployment easier across a host of devices; same keymap can be used just with different IR code sets taught to the FLIRC so you can have multiple ones not interfering with each other in the same room if required, just do what I did and make a template telling you what each remote key needs to be assigned to (for example in my keymap Alt-6 maps to the GUIDE button and does Home on single press, Settings on long press).

Basically a great concept; if the device supports a USB keyboard it’ll work. This of course rules the Apple TV out, past the now pretty deprecated and underpowered first gen one which I had - even with a Crystal HD PCIe graphics upgrade it struggled to play even 720p H.264 smoothly.

The only new feature I’m aware of with newer ones is that you can assign longpress on the FLIRC itself. I can see how that would be useful for some applications, but not so much for Kodi.

I’m not familiar with the lag problem. (not noticing any issues myself). There were, in the past, some issues with button repeats on certain kernel releases (I’m running on the 4.9 branch currently), but those were resolved.