Skip to content

Commit

Permalink
Only bind media keys for TV and browsers not having mediaSession
Browse files Browse the repository at this point in the history
  • Loading branch information
gnattu committed May 21, 2024
1 parent bdce41c commit 68bac17
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions src/scripts/keyboardNavigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ const KeyNames = {
*/
const NavigationKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];

/**
* Keys used for media playback control.
*/
const MediaKeys = ['MediaRewind', 'MediaStop', 'MediaPlay', 'MediaFastForward', 'MediaTrackPrevious', 'MediaTrackNext', 'MediaPlayPause'];

/**
* Elements for which navigation should be constrained.
*/
Expand Down Expand Up @@ -89,6 +94,16 @@ export function isNavigationKey(key) {
return NavigationKeys.indexOf(key) != -1;
}

/**
* Returns _true_ if key is used for media playback control.
*
* @param {string} key - Key name.
* @return {boolean} _true_ if key is used for media playback control.
*/
export function isMediaKey(key) {
return MediaKeys.indexOf(key) != -1;
}

/**
* Returns _true_ if the element is interactive.
*
Expand Down Expand Up @@ -116,6 +131,11 @@ export function enable() {
return;
}

// Ignore Media Keys for non-TV platform having MediaSession API
if (!layoutManager.tv && isMediaKey(key) && 'mediaSession' in navigator) {
return;
}

let capture = true;

switch (key) {
Expand Down Expand Up @@ -167,6 +187,24 @@ export function enable() {
case 'Pause':
inputManager.handleCommand('pause');
break;
case 'MediaPlayPause':
inputManager.handleCommand('playpause');
break;
case 'MediaRewind':
inputManager.handleCommand('rewind');
break;
case 'MediaFastForward':
inputManager.handleCommand('fastforward');
break;
case 'MediaStop':
inputManager.handleCommand('stop');
break;
case 'MediaTrackPrevious':
inputManager.handleCommand('previoustrack');
break;
case 'MediaTrackNext':
inputManager.handleCommand('nexttrack');
break;

default:
capture = false;
Expand Down

0 comments on commit 68bac17

Please sign in to comment.