jellyfish-web/dashboard-ui/bower_components/emby-webcomponents/input/gamepadtokey.js
2018-10-23 01:05:09 +03:00

153 lines
No EOL
8.8 KiB
JavaScript

require(["apphost"], function(appHost) {
"use strict";
function throttle(key) {
var time = times[key] || 0;
return (new Date).getTime() - time >= 200
}
function resetThrottle(key) {
times[key] = (new Date).getTime()
}
function allowInput() {
return !(!isElectron && document.hidden) && "Minimized" !== appHost.getWindowState()
}
function raiseEvent(name, key, keyCode) {
if (allowInput()) {
var event = document.createEvent("Event");
event.initEvent(name, !0, !0), event.key = key, event.keyCode = keyCode, (document.activeElement || document.body).dispatchEvent(event)
}
}
function clickElement(elem) {
allowInput() && elem.click()
}
function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRepeatKeyDown, clickonKeyUp) {
if (!0 === newPressedState) {
var fire = !1;
!1 === oldPressedState ? (fire = !0, resetThrottle(key)) : enableRepeatKeyDown && (fire = throttle(key)), fire && keyCode && raiseEvent("keydown", key, keyCode)
} else !1 === newPressedState && !0 === oldPressedState && (resetThrottle(key), keyCode && raiseEvent("keyup", key, keyCode), clickonKeyUp && clickElement(document.activeElement || window))
}
function runInputLoop() {
var gamepads;
navigator.getGamepads ? gamepads = navigator.getGamepads() : navigator.webkitGetGamepads && (gamepads = navigator.webkitGetGamepads()), gamepads = gamepads || [];
var i, j, len;
for (i = 0, len = gamepads.length; i < len; i++) {
var gamepad = gamepads[i];
if (gamepad) {
var axes = gamepad.axes,
leftStickX = axes[0],
leftStickY = axes[1];
leftStickX > _THUMB_STICK_THRESHOLD ? _ButtonPressedState.setleftThumbstickRight(!0) : leftStickX < -_THUMB_STICK_THRESHOLD ? _ButtonPressedState.setleftThumbstickLeft(!0) : leftStickY < -_THUMB_STICK_THRESHOLD ? _ButtonPressedState.setleftThumbstickUp(!0) : leftStickY > _THUMB_STICK_THRESHOLD ? _ButtonPressedState.setleftThumbstickDown(!0) : (_ButtonPressedState.setleftThumbstickLeft(!1), _ButtonPressedState.setleftThumbstickRight(!1), _ButtonPressedState.setleftThumbstickUp(!1), _ButtonPressedState.setleftThumbstickDown(!1));
var buttons = gamepad.buttons;
for (j = 0, len = buttons.length; j < len; j++)
if (-1 !== ProcessedButtons.indexOf(j))
if (buttons[j].pressed) switch (j) {
case _GAMEPAD_DPAD_UP_BUTTON_INDEX:
_ButtonPressedState.setdPadUp(!0);
break;
case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX:
_ButtonPressedState.setdPadDown(!0);
break;
case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX:
_ButtonPressedState.setdPadLeft(!0);
break;
case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX:
_ButtonPressedState.setdPadRight(!0);
break;
case _GAMEPAD_A_BUTTON_INDEX:
_ButtonPressedState.setgamepadA(!0);
break;
case _GAMEPAD_B_BUTTON_INDEX:
_ButtonPressedState.setgamepadB(!0)
} else switch (j) {
case _GAMEPAD_DPAD_UP_BUTTON_INDEX:
_ButtonPressedState.getdPadUp() && _ButtonPressedState.setdPadUp(!1);
break;
case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX:
_ButtonPressedState.getdPadDown() && _ButtonPressedState.setdPadDown(!1);
break;
case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX:
_ButtonPressedState.getdPadLeft() && _ButtonPressedState.setdPadLeft(!1);
break;
case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX:
_ButtonPressedState.getdPadRight() && _ButtonPressedState.setdPadRight(!1);
break;
case _GAMEPAD_A_BUTTON_INDEX:
_ButtonPressedState.getgamepadA() && _ButtonPressedState.setgamepadA(!1);
break;
case _GAMEPAD_B_BUTTON_INDEX:
_ButtonPressedState.getgamepadB() && _ButtonPressedState.setgamepadB(!1)
}
}
}
requestAnimationFrame(runInputLoop)
}
var _GAMEPAD_A_BUTTON_INDEX = 0,
_GAMEPAD_B_BUTTON_INDEX = 1,
_GAMEPAD_DPAD_UP_BUTTON_INDEX = 12,
_GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13,
_GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14,
_GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15,
_THUMB_STICK_THRESHOLD = .75,
_leftThumbstickUpPressed = !1,
_leftThumbstickDownPressed = !1,
_leftThumbstickLeftPressed = !1,
_leftThumbstickRightPressed = !1,
_dPadUpPressed = !1,
_dPadDownPressed = !1,
_dPadLeftPressed = !1,
_dPadRightPressed = !1,
_gamepadAPressed = !1,
_gamepadBPressed = !1,
ProcessedButtons = [_GAMEPAD_DPAD_UP_BUTTON_INDEX, _GAMEPAD_DPAD_DOWN_BUTTON_INDEX, _GAMEPAD_DPAD_LEFT_BUTTON_INDEX, _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX, _GAMEPAD_A_BUTTON_INDEX, _GAMEPAD_B_BUTTON_INDEX],
_ButtonPressedState = {};
_ButtonPressedState.getgamepadA = function() {
return _gamepadAPressed
}, _ButtonPressedState.setgamepadA = function(newPressedState) {
raiseKeyEvent(_gamepadAPressed, newPressedState, "GamepadA", 0, !1, !0), _gamepadAPressed = newPressedState
}, _ButtonPressedState.getgamepadB = function() {
return _gamepadBPressed
}, _ButtonPressedState.setgamepadB = function(newPressedState) {
raiseKeyEvent(_gamepadBPressed, newPressedState, "GamepadB", 27), _gamepadBPressed = newPressedState
}, _ButtonPressedState.getleftThumbstickUp = function() {
return _leftThumbstickUpPressed
}, _ButtonPressedState.setleftThumbstickUp = function(newPressedState) {
raiseKeyEvent(_leftThumbstickUpPressed, newPressedState, "GamepadLeftThumbStickUp", 38, !0), _leftThumbstickUpPressed = newPressedState
}, _ButtonPressedState.getleftThumbstickDown = function() {
return _leftThumbstickDownPressed
}, _ButtonPressedState.setleftThumbstickDown = function(newPressedState) {
raiseKeyEvent(_leftThumbstickDownPressed, newPressedState, "GamepadLeftThumbStickDown", 40, !0), _leftThumbstickDownPressed = newPressedState
}, _ButtonPressedState.getleftThumbstickLeft = function() {
return _leftThumbstickLeftPressed
}, _ButtonPressedState.setleftThumbstickLeft = function(newPressedState) {
raiseKeyEvent(_leftThumbstickLeftPressed, newPressedState, "GamepadLeftThumbStickLeft", 37, !0), _leftThumbstickLeftPressed = newPressedState
}, _ButtonPressedState.getleftThumbstickRight = function() {
return _leftThumbstickRightPressed
}, _ButtonPressedState.setleftThumbstickRight = function(newPressedState) {
raiseKeyEvent(_leftThumbstickRightPressed, newPressedState, "GamepadLeftThumbStickRight", 39, !0), _leftThumbstickRightPressed = newPressedState
}, _ButtonPressedState.getdPadUp = function() {
return _dPadUpPressed
}, _ButtonPressedState.setdPadUp = function(newPressedState) {
raiseKeyEvent(_dPadUpPressed, newPressedState, "GamepadDPadUp", 38, !0), _dPadUpPressed = newPressedState
}, _ButtonPressedState.getdPadDown = function() {
return _dPadDownPressed
}, _ButtonPressedState.setdPadDown = function(newPressedState) {
raiseKeyEvent(_dPadDownPressed, newPressedState, "GamepadDPadDown", 40, !0), _dPadDownPressed = newPressedState
}, _ButtonPressedState.getdPadLeft = function() {
return _dPadLeftPressed
}, _ButtonPressedState.setdPadLeft = function(newPressedState) {
raiseKeyEvent(_dPadLeftPressed, newPressedState, "GamepadDPadLeft", 37, !0), _dPadLeftPressed = newPressedState
}, _ButtonPressedState.getdPadRight = function() {
return _dPadRightPressed
}, _ButtonPressedState.setdPadRight = function(newPressedState) {
raiseKeyEvent(_dPadRightPressed, newPressedState, "GamepadDPadRight", 39, !0), _dPadRightPressed = newPressedState
};
var times = {},
isElectron = -1 !== navigator.userAgent.toLowerCase().indexOf("electron");
runInputLoop(), window.navigator && "string" == typeof window.navigator.gamepadInputEmulation && (window.navigator.gamepadInputEmulation = "gamepad")
});