<script>
const document = window.document;
const navigator = window.navigator;
let gamePadSelect = null;
let axisSelect = null;
let init = function () {
gamePadSelect = $('<select>');
axisSelect = $('<select>');
$('body')
.append(gamePadSelect);
$('body')
.append(axisSelect);
updateGamepads();
};
let updateGamepads = function () {
let gamepads = navigator.getGamepads();
for (let i = 0; i < gamepads.length; i += 1) {
let pad = gamepads[i];
if (pad) {
let option = $('<option>');
option.attr('value', i);
option.text(pad.id);
gamePadSelect.append(option);
for (let j = 0; j < pad.axes.length; j += 1) {
let option2 = $('<option>');
option2.attr('value', j);
option2.text('Axis ' + j);
axisSelect.append(option2);
}
}
}
console.log(gamepads);
};
$(document).ready(init);
window.addEventListener('gamepadconnected', updateGamepads);
window.addEventListener('gamepaddisconnected', updateGamepads);
/*
interface Gamepad {
readonly attribute DOMString id;
readonly attribute long index;
readonly attribute boolean connected;
readonly attribute DOMHighResTimeStamp timestamp;
readonly attribute GamepadMappingType mapping;
readonly attribute double[] axes;
readonly attribute GamepadButton[] buttons;
};
interface GamepadButton {
readonly attribute boolean pressed;
readonly attribute double value;
};
partial interface Navigator {
sequence<Gamepad?> getGamepads ();
};
window.addEventListener('gamepadconnected', fn);
window.addEventListener('gamepaddisconnected', fn);
navigator.getGamepads()
navigator.webkitGetGamepads()
*/
// shim layer with setTimeout fallback
let requestAnimFrame = (function () {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function (callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
// gamepads should look like [null, [object Gamepad]]
let prevVal = 0;
function runAnimation() {
requestAnimFrame(runAnimation);
let gamepads = navigator.getGamepads();
for (let i = 0; i < gamepads.length; i += 1) {
let pad = gamepads[i];
if (pad) {
if (i == gamePadSelect.val()) {
let val = pad.axes[axisSelect.val()];
if (val !== prevVal) {
prevVal = val;
console.log(val);
socket.emit('axes', JSON.stringify({x: val}));
}
}
}
}
}
requestAnimFrame(runAnimation);
</script>
155900cookie-checkHTML Gamepad API