Use keycodes for UWP xbox instead of gamepadtokey.
This commit is contained in:
@@ -20,6 +20,31 @@ const KeyNames = {
|
||||
38: 'ArrowUp',
|
||||
39: 'ArrowRight',
|
||||
40: 'ArrowDown',
|
||||
|
||||
// UWP WebView section start --
|
||||
// Navigation Up/Down/Left/Right is part of TVJS directionalnavigation-1.0.0.0.js
|
||||
// Unsure what this is used for. Media remote?
|
||||
138: 'NavigationUp',
|
||||
139: 'NavigationDown',
|
||||
140: 'NavigationLeft',
|
||||
141: 'NavigationRight',
|
||||
195: 'GamepadA',
|
||||
// Currently Xbox UWP WebView 2 sends code 27 (Escape instead) despite being undocumented
|
||||
// Desktop UWP unchanged
|
||||
196: 'GamepadB',
|
||||
203: 'GamepadDPadUp',
|
||||
204: 'GamepadDPadDown',
|
||||
205: 'GamepadDPadLeft',
|
||||
206: 'GamepadDPadRight',
|
||||
// Currently Xbox UWP WebView 2 sends Arrow keycodes despite being undocumented
|
||||
// Desktop UWP unchanged
|
||||
// Left Thumbstick
|
||||
211: 'GamepadLeftThumbUp',
|
||||
212: 'GamepadLeftThumbDown',
|
||||
214: 'GamepadLeftThumbLeft',
|
||||
213: 'GamepadLeftThumbRight',
|
||||
// End of UWP WebView Section
|
||||
|
||||
// MediaRewind (Tizen/WebOS)
|
||||
412: 'MediaRewind',
|
||||
// MediaStop (Tizen/WebOS)
|
||||
@@ -43,7 +68,10 @@ const KeyNames = {
|
||||
/**
|
||||
* Keys used for keyboard navigation.
|
||||
*/
|
||||
const NavigationKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'BrowserHome', 'Find'];
|
||||
const NavigationKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'BrowserHome', 'Find',
|
||||
'NavigationUp', 'NavigationDown', 'NavigationLeft', 'NavigationRight',
|
||||
'GamepadDPadUp', 'GamepadDPadDown', 'GamepadDPadLeft', 'GamepadDPadRight',
|
||||
'GamepadLeftThumbUp', 'GamepadLeftThumbDown', 'GamepadLeftThumbLeft', 'GamepadLeftThumbRight'];
|
||||
|
||||
/**
|
||||
* Keys used for media playback control.
|
||||
@@ -145,6 +173,9 @@ export function enable() {
|
||||
let capture = true;
|
||||
|
||||
switch (key) {
|
||||
case 'NavigationLeft':
|
||||
case 'GamepadDPadLeft':
|
||||
case 'GamepadLeftThumbLeft':
|
||||
case 'ArrowLeft':
|
||||
if (!isInteractiveElement(document.activeElement)) {
|
||||
inputManager.handleCommand('left');
|
||||
@@ -152,9 +183,15 @@ export function enable() {
|
||||
capture = false;
|
||||
}
|
||||
break;
|
||||
case 'NavigationUp':
|
||||
case 'GamepadDPadUp':
|
||||
case 'GamepadLeftThumbUp':
|
||||
case 'ArrowUp':
|
||||
inputManager.handleCommand('up');
|
||||
break;
|
||||
case 'NavigationRight':
|
||||
case 'GamepadDPadRight':
|
||||
case 'GamepadLeftThumbRight':
|
||||
case 'ArrowRight':
|
||||
if (!isInteractiveElement(document.activeElement)) {
|
||||
inputManager.handleCommand('right');
|
||||
@@ -162,10 +199,17 @@ export function enable() {
|
||||
capture = false;
|
||||
}
|
||||
break;
|
||||
case 'NavigationDown':
|
||||
case 'GamepadDPadDown':
|
||||
case 'GamepadLeftThumbDown':
|
||||
case 'ArrowDown':
|
||||
inputManager.handleCommand('down');
|
||||
break;
|
||||
|
||||
case 'GamepadA':
|
||||
inputManager.handleCommand('select');
|
||||
break;
|
||||
case 'GamepadB':
|
||||
case 'Back':
|
||||
inputManager.handleCommand('back');
|
||||
break;
|
||||
@@ -239,7 +283,8 @@ function attachGamepadScript() {
|
||||
}
|
||||
|
||||
// No need to check for gamepads manually at load time, the eventhandler will be fired for that
|
||||
if (navigator.getGamepads && appSettings.enableGamepad()) {
|
||||
// Not needed for UWP
|
||||
if (navigator.getGamepads && appSettings.enableGamepad() && !browser.xboxOne) {
|
||||
window.addEventListener('gamepadconnected', attachGamepadScript);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user