Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
enum Buttons {
A = 4,
B = 5,
X = 6,
Y = 7,
LeftStickY = 14,
LeftStickX = 13,
RightStickY = 16,
RightStickX = 15,
R2 = 11,
L2 = 10,
}
const MAX_D_PAD = 127;
const devs = devices();
const deviceInfo = devs.find((d) => d.vendorId === 273 && d.productId === 5152);
if ( !deviceInfo ) {
// tslint:disable-next-line:no-console
console.error('Could not find device in device list');
process.exit(1);
}
const device = new HID( deviceInfo.path );
const calculate = ({ xRaw, yRaw }: { xRaw: number, yRaw: number }) => {
const x = xRaw / MAX_D_PAD;
const y = yRaw / MAX_D_PAD;
const module = Math.sqrt(x * x + y * y);
let angle = (Math.atan(y / x) * (180 / Math.PI)) * - 1 + 90;
if (x < 0) {
angle += 180;
return Promise.resolve().then(() => {
if (transportInstance) {
log("hid-verbose", "reusing opened transport instance");
return transportInstance;
}
const device = getDevices()[0];
if (!device) throw new CantOpenDevice("no device found");
log("hid-verbose", "new HID transport");
transportInstance = new TransportNodeHidSingleton(
new HID.HID(device.path)
);
const unlisten = listenDevices(
() => {},
() => {
// assume any ledger disconnection concerns current transport
if (transportInstance) {
transportInstance.emit("disconnect");
}
}
);
const onDisconnect = () => {
if (!transportInstance) return;
log("hid-verbose", "transport instance was disconnected");
transportInstance.off("disconnect", onDisconnect);
transportInstance = null;
unlisten();
module.exports = function RBKeyboard() {
var devices = HID.devices();
var validDevs = _.filter(devices,
function(d) { return d.vendorId == 7085 && d.productId == 13104; });
if (!validDevs.length)
throw new Error('No usable devices found.');
var device = new HID.HID(validDevs[0].path);
var noteData = [];
for (var i = 0; i < 25; i++) noteData[i] = false;
var dpadData = {};
var dirs = { Left: 6, Right: 2, Up: 0, Down: 4 };
_.each(dirs, function(v, k) { dpadData[k] = false });
var buttonData = {};
var buttons = { 1: 1, A: 2, B: 4, 2: 8 };
_.each(buttons, function(v, k) { buttonData[k] = false });
var touchData = 0;
var touchButtonData = false;
function processData(data) {
// Uncomment these lines to print the raw data, useful for development
//_.each(data, function(d) { util.print(d + ' '); });
//console.log();
#!/usr/bin/env node
var HID = require('node-hid');
fs = require('fs');
var devices = HID.devices();
device = new HID.HID(4292,33742); // same ID for both boards I got
// Board has 16 levels, the OS sees 21, so I remap the values and keep the 5 extra at max brightness.
// Mappings might be off depending on the driver. Check values on /sys/class/backlight/*/actual_brightness.
// Was 0-100 by 5 intervals in my case. With the edp kernel patch it was 1-4439 with 222 increments.
var mapping = [['0', '0'], ['5', '16'],['10', '32'], ['15', '48'], ['20', '64'], ['25', '80'], ['30', '96'], ['35', '112'], ['40', '128'], ['45', '144'], ['50', '160'], ['55', '176'], ['60', '192'], ['65', '208'], ['70', '224'], ['75', '240'], ['80', '240'], ['85', '240'], ['90', '240'], ['95', '240'], ['100', '240']]
var myMap = new Map(mapping);
// file path might change depending on the driver.
fs.readFile('/sys/class/backlight/acpi_video0/actual_brightness', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
data = data.replace("\n", ''); // clear the newline
data = myMap.get(data); // get corresponding value
});
// initialize runtime reference to main window
//runtime.windowId = mainWindow.id;
//mainWindow.loadUrl('file://' + __dirname + '/dist/index.html#/todtests');
mainWindow.loadUrl('file://' + __dirname + '/dist/index.html');
mainWindow.focus();
mainWindow.openDevTools();
mainWindow.on('closed', function () {
mainWindow = null;
});
var devices = HID.devices();
//console.log("devices: ", devices);
console.log("blink1 serials:", Blink1.devices() ); // returns array of serial numbers
//var blink1 = new Blink1();
//blink1.fadeToRGB(400 , 255,0,255 ); // r, g, b: 0 - 255
//blink1.close();
/*
// Dock Menu (Mac)
if (process.platform === 'darwin') {
var dockMenu = Menu.buildFromTemplate([
{ label: 'New Window', click: function() { console.log('New Window'); } },
{ label: 'New Window with Settings', submenu: [
{ label: 'Basic' },
{ label: 'Pro'},
]},
constructor()
{
let USB_VID = 0x0416;
let USB_PID = 0x5020;
let HID = require('node-hid');
// Generated by mapRelays()
this.relayBitmap = [128, 256, 64, 512, 32, 1024, 16, 2048, 8, 4096, 4, 8192, 2, 16384, 1, 32768];
console.log('Detected devices:', HID.devices(USB_VID, USB_PID));
this.hid = new HID.HID(USB_VID, USB_PID);
}
getDevices(options, callback) {
var output = [];
this.options = options;
this.devices = HID.devices();
for ( var I = 0; I < this.devices.length; I++ ) {
if (options.filters[0].productId === this.devices[I].productId && options.filters[0].vendorId === this.devices[I].vendorId && (mooltipass.app.os == "linux" || options.filters[0].usagePage === this.devices[I].usagePage)) {
/* see https://github.com/signal11/hidapi/pull/6 for linux */
//console.log(this.devices[I])
this.devices[I].deviceId = I;
output.push(this.devices[I]);
}
}
callback ( output );
},
getUserSelectedDevices(options, callback) {
document.getElementById('selBtn').addEventListener('click', async e => {
if (devices && devices.length > 0) {
if (device) device.close()
clearTimeout(timeOutSet)
const selectObject = JSON.parse(sel.value)
const deviceInfoBlock = deviceList[selectObject.index]
device = new HID.HID(selectObject.path)
device.on('data', data => getDataFunction(data))
// getAllSettings().then(() => initSettings())
// 加载HTML
const page2HTML = new Promise(resolve => {
fs.readFile(
path.join(
__dirname,
'/devices/',
deviceInfoBlock.description,
'/page2.html'
),
(err, data) => {
if (err) {
throw err
}
button.addEventListener('click', function() {
connection = new HID.HID( atob(this.path) );
console.log( connection.getDeviceInfo() );
connection.setNonBlocking(0);
connection.readTimeout(500);
connection.on('error', function(error) {
console.log('got error from device', error );
} );
});
output.appendChild( button );
XboxController.prototype.loadController = function () {
HID.devices().forEach((function (d) {
var product = (typeof d === 'object' && d.product) || '';
if (product.toLowerCase().indexOf(this.name.toLowerCase()) !== -1) {
this.hid = new HID.HID(d.path);
console.log(chalk.green('notice: '), 'Xbox controller connected.');
this.emit('connected');
location = this.hid;
}
}).bind(this));
if (this.hid === false && !this._controllerLoadingInterval) {
this._controllerLoadingInterval = setInterval(function () {
this.loadController();
}.bind(this), 2000);
}
try {