gamepad-node
Version:
Browser Gamepad API implementation for Node.js with native SDL2 bindings
41 lines (32 loc) • 1.35 kB
JavaScript
import { installNavigatorShim, getManager } from './index.js';
installNavigatorShim();
const manager = getManager();
manager.on('gamepadconnected', (event) => {
const gp = event.gamepad;
console.log('\n=== 8BitDo Controller Detection Test ===\n');
console.log('Controller:', gp.id);
console.log('Index:', gp.index);
console.log('Mapping:', gp.mapping);
console.log('Source:', gp._mappingSource || 'SDL native');
console.log('isController (SDL native):', gp._native?.isController);
console.log('GUID:', gp._native?.guid);
console.log('\nExpected W3C Standard (by POSITION):');
console.log(' 0 = South/Bottom (Nintendo: B, Xbox: A)');
console.log(' 1 = East/Right (Nintendo: A, Xbox: B)');
console.log(' 2 = West/Left (Nintendo: Y, Xbox: X)');
console.log(' 3 = North/Top (Nintendo: X, Xbox: Y)');
console.log('');
});
console.log('Waiting for controller... Press buttons to test.\n');
setInterval(() => {
const gamepads = navigator.getGamepads();
for (const gp of gamepads) {
if (!gp) continue;
const pressed = gp.buttons
.map((b, i) => b.pressed ? i : null)
.filter(x => x !== null);
if (pressed.length > 0) {
console.log('Buttons pressed:', pressed.join(', '));
}
}
}, 100);