Add GamePad support for Live Grid+

+ add Sequence Button Number press to Generic Controller
+ Higher Read rate for Generic Controller
patrol-onvif-ptz-gamepad
Moe 2024-12-10 16:11:36 -08:00
parent 7cd0d10066
commit 5a78561c86
1 changed files with 28 additions and 8 deletions

View File

@ -28,14 +28,17 @@ $(document).ready(function() {
var buttonsPressed = {}
var hasGP = false;
var repGP;
var reportInterval = 200
var stickBase = 2048
var stickMax = 4096
var deadZoneThreshold = 0.35
var outerDeadZone = 1.01
var selectedMonitor = dashboardOptions().gamepadMonitorSelection;
var monitorKeys = {};
var gp = null;
var onMonitorOpenForGamepad = () => {}
var sequenceButtonPressList = []
var sequenceButtonPressTimeout = null
var buttonPressAction = null;
window.setGamepadMonitorSelection = (monitorId) => {
dashboardOptions('gamepadMonitorSelection', monitorId);
selectedMonitor = `${monitorId}`;
@ -94,9 +97,9 @@ $(document).ready(function() {
})
}
function setCameraFromButtonCode(buttonCode){
function setCameraFromButtonCode(buttonCode, preAdded){
try{
const addedOneToButtonCode = parseInt(buttonCode) + 1
const addedOneToButtonCode = preAdded ? buttonCode : parseInt(buttonCode) + 1
const monitor = loadedMonitors[monitorKeys[addedOneToButtonCode]];
const isFullscreened = !!document.fullscreenElement;
if(isFullscreened) {
@ -227,7 +230,7 @@ $(document).ready(function() {
document.exitFullscreen()
}
}else{
setCameraFromButtonCode(buttonCode)
buttonPressAction(buttonCode)
}
}, function(buttonCode){
if(buttonCode == 6){
@ -258,7 +261,7 @@ $(document).ready(function() {
closeSnapshot()
openSnapshot()
}else{
setCameraFromButtonCode(buttonCode)
buttonPressAction(buttonCode)
}
},function(buttonCode){
@ -291,13 +294,11 @@ $(document).ready(function() {
$.confirm.e.modal('hide')
}
var reportOnGamepad = reportOnXboxGamepad;
function startReporting(){
if(hasGP){
console.log('Reading Gamepad')
var gp = navigator.getGamepads()[0];
repGP = window.setInterval(reportOnGamepad,200);
repGP = window.setInterval(reportOnGamepad, reportInterval);
}
}
@ -321,10 +322,29 @@ $(document).ready(function() {
function setControllerType(gamepadId){
switch(true){
case gamepadId.includes('Xbox'):
reportInterval = 200;
reportOnGamepad = reportOnXboxGamepad
buttonPressAction = setCameraFromButtonCode
console.log('Xbox Controller found!', buttonPressAction)
break;
default:
reportInterval = 50;
reportOnGamepad = reportOnGenericGamepad
buttonPressAction = sequenceButtonPress
break;
}
}
var reportOnGamepad = reportOnXboxGamepad;
function sequenceButtonPress(buttonCode){
sequenceButtonPressList.push(buttonCode)
clearTimeout(sequenceButtonPressTimeout)
sequenceButtonPressTimeout = setTimeout(() => {
const newButtonCode = parseInt(sequenceButtonPressList.map(item => `${parseInt(item) + 1}`).join(''))
setCameraFromButtonCode(newButtonCode, true)
sequenceButtonPressList = []
},300)
}
if(canGame()) {
$(window).on("gamepadconnected", function(e) {