Taking the 2020 Chromecast with Google TV to the next level: Key Mapper, a Better Button Remapping App

Previously I wrote down the way I originally set up my CCwGTV which included an app to remap buttons on the remote. However, that particular application had some limitations on which buttons could be remapped. Recently I came across an app that can not only remap everything, but is also completely free and open source. Introducing, Key Mapper by sds100.

Different app, different limitations yet more options

While this app is better, it does come with 2 different limitations. The first limitation is the UI doesn’t always play nice with the remote, so the use of a mouse or trackpad is highly recommended. Secondly, the app can not be downloaded directly from the Google Play store despite it being on it for other devices. Instead you will have to sideload the APK which can be found on the official GitHub repo. As for how to sideload apps onto the CCwGTV, I’ve already covered that in the previous post.

So how exactly is this app better? Well, aside from being able to remap every button it also allows independent mappings for each input device, button combinations and even button sequences. There are also more actions available including macros. Keep in mind this application is by far less friendly for newcomers with zero handholding along the way. As such there is a clear trade-off between user friendliness and possibilities.

My configuration

Upon first launch you will be greeted by a splash screen telling you to grant the app permissions and alter system settings. Unfortunately, none of these work and will have to granted manually so let’s dive into the CCwGTV settings menu.

  • Accessibility service: System -> Accessibility -> Services -> Key Mapper -> Enabled.
    This enables the app to work and remap buttons.
  • Power Saving: Apps -> Special app access -> Energy optimisation -> Key Mapper -> Disable.
    This will prevent the app from getting closed after a period of time, thus breaking your custom mappings.
  • Allow modifying settings: Apps -> Special app access -> Modify system settings -> Key Mapper -> Enable.
    This will allow Key Mapper to system settings. Required for some actions including mute/unmute.

At this point you can start adding your keybinds. Keep in mind that mapping a key will unmap the stock settings. This means adding a double press action will also remove the single press action. You can toggle “keep original keypress” to bypass this, but generally this resolves in unwanted behaviour where double pressing the Netflix button would still launch Netflix. Simply adding mappings for all button press types will resolve this issue.

Remote

ButtonSingle pressDouble pressHold press
Navigation wheelKeep stockKeep stock Keep stock
EnterKeep stockKeep stock Keep stock
BackKeep stockKeep stockKeep stock
AssistantKeep stockKeep stockKeep stock
HomeHomeApp Drawer (app)System settings
Mute*MuteSpotify Media: Play/Pause
YouTubeYouTubeZiggo Go (Dutch cable tv)Plex
NetflixNetflixPrime VideoDisney+
StandbyKeep stock Keep stock Keep stock
InputTwitch
Vol +*Can not remapCan not remapCan not remap
Vol –*Can not remapCan not remapCan not remap
*Can only be remapped when remote is set to Chromecast volume mode

Keyboard (Microsoft All-in-One Media Keyboard)

ButtonSingle pressDouble pressHold press
HomeHomeApp Drawer (app)System settings
Headphones iconBack
Folder iconLaunch Opera

Final thoughts

While this application opens the door to more functionality of which I’ve only scraped the surface, it isn’t perfect. For some reason I can’t seem to get to the “kill app” function to work despite it working flawlessly on the previously used Button Mapper app. The UI can also be a pain to navigate even with a mouse. This mostly comes from the fact this application was designed with a vertical/tall screens in mind. On horizontal/wide screens this leaves a lof of dead space on the sides while forcing you to scroll down to see each of your binds. It also doesn’t group binds using the same keys together, instead opting to position them in the menu on chronological order. Over time I feel could become problematic as more binds get added. Still, it has more options and is open source and as such to me it beats the alternative.