Comparing version 1.0.0 to 1.1.0
{ | ||
"name": "gamepad-ts", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "gamepad contoller in typescript", | ||
@@ -40,3 +40,3 @@ "main": "src/index.js", | ||
}, | ||
"readme": "# gamepad-ts\r\n\r\nGamepad-ts is a heavily typed gamepad contol reciever.\r\n\r\nIt will detect and connect an USB contoller, and send corresponding events.\r\n\r\nThis code had been test with [DS4Windows](https://github.com/Ryochan7/DS4Windows)\r\n\r\n## usage\r\n\r\nOn creation you hae to choose the gamepad model you want to see.\r\n\r\n- it you choose `nintendo`, the controller will emit events the following events:\r\n\r\n```typescript\r\n LStick: (pos: [number, number]) => void; // Left stick moved event (x, y)\r\n RStick: (pos: [number, number]) => void; // Right stick moved event (x, y)\r\n dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y)\r\n LStickBt: (pressed: boolean) => void; // Left stick press\r\n RStickBt: (pressed: boolean) => void; // Right stick press\r\n\r\n X: (pressed: boolean) => void; // nintendo / xbox X Button\r\n A: (pressed: boolean) => void; // nintendo / xbox A Button\r\n B: (pressed: boolean) => void; // nintendo / xbox B Button\r\n Y: (pressed: boolean) => void; // nintendo / xbox Y Button\r\n '+': (pressed: boolean) => void; // nintendo plus Button\r\n '-': (pressed: boolean) => void; // nintendo less Button\r\n L: (pressed: boolean) => void; // nintendo L Button\r\n R: (pressed: boolean) => void; // nintendo R Button\r\n ZL: (pressed: boolean) => void; // nintendo Left Z\r\n ZR: (pressed: boolean) => void; // nintendo Rigth Z\r\n```\r\n\r\n- it you choose `xbox`, the controller will emit events the following events:\r\n\r\n```typescript\r\n LStick: (pos: [number, number]) => void; // Left stick moved event (x, y)\r\n RStick: (pos: [number, number]) => void; // Right stick moved event (x, y)\r\n dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y)\r\n LStickBt: (pressed: boolean) => void; // Left stick press\r\n RStickBt: (pressed: boolean) => void; // Right stick press\r\n\r\n X: (pressed: boolean) => void; // nintendo / xbox X Button\r\n A: (pressed: boolean) => void; // nintendo / xbox A Button\r\n B: (pressed: boolean) => void; // nintendo / xbox B Button\r\n Y: (pressed: boolean) => void; // nintendo / xbox Y Button\r\n start: (pressed: boolean) => void; // xbox start\r\n back: (pressed: boolean) => void; // xbox back\r\n LB: (pressed: boolean) => void; // xbox Left Bumper\r\n RB: (pressed: boolean) => void; // xbox Right Bumper\r\n LT: (pressed: boolean) => void; // xbox Left Trigger\r\n RT: (pressed: boolean) => void; // xbox Rigth trigger\r\n```\r\n\r\n- it you choose `playstation`, the controller will emit events the following events:\r\n\r\n```typescript\r\n LStick: (pos: [number, number]) => void; // Left stick moved event (x, y)\r\n RStick: (pos: [number, number]) => void; // Right stick moved event (x, y)\r\n dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y)\r\n LStickBt: (pressed: boolean) => void; // Left stick press\r\n RStickBt: (pressed: boolean) => void; // Right stick press\r\n\r\n square: (pressed: boolean) => void; // Playastation Button\r\n cross: (pressed: boolean) => void; // Playastation Button\r\n circle: (pressed: boolean) => void; // Playastation Button\r\n triangle: (pressed: boolean) => void; // Playastation Button\r\n share: (pressed: boolean) => void; // Playstation share\r\n options: (pressed: boolean) => void; // Playstation options\r\n L1: (pressed: boolean) => void; // playstaton Left Button\r\n R1: (pressed: boolean) => void; // playstaton Right Button\r\n L2: (pressed: boolean) => void; // playstaton Left trigger\r\n R2: (pressed: boolean) => void; // playstaton Right trigger\r\n```\r\n\r\n- it you choose `generic`, the controller will emit events the following events:\r\n\r\n```typescript\r\n LStick: (pos: [number, number]) => void; // Left stick moved event (x, y)\r\n RStick: (pos: [number, number]) => void; // Right stick moved event (x, y)\r\n dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y)\r\n LStickBt: (pressed: boolean) => void; // Left stick press\r\n RStickBt: (pressed: boolean) => void; // Right stick press\r\n\r\n BL: (pressed: boolean) => void; // Button left\r\n BD: (pressed: boolean) => void; // Button down\r\n BR: (pressed: boolean) => void; // Button Rigth\r\n BT: (pressed: boolean) => void; // Button Top\r\n BMR: (pressed: boolean) => void; // Button Middle Rigth\r\n BML: (pressed: boolean) => void; // Button Middle Left\r\n\r\n L1: (pressed: boolean) => void; // generic / playstaton Left Bumper\r\n R1: (pressed: boolean) => void; // generic / playstaton Right Bumper\r\n L2: (pressed: boolean) => void; // generic / playstaton Left trigger\r\n R2: (pressed: boolean) => void; // generic / playstaton Right trigger\r\n```\r\n\r\nNote:\r\n\r\n- `X` `Y` `A` `B` are differently mapped on Nintendo and XBox, So it's inportant to choose the correct mapping.\r\n- Analogic pad and digital pad values are all [0-255] value, so any resting pad value will be [128, 128]\r\n\r\n## usage code\r\n\r\n```typescript\r\nimport GamePadController from './src/index';\r\nconst ctrl = new GamePadController({brand: 'playStation'});\r\n/*\r\n * A,B,X,Y buttons\r\n */\r\nctrl.on('LStick', (pos) => console.log(`L: ${pos[0]}, ${pos[1]}`));\r\nctrl.on('RStick', (pos) => console.log(`R: ${pos[0]}, ${pos[1]}`));\r\nctrl.on('dpad', (pos) => console.log(`dPad: ${pos[0]}, ${pos[1]}`));\r\nctrl.on('square', (pressed: boolean) => console.log('square: ' + pressed));\r\nctrl.on('cross', (pressed: boolean) => console.log('cross: ' + pressed));\r\nctrl.on('circle', (pressed: boolean) => console.log('circle: ' + pressed));\r\nctrl.on('triangle', (pressed: boolean) => console.log('triangle: ' + pressed));\r\n/*\r\n * Setup\r\n */\r\nctrl.on('connected', () => console.log('Xbox controller connected'));\r\nctrl.on('error', (err) => console.error(err));\r\nctrl.start();\r\n```\r\n\r\n## TODO\r\n\r\n- add calibration code to add new devices.\r\n- add Gyroscope.\r\n" | ||
"readme": "# gamepad-ts\r\n\r\nGamepad-ts is a heavily typed Typescript gamepad contol library.\r\n\r\nIt will detect and connect an USB contoller, and send corresponding events.\r\n\r\nThis code had been test with [DS4Windows](https://github.com/Ryochan7/DS4Windows)\r\n\r\n## usage\r\n\r\n- it you want to use your gamepad as a `nintendo` contoler:\r\n\r\n```typescript\r\nimport { NintendoController } from 'gamepad-ts'\r\n\r\nconst pad = new NintendoController();\r\n\r\npad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y)\r\npad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y)\r\npad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y)\r\npad.on('LStickBt', (pressed: boolean) => {}); // Left stick press\r\npad.on('RStickBt', (pressed: boolean) => {}); // Right stick press\r\npad.on('X', (pressed: boolean) => {}); // nintendo / xbox X Button\r\npad.on('A', (pressed: boolean) => {}); // nintendo / xbox A Button\r\npad.on('B', (pressed: boolean) => {}); // nintendo / xbox B Button\r\npad.on('Y', (pressed: boolean) => {}); // nintendo / xbox Y Button\r\npad.on('+', (pressed: boolean) => {}); // nintendo plus Button\r\npad.on('-', (pressed: boolean) => {}); // nintendo less Button\r\npad.on('L', (pressed: boolean) => {}); // nintendo L Button\r\npad.on('R', (pressed: boolean) => {}); // nintendo R Button\r\npad.on('ZL', (pressed: boolean) => {}); // nintendo Left Z\r\npad.on('ZR', (pressed: boolean) => {}); // nintendo Rigth Z\r\n\r\n```\r\n\r\n- it you want to use your game pad as a `xbox` contoler\"\r\n\r\n```typescript\r\nimport { XBoxController } from 'gamepad-ts'\r\n\r\nconst pad = new XBoxController();\r\n\r\npad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y)\r\npad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y)\r\npad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y)\r\npad.on('LStickBt', (pressed: boolean) => {}); // Left stick press\r\npad.on('RStickBt', (pressed: boolean) => {}); // Right stick press\r\npad.on('X', (pressed: boolean) => {}); // nintendo / xbox X Button\r\npad.on('A', (pressed: boolean) => {}); // nintendo / xbox A Button\r\npad.on('B', (pressed: boolean) => {}); // nintendo / xbox B Button\r\npad.on('Y', (pressed: boolean) => {}); // nintendo / xbox Y Button\r\npad.on('start', (pressed: boolean) => {}); // xbox start\r\npad.on('back', (pressed: boolean) => {}); // xbox back\r\npad.on('LB', (pressed: boolean) => {}); // xbox Left Bumper\r\npad.on('RB', (pressed: boolean) => {}); // xbox Right Bumper\r\npad.on('LT', (pressed: boolean) => {}); // xbox Left Trigger\r\npad.on('RT', (pressed: boolean) => {}); // xbox Rigth trigger\r\n```\r\n\r\n- it you want to use your game pad as a `playstation` contoler\"\r\n\r\n```typescript\r\nimport { PlayStationController } from 'gamepad-ts'\r\n\r\nconst pad = new PlayStationController();\r\n\r\npad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y)\r\npad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y)\r\npad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y)\r\npad.on('LStickBt', (pressed: boolean) => {}); // Left stick press\r\npad.on('RStickBt', (pressed: boolean) => {}); // Right stick press\r\npad.on('square', (pressed: boolean) => {}); // Playastation Button\r\npad.on('cross', (pressed: boolean) => {}); // Playastation Button\r\npad.on('circle', (pressed: boolean) => {}); // Playastation Button\r\npad.on('triangle', (pressed: boolean) => {}); // Playastation Button\r\npad.on('share', (pressed: boolean) => {}); // Playstation share\r\npad.on('options', (pressed: boolean) => {}); // Playstation options\r\npad.on('L1', (pressed: boolean) => {}); // playstaton Left Button\r\npad.on('R1', (pressed: boolean) => {}); // playstaton Right Button\r\npad.on('L2', (pressed: boolean) => {}); // playstaton Left trigger\r\npad.on('R2', (pressed: boolean) => {}); // playstaton Right trigger\r\n```\r\n\r\n- it you want to use your game pad as a `generic` contoler\"\r\n\r\n```typescript\r\nimport { GenericController } from 'gamepad-ts'\r\n\r\nconst pad = new GenericController();\r\n\r\npad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y)\r\npad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y)\r\npad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y)\r\npad.on('LStickBt', (pressed: boolean) => {}); // Left stick press\r\npad.on('RStickBt', (pressed: boolean) => {}); // Right stick press\r\npad.on('BL', (pressed: boolean) => {}); // Button left\r\npad.on('BD', (pressed: boolean) => {}); // Button down\r\npad.on('BR', (pressed: boolean) => {}); // Button Rigth\r\npad.on('BT', (pressed: boolean) => {}); // Button Top\r\npad.on('BMR', (pressed: boolean) => {}); // Button Middle Rigth\r\npad.on('BML', (pressed: boolean) => {}); // Button Middle Left\r\npad.on('L1', (pressed: boolean) => {}); // generic / playstaton Left Bumper\r\npad.on('R1', (pressed: boolean) => {}); // generic / playstaton Right Bumper\r\npad.on('L2', (pressed: boolean) => {}); // generic / playstaton Left trigger\r\npad.on('R2', (pressed: boolean) => {}); // generic / playstaton Right trigger\r\n```\r\n\r\nNote:\r\n\r\n- `X` `Y` `A` `B` are differently mapped on Nintendo and XBox, So it's inportant to choose the correct mapping.\r\n- Analogic pad and digital pad values are all [0-255] value, so any resting pad value will be [128, 128]\r\n\r\n## usage code\r\n\r\n```typescript\r\nimport PlayStationController from './src/index';\r\nconst ctrl = new PlayStationController();\r\n/*\r\n * A,B,X,Y buttons\r\n */\r\nctrl.on('LStick', (pos) => console.log(`L: ${pos[0]}, ${pos[1]}`));\r\nctrl.on('RStick', (pos) => console.log(`R: ${pos[0]}, ${pos[1]}`));\r\nctrl.on('dpad', (pos) => console.log(`dPad: ${pos[0]}, ${pos[1]}`));\r\nctrl.on('square', (pressed: boolean) => console.log('square: ' + pressed));\r\nctrl.on('cross', (pressed: boolean) => console.log('cross: ' + pressed));\r\nctrl.on('circle', (pressed: boolean) => console.log('circle: ' + pressed));\r\nctrl.on('triangle', (pressed: boolean) => console.log('triangle: ' + pressed));\r\n/*\r\n * Setup\r\n */\r\nctrl.on('connected', () => console.log('Xbox controller connected'));\r\nctrl.on('error', (err) => console.error(err));\r\nctrl.start();\r\n```\r\n\r\n## TODO\r\n\r\n- add calibration code to add new devices.\r\n- add Gyroscope.\r\n" | ||
} |
148
README.md
# gamepad-ts | ||
Gamepad-ts is a heavily typed gamepad contol reciever. | ||
Gamepad-ts is a heavily typed Typescript gamepad contol library. | ||
@@ -11,87 +11,97 @@ It will detect and connect an USB contoller, and send corresponding events. | ||
On creation you hae to choose the gamepad model you want to see. | ||
- it you want to use your gamepad as a `nintendo` contoler: | ||
- it you choose `nintendo`, the controller will emit events the following events: | ||
```typescript | ||
LStick: (pos: [number, number]) => void; // Left stick moved event (x, y) | ||
RStick: (pos: [number, number]) => void; // Right stick moved event (x, y) | ||
dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y) | ||
LStickBt: (pressed: boolean) => void; // Left stick press | ||
RStickBt: (pressed: boolean) => void; // Right stick press | ||
import { NintendoController } from 'gamepad-ts' | ||
X: (pressed: boolean) => void; // nintendo / xbox X Button | ||
A: (pressed: boolean) => void; // nintendo / xbox A Button | ||
B: (pressed: boolean) => void; // nintendo / xbox B Button | ||
Y: (pressed: boolean) => void; // nintendo / xbox Y Button | ||
'+': (pressed: boolean) => void; // nintendo plus Button | ||
'-': (pressed: boolean) => void; // nintendo less Button | ||
L: (pressed: boolean) => void; // nintendo L Button | ||
R: (pressed: boolean) => void; // nintendo R Button | ||
ZL: (pressed: boolean) => void; // nintendo Left Z | ||
ZR: (pressed: boolean) => void; // nintendo Rigth Z | ||
const pad = new NintendoController(); | ||
pad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y) | ||
pad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y) | ||
pad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y) | ||
pad.on('LStickBt', (pressed: boolean) => {}); // Left stick press | ||
pad.on('RStickBt', (pressed: boolean) => {}); // Right stick press | ||
pad.on('X', (pressed: boolean) => {}); // nintendo / xbox X Button | ||
pad.on('A', (pressed: boolean) => {}); // nintendo / xbox A Button | ||
pad.on('B', (pressed: boolean) => {}); // nintendo / xbox B Button | ||
pad.on('Y', (pressed: boolean) => {}); // nintendo / xbox Y Button | ||
pad.on('+', (pressed: boolean) => {}); // nintendo plus Button | ||
pad.on('-', (pressed: boolean) => {}); // nintendo less Button | ||
pad.on('L', (pressed: boolean) => {}); // nintendo L Button | ||
pad.on('R', (pressed: boolean) => {}); // nintendo R Button | ||
pad.on('ZL', (pressed: boolean) => {}); // nintendo Left Z | ||
pad.on('ZR', (pressed: boolean) => {}); // nintendo Rigth Z | ||
``` | ||
- it you choose `xbox`, the controller will emit events the following events: | ||
- it you want to use your game pad as a `xbox` contoler" | ||
```typescript | ||
LStick: (pos: [number, number]) => void; // Left stick moved event (x, y) | ||
RStick: (pos: [number, number]) => void; // Right stick moved event (x, y) | ||
dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y) | ||
LStickBt: (pressed: boolean) => void; // Left stick press | ||
RStickBt: (pressed: boolean) => void; // Right stick press | ||
import { XBoxController } from 'gamepad-ts' | ||
X: (pressed: boolean) => void; // nintendo / xbox X Button | ||
A: (pressed: boolean) => void; // nintendo / xbox A Button | ||
B: (pressed: boolean) => void; // nintendo / xbox B Button | ||
Y: (pressed: boolean) => void; // nintendo / xbox Y Button | ||
start: (pressed: boolean) => void; // xbox start | ||
back: (pressed: boolean) => void; // xbox back | ||
LB: (pressed: boolean) => void; // xbox Left Bumper | ||
RB: (pressed: boolean) => void; // xbox Right Bumper | ||
LT: (pressed: boolean) => void; // xbox Left Trigger | ||
RT: (pressed: boolean) => void; // xbox Rigth trigger | ||
const pad = new XBoxController(); | ||
pad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y) | ||
pad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y) | ||
pad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y) | ||
pad.on('LStickBt', (pressed: boolean) => {}); // Left stick press | ||
pad.on('RStickBt', (pressed: boolean) => {}); // Right stick press | ||
pad.on('X', (pressed: boolean) => {}); // nintendo / xbox X Button | ||
pad.on('A', (pressed: boolean) => {}); // nintendo / xbox A Button | ||
pad.on('B', (pressed: boolean) => {}); // nintendo / xbox B Button | ||
pad.on('Y', (pressed: boolean) => {}); // nintendo / xbox Y Button | ||
pad.on('start', (pressed: boolean) => {}); // xbox start | ||
pad.on('back', (pressed: boolean) => {}); // xbox back | ||
pad.on('LB', (pressed: boolean) => {}); // xbox Left Bumper | ||
pad.on('RB', (pressed: boolean) => {}); // xbox Right Bumper | ||
pad.on('LT', (pressed: boolean) => {}); // xbox Left Trigger | ||
pad.on('RT', (pressed: boolean) => {}); // xbox Rigth trigger | ||
``` | ||
- it you choose `playstation`, the controller will emit events the following events: | ||
- it you want to use your game pad as a `playstation` contoler" | ||
```typescript | ||
LStick: (pos: [number, number]) => void; // Left stick moved event (x, y) | ||
RStick: (pos: [number, number]) => void; // Right stick moved event (x, y) | ||
dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y) | ||
LStickBt: (pressed: boolean) => void; // Left stick press | ||
RStickBt: (pressed: boolean) => void; // Right stick press | ||
import { PlayStationController } from 'gamepad-ts' | ||
square: (pressed: boolean) => void; // Playastation Button | ||
cross: (pressed: boolean) => void; // Playastation Button | ||
circle: (pressed: boolean) => void; // Playastation Button | ||
triangle: (pressed: boolean) => void; // Playastation Button | ||
share: (pressed: boolean) => void; // Playstation share | ||
options: (pressed: boolean) => void; // Playstation options | ||
L1: (pressed: boolean) => void; // playstaton Left Button | ||
R1: (pressed: boolean) => void; // playstaton Right Button | ||
L2: (pressed: boolean) => void; // playstaton Left trigger | ||
R2: (pressed: boolean) => void; // playstaton Right trigger | ||
const pad = new PlayStationController(); | ||
pad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y) | ||
pad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y) | ||
pad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y) | ||
pad.on('LStickBt', (pressed: boolean) => {}); // Left stick press | ||
pad.on('RStickBt', (pressed: boolean) => {}); // Right stick press | ||
pad.on('square', (pressed: boolean) => {}); // Playastation Button | ||
pad.on('cross', (pressed: boolean) => {}); // Playastation Button | ||
pad.on('circle', (pressed: boolean) => {}); // Playastation Button | ||
pad.on('triangle', (pressed: boolean) => {}); // Playastation Button | ||
pad.on('share', (pressed: boolean) => {}); // Playstation share | ||
pad.on('options', (pressed: boolean) => {}); // Playstation options | ||
pad.on('L1', (pressed: boolean) => {}); // playstaton Left Button | ||
pad.on('R1', (pressed: boolean) => {}); // playstaton Right Button | ||
pad.on('L2', (pressed: boolean) => {}); // playstaton Left trigger | ||
pad.on('R2', (pressed: boolean) => {}); // playstaton Right trigger | ||
``` | ||
- it you choose `generic`, the controller will emit events the following events: | ||
- it you want to use your game pad as a `generic` contoler" | ||
```typescript | ||
LStick: (pos: [number, number]) => void; // Left stick moved event (x, y) | ||
RStick: (pos: [number, number]) => void; // Right stick moved event (x, y) | ||
dpad: (pos: [number, number]) => void; // Digital Pad change event (x, y) | ||
LStickBt: (pressed: boolean) => void; // Left stick press | ||
RStickBt: (pressed: boolean) => void; // Right stick press | ||
import { GenericController } from 'gamepad-ts' | ||
BL: (pressed: boolean) => void; // Button left | ||
BD: (pressed: boolean) => void; // Button down | ||
BR: (pressed: boolean) => void; // Button Rigth | ||
BT: (pressed: boolean) => void; // Button Top | ||
BMR: (pressed: boolean) => void; // Button Middle Rigth | ||
BML: (pressed: boolean) => void; // Button Middle Left | ||
const pad = new GenericController(); | ||
L1: (pressed: boolean) => void; // generic / playstaton Left Bumper | ||
R1: (pressed: boolean) => void; // generic / playstaton Right Bumper | ||
L2: (pressed: boolean) => void; // generic / playstaton Left trigger | ||
R2: (pressed: boolean) => void; // generic / playstaton Right trigger | ||
pad.on('LStick', (pos: [number, number]) => {}); // Left stick moved event (x, y) | ||
pad.on('RStick', (pos: [number, number]) => {}); // Right stick moved event (x, y) | ||
pad.on('dpad', (pos: [number, number]) => {}); // Digital Pad change event (x, y) | ||
pad.on('LStickBt', (pressed: boolean) => {}); // Left stick press | ||
pad.on('RStickBt', (pressed: boolean) => {}); // Right stick press | ||
pad.on('BL', (pressed: boolean) => {}); // Button left | ||
pad.on('BD', (pressed: boolean) => {}); // Button down | ||
pad.on('BR', (pressed: boolean) => {}); // Button Rigth | ||
pad.on('BT', (pressed: boolean) => {}); // Button Top | ||
pad.on('BMR', (pressed: boolean) => {}); // Button Middle Rigth | ||
pad.on('BML', (pressed: boolean) => {}); // Button Middle Left | ||
pad.on('L1', (pressed: boolean) => {}); // generic / playstaton Left Bumper | ||
pad.on('R1', (pressed: boolean) => {}); // generic / playstaton Right Bumper | ||
pad.on('L2', (pressed: boolean) => {}); // generic / playstaton Left trigger | ||
pad.on('R2', (pressed: boolean) => {}); // generic / playstaton Right trigger | ||
``` | ||
@@ -107,4 +117,4 @@ | ||
```typescript | ||
import GamePadController from './src/index'; | ||
const ctrl = new GamePadController({brand: 'playStation'}); | ||
import PlayStationController from './src/index'; | ||
const ctrl = new PlayStationController(); | ||
/* | ||
@@ -111,0 +121,0 @@ * A,B,X,Y buttons |
/// <reference types="node" /> | ||
import EventEmitter from 'events'; | ||
import { ContollerBrand, JoyPadMapping } from './data'; | ||
interface IEmissions { | ||
error: (data: Error) => void; | ||
scan: (sns: Array<string>) => void; | ||
LStick: (pos: [number, number]) => void; | ||
RStick: (pos: [number, number]) => void; | ||
dpad: (pos: [number, number]) => void; | ||
LStickBt: (pressed: boolean) => void; | ||
RStickBt: (pressed: boolean) => void; | ||
BL: (pressed: boolean) => void; | ||
BD: (pressed: boolean) => void; | ||
BR: (pressed: boolean) => void; | ||
BT: (pressed: boolean) => void; | ||
BMR: (pressed: boolean) => void; | ||
BML: (pressed: boolean) => void; | ||
L1: (pressed: boolean) => void; | ||
R1: (pressed: boolean) => void; | ||
L2: (pressed: boolean) => void; | ||
R2: (pressed: boolean) => void; | ||
X: (pressed: boolean) => void; | ||
A: (pressed: boolean) => void; | ||
B: (pressed: boolean) => void; | ||
Y: (pressed: boolean) => void; | ||
start: (pressed: boolean) => void; | ||
back: (pressed: boolean) => void; | ||
LB: (pressed: boolean) => void; | ||
RB: (pressed: boolean) => void; | ||
LT: (pressed: boolean) => void; | ||
RT: (pressed: boolean) => void; | ||
L: (pressed: boolean) => void; | ||
R: (pressed: boolean) => void; | ||
ZL: (pressed: boolean) => void; | ||
ZR: (pressed: boolean) => void; | ||
'+': (pressed: boolean) => void; | ||
'-': (pressed: boolean) => void; | ||
square: (pressed: boolean) => void; | ||
cross: (pressed: boolean) => void; | ||
circle: (pressed: boolean) => void; | ||
triangle: (pressed: boolean) => void; | ||
share: (pressed: boolean) => void; | ||
options: (pressed: boolean) => void; | ||
connected: () => void; | ||
export interface GamePadOptions { | ||
mapping?: JoyPadMapping; | ||
serialNumber?: string; | ||
product?: RegExp; | ||
path?: RegExp; | ||
vendorId?: number; | ||
productId?: number; | ||
} | ||
@@ -50,2 +16,6 @@ export default class GamePadController extends EventEmitter { | ||
private mapping; | ||
private product?; | ||
private path?; | ||
private vendorId?; | ||
private productId?; | ||
private LStick; | ||
@@ -55,10 +25,10 @@ private RStick; | ||
private buttonStats; | ||
on: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this; | ||
off: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this; | ||
once: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this; | ||
emit: <K extends keyof IEmissions>(event: K, ...args: Parameters<IEmissions[K]>) => boolean; | ||
constructor(options?: { | ||
brand?: ContollerBrand; | ||
mapping?: JoyPadMapping; | ||
serialNumber?: string; | ||
mapping?: JoyPadMapping; | ||
product?: RegExp; | ||
path?: RegExp; | ||
vendorId?: number; | ||
productId?: number; | ||
}); | ||
@@ -68,2 +38,1 @@ start(): Promise<void>; | ||
} | ||
export {}; |
@@ -27,14 +27,11 @@ "use strict"; | ||
this.dpadPos = [0x80, 0x80]; // X, Y | ||
// static 12 flags array | ||
this.buttonStats = [!!0, !!0, !!0, !!0, !!0, !!0, !!0, !!0, !!0, !!0, !!0, !!0]; | ||
this.on = (event, listener) => super.on(event, listener); | ||
this.off = (event, listener) => super.off(event, listener); | ||
this.once = (event, listener) => super.once(event, listener); | ||
this.emit = (event, ...args) => super.emit(event, ...args); | ||
options = options || {}; | ||
if (options.serialNumber) { | ||
this.serialNumber = options.serialNumber.toUpperCase(); | ||
} | ||
this.serialNumber = (options.serialNumber || '').toUpperCase(); | ||
this.product = options.product; | ||
this.path = options.path; | ||
this.vendorId = options.vendorId; | ||
this.productId = options.productId; | ||
this.brand = options.brand || 'xbox'; | ||
this.mapping = options.mapping || data_1.dualShock; | ||
this.buttonStats = new Array(this.mapping.buttons.length).fill(false); | ||
} | ||
@@ -48,5 +45,12 @@ start() { | ||
devices = devices.filter(d => d.serialNumber && d.serialNumber.includes(this.serialNumber)); | ||
else | ||
devices = devices.filter(d => d.product && d.product.toLowerCase().includes('controller')); | ||
this.emit('scan', devices.map(d => d.serialNumber)); | ||
// devices = devices.filter(d => d.product && d.product.toLowerCase().includes('controller')); | ||
if (this.product) | ||
devices = devices.filter(d => d.product && this.product.test(d.product)); | ||
if (this.path) | ||
devices = devices.filter(d => d.path && this.path.test(d.path)); | ||
if (this.vendorId) | ||
devices = devices.filter(d => d.vendorId && d.vendorId === this.vendorId); | ||
if (this.productId) | ||
devices = devices.filter(d => d.productId && d.productId === this.productId); | ||
this.emit('scan', devices); | ||
if (devices.length == 1) { | ||
@@ -53,0 +57,0 @@ const d = devices[0]; |
@@ -1,3 +0,5 @@ | ||
export { default as GamePadController } from './GamePadController'; | ||
export { default as default } from './GamePadController'; | ||
export { default as GenericController } from './GenericController'; | ||
export { default as NintendoController } from './NintendoController'; | ||
export { default as PlayStationController } from './PlayStationController'; | ||
export { default as XBoxController } from './XBoxController'; | ||
export { ContollerBrand, ButtonsNames, ALL_BUTTONS, JoyPadMapping, dualShock } from './data'; |
@@ -6,7 +6,11 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.dualShock = exports.ALL_BUTTONS = exports.default = exports.GamePadController = void 0; | ||
var GamePadController_1 = require("./GamePadController"); | ||
Object.defineProperty(exports, "GamePadController", { enumerable: true, get: function () { return __importDefault(GamePadController_1).default; } }); | ||
var GamePadController_2 = require("./GamePadController"); | ||
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(GamePadController_2).default; } }); | ||
exports.dualShock = exports.ALL_BUTTONS = exports.XBoxController = exports.PlayStationController = exports.NintendoController = exports.GenericController = void 0; | ||
var GenericController_1 = require("./GenericController"); | ||
Object.defineProperty(exports, "GenericController", { enumerable: true, get: function () { return __importDefault(GenericController_1).default; } }); | ||
var NintendoController_1 = require("./NintendoController"); | ||
Object.defineProperty(exports, "NintendoController", { enumerable: true, get: function () { return __importDefault(NintendoController_1).default; } }); | ||
var PlayStationController_1 = require("./PlayStationController"); | ||
Object.defineProperty(exports, "PlayStationController", { enumerable: true, get: function () { return __importDefault(PlayStationController_1).default; } }); | ||
var XBoxController_1 = require("./XBoxController"); | ||
Object.defineProperty(exports, "XBoxController", { enumerable: true, get: function () { return __importDefault(XBoxController_1).default; } }); | ||
var data_1 = require("./data"); | ||
@@ -13,0 +17,0 @@ Object.defineProperty(exports, "ALL_BUTTONS", { enumerable: true, get: function () { return data_1.ALL_BUTTONS; } }); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
47369
24
472
140
1