dualsense-ts 2.2.48 → 3.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/comparators.d.ts +13 -0
- package/dist/comparators.d.ts.map +1 -0
- package/dist/comparators.js +27 -0
- package/dist/comparators.js.map +1 -0
- package/dist/dualsense.d.ts +10 -1
- package/dist/dualsense.d.ts.map +1 -1
- package/dist/dualsense.js +46 -45
- package/dist/dualsense.js.map +1 -1
- package/dist/elements/analog.d.ts +12 -7
- package/dist/elements/analog.d.ts.map +1 -1
- package/dist/elements/analog.js +29 -11
- package/dist/elements/analog.js.map +1 -1
- package/dist/elements/axis.d.ts +22 -1
- package/dist/elements/axis.d.ts.map +1 -1
- package/dist/elements/axis.js +24 -4
- package/dist/elements/axis.js.map +1 -1
- package/dist/elements/dpad.d.ts +1 -1
- package/dist/elements/dpad.d.ts.map +1 -1
- package/dist/elements/dpad.js +6 -5
- package/dist/elements/dpad.js.map +1 -1
- package/dist/elements/touch.d.ts +2 -1
- package/dist/elements/touch.d.ts.map +1 -1
- package/dist/elements/touch.js +1 -0
- package/dist/elements/touch.js.map +1 -1
- package/dist/elements/touchpad.d.ts +1 -1
- package/dist/elements/touchpad.d.ts.map +1 -1
- package/dist/elements/touchpad.js.map +1 -1
- package/dist/elements/trigger.d.ts.map +1 -1
- package/dist/elements/trigger.js +1 -1
- package/dist/elements/trigger.js.map +1 -1
- package/dist/elements/unisense.d.ts +3 -3
- package/dist/elements/unisense.d.ts.map +1 -1
- package/dist/elements/unisense.js +13 -5
- package/dist/elements/unisense.js.map +1 -1
- package/dist/hid/dualsense_hid.d.ts +16 -58
- package/dist/hid/dualsense_hid.d.ts.map +1 -1
- package/dist/hid/dualsense_hid.js +25 -101
- package/dist/hid/dualsense_hid.js.map +1 -1
- package/dist/hid/hid_provider.d.ts +86 -0
- package/dist/hid/hid_provider.d.ts.map +1 -0
- package/dist/hid/hid_provider.js +45 -0
- package/dist/hid/hid_provider.js.map +1 -0
- package/dist/hid/index.d.ts +4 -1
- package/dist/hid/index.d.ts.map +1 -1
- package/dist/hid/index.js +4 -1
- package/dist/hid/index.js.map +1 -1
- package/dist/hid/node_hid_provider.d.ts +11 -0
- package/dist/hid/node_hid_provider.d.ts.map +1 -0
- package/dist/hid/node_hid_provider.js +97 -0
- package/dist/hid/node_hid_provider.js.map +1 -0
- package/dist/hid/platform_hid_provider.d.ts +4 -0
- package/dist/hid/platform_hid_provider.d.ts.map +1 -0
- package/dist/hid/platform_hid_provider.js +7 -0
- package/dist/hid/platform_hid_provider.js.map +1 -0
- package/dist/hid/web_hid_provider.d.ts +10 -0
- package/dist/hid/web_hid_provider.d.ts.map +1 -0
- package/dist/hid/web_hid_provider.js +102 -0
- package/dist/hid/web_hid_provider.js.map +1 -0
- package/dist/{hid/ids.d.ts → id.d.ts} +6 -2
- package/dist/id.d.ts.map +1 -0
- package/dist/{hid/ids.js → id.js} +1 -1
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +63 -45
- package/dist/input.d.ts.map +1 -1
- package/dist/input.js +123 -90
- package/dist/input.js.map +1 -1
- package/package.json +14 -8
- package/src/comparators.ts +26 -0
- package/src/dualsense.ts +61 -58
- package/src/elements/analog.spec.ts +2 -15
- package/src/elements/analog.ts +41 -22
- package/src/elements/axis.ts +35 -3
- package/src/elements/dpad.ts +7 -6
- package/src/elements/touch.ts +2 -1
- package/src/elements/touchpad.ts +1 -1
- package/src/elements/trigger.ts +1 -1
- package/src/elements/unisense.ts +19 -17
- package/src/hid/dualsense_hid.ts +25 -156
- package/src/hid/{dualsense_hid.spec.ts → hid_provider.spec.ts} +1 -1
- package/src/hid/hid_provider.ts +100 -0
- package/src/hid/index.ts +4 -1
- package/src/hid/node_hid_provider.ts +108 -0
- package/src/hid/platform_hid_provider.ts +4 -0
- package/src/hid/web_hid_provider.ts +116 -0
- package/src/{hid/ids.ts → id.ts} +6 -1
- package/src/index.ts +2 -0
- package/src/input.ts +156 -138
- package/src/readme.spec.ts +6 -8
- package/webpack.config.js +42 -0
- package/dist/hid/ids.d.ts.map +0 -1
- package/dist/hid/ids.js.map +0 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeHIDProvider = void 0;
|
|
4
|
+
const node_hid_1 = require("node-hid");
|
|
5
|
+
const hid_provider_1 = require("./hid_provider");
|
|
6
|
+
class NodeHIDProvider extends hid_provider_1.HIDProvider {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.wireless = false;
|
|
10
|
+
}
|
|
11
|
+
connect() {
|
|
12
|
+
this.disconnect();
|
|
13
|
+
const controllers = (0, node_hid_1.devices)(hid_provider_1.HIDProvider.vendorId, hid_provider_1.HIDProvider.productId);
|
|
14
|
+
if (controllers.length === 0 || !controllers[0].path) {
|
|
15
|
+
return this.onError(new Error(`No controllers (${(0, node_hid_1.devices)().length} other devices)`));
|
|
16
|
+
}
|
|
17
|
+
if (controllers[0].interface === -1)
|
|
18
|
+
this.wireless = true;
|
|
19
|
+
this.device = new node_hid_1.HID(controllers[0].path);
|
|
20
|
+
this.device.on("data", (arg) => {
|
|
21
|
+
this.onData(this.process(arg));
|
|
22
|
+
});
|
|
23
|
+
this.device.on("error", (err) => {
|
|
24
|
+
this.onError(err);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
get connected() {
|
|
28
|
+
return this.device !== undefined;
|
|
29
|
+
}
|
|
30
|
+
disconnect() {
|
|
31
|
+
if (this.device) {
|
|
32
|
+
this.device.removeAllListeners();
|
|
33
|
+
this.device.close();
|
|
34
|
+
this.device = undefined;
|
|
35
|
+
this.wireless = false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
process(buffer) {
|
|
39
|
+
// Bluetooth buffer starts with an extra byte
|
|
40
|
+
const report = buffer.subarray(this.wireless ? 2 : 1);
|
|
41
|
+
const mainButtons = report.readUint8(7);
|
|
42
|
+
const miscButtons = report.readUint8(8);
|
|
43
|
+
const lastButtons = report.readUint8(9);
|
|
44
|
+
const dpad = (mainButtons << 4) >> 4;
|
|
45
|
+
return {
|
|
46
|
+
["LX" /* InputId.LeftAnalogX */]: (0, hid_provider_1.mapAxis)(report.readUint8(0)),
|
|
47
|
+
["LY" /* InputId.LeftAnalogY */]: -(0, hid_provider_1.mapAxis)(report.readUint8(1)),
|
|
48
|
+
["RX" /* InputId.RightAnalogX */]: (0, hid_provider_1.mapAxis)(report.readUint8(2)),
|
|
49
|
+
["RY" /* InputId.RightAnalogY */]: -(0, hid_provider_1.mapAxis)(report.readUint8(3)),
|
|
50
|
+
["L2" /* InputId.LeftTrigger */]: (0, hid_provider_1.mapTrigger)(report.readUint8(4)),
|
|
51
|
+
["R2" /* InputId.RightTrigger */]: (0, hid_provider_1.mapTrigger)(report.readUint8(5)),
|
|
52
|
+
// 6 is a sequence byte
|
|
53
|
+
["Triangle" /* InputId.Triangle */]: (mainButtons & 128) > 0,
|
|
54
|
+
["Circle" /* InputId.Circle */]: (mainButtons & 64) > 0,
|
|
55
|
+
["Cross" /* InputId.Cross */]: (mainButtons & 32) > 0,
|
|
56
|
+
["Square" /* InputId.Square */]: (mainButtons & 16) > 0,
|
|
57
|
+
["Dpad" /* InputId.Dpad */]: dpad,
|
|
58
|
+
["Up" /* InputId.Up */]: dpad < 2 || dpad === 7,
|
|
59
|
+
["Down" /* InputId.Down */]: dpad > 2 && dpad < 6,
|
|
60
|
+
["Left" /* InputId.Left */]: dpad > 4 && dpad < 8,
|
|
61
|
+
["Right" /* InputId.Right */]: dpad > 0 && dpad < 4,
|
|
62
|
+
["L2Button" /* InputId.LeftTriggerButton */]: (miscButtons & 4) > 0,
|
|
63
|
+
["R2Button" /* InputId.RightTriggerButton */]: (miscButtons & 8) > 0,
|
|
64
|
+
["L1" /* InputId.LeftBumper */]: (miscButtons & 1) > 0,
|
|
65
|
+
["R1" /* InputId.RightBumper */]: (miscButtons & 2) > 0,
|
|
66
|
+
["Create" /* InputId.Create */]: (miscButtons & 16) > 0,
|
|
67
|
+
["Options" /* InputId.Options */]: (miscButtons & 32) > 0,
|
|
68
|
+
["L3" /* InputId.LeftAnalogButton */]: (miscButtons & 64) > 0,
|
|
69
|
+
["R3" /* InputId.RightAnalogButton */]: (miscButtons & 128) > 0,
|
|
70
|
+
["Playstation" /* InputId.Playstation */]: (lastButtons & 1) > 0,
|
|
71
|
+
["TouchButton" /* InputId.TouchButton */]: (lastButtons & 2) > 0,
|
|
72
|
+
["Mute" /* InputId.Mute */]: (lastButtons & 4) > 0,
|
|
73
|
+
// The other 5 bits are unused
|
|
74
|
+
// 5 reserved bytes
|
|
75
|
+
["GyroX" /* InputId.GyroX */]: report.readUint16LE(15),
|
|
76
|
+
["GyroY" /* InputId.GyroY */]: report.readUint16LE(17),
|
|
77
|
+
["GyroZ" /* InputId.GyroZ */]: report.readUint16LE(19),
|
|
78
|
+
["AccelX" /* InputId.AccelX */]: report.readUint16LE(21),
|
|
79
|
+
["AccelY" /* InputId.AccelY */]: report.readUint16LE(23),
|
|
80
|
+
["AccelZ" /* InputId.AccelZ */]: report.readUint16LE(25),
|
|
81
|
+
// 4 bytes for sensor timestamp (32LE)
|
|
82
|
+
// 1 reserved byte
|
|
83
|
+
["TouchId0" /* InputId.TouchId0 */]: report.readUint8(32) & 0x7f,
|
|
84
|
+
["TouchContact0" /* InputId.TouchContact0 */]: (report.readUint8(32) & 0x80) === 0,
|
|
85
|
+
["TouchX0" /* InputId.TouchX0 */]: (0, hid_provider_1.mapAxis)((report.readUint16LE(33) << 20) >> 20, 1920),
|
|
86
|
+
["TouchY0" /* InputId.TouchY0 */]: (0, hid_provider_1.mapAxis)(report.readUint16LE(34) >> 4, 1080),
|
|
87
|
+
["TouchId1" /* InputId.TouchId1 */]: report.readUint8(36) & 0x7f,
|
|
88
|
+
["TouchContact1" /* InputId.TouchContact1 */]: (report.readUint8(36) & 0x80) === 0,
|
|
89
|
+
["TouchX1" /* InputId.TouchX1 */]: (0, hid_provider_1.mapAxis)((report.readUint16LE(37) << 20) >> 20, 1920),
|
|
90
|
+
["TouchY1" /* InputId.TouchY1 */]: (0, hid_provider_1.mapAxis)(report.readUint16LE(38) >> 4, 1080),
|
|
91
|
+
// 12 reserved bytes
|
|
92
|
+
["Status" /* InputId.Status */]: (report.readUint8(53) & 4) > 0,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.NodeHIDProvider = NodeHIDProvider;
|
|
97
|
+
//# sourceMappingURL=node_hid_provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_hid_provider.js","sourceRoot":"","sources":["../../src/hid/node_hid_provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/platform_hid_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,mBAAmB,gDAAmE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlatformHIDProvider = void 0;
|
|
4
|
+
const node_hid_provider_1 = require("./node_hid_provider");
|
|
5
|
+
const web_hid_provider_1 = require("./web_hid_provider");
|
|
6
|
+
exports.PlatformHIDProvider = typeof window === 'undefined' ? node_hid_provider_1.NodeHIDProvider : web_hid_provider_1.WebHIDProvider;
|
|
7
|
+
//# sourceMappingURL=platform_hid_provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform_hid_provider.js","sourceRoot":"","sources":["../../src/hid/platform_hid_provider.ts"],"names":[],"mappings":";;;AAAA,2DAAqD;AACrD,yDAAmD;AAEtC,QAAA,mBAAmB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,mCAAe,CAAC,CAAC,CAAC,iCAAc,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HIDProvider, DualsenseHIDState } from "./hid_provider";
|
|
2
|
+
export declare class WebHIDProvider extends HIDProvider {
|
|
3
|
+
private device?;
|
|
4
|
+
wireless: boolean;
|
|
5
|
+
connect(): void;
|
|
6
|
+
get connected(): boolean;
|
|
7
|
+
disconnect(): void;
|
|
8
|
+
process(buffer: DataView): DualsenseHIDState;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=web_hid_provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/web_hid_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAY;IACpB,QAAQ,EAAE,OAAO,CAAQ;IAEhC,OAAO,IAAI,IAAI;IA+Bf,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,UAAU,IAAI,IAAI;IASlB,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB;CA2D7C"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebHIDProvider = void 0;
|
|
4
|
+
const hid_provider_1 = require("./hid_provider");
|
|
5
|
+
class WebHIDProvider extends hid_provider_1.HIDProvider {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.wireless = true; // TODO: Not sure what to check
|
|
9
|
+
}
|
|
10
|
+
connect() {
|
|
11
|
+
this.disconnect();
|
|
12
|
+
navigator.hid
|
|
13
|
+
.requestDevice({
|
|
14
|
+
filters: [
|
|
15
|
+
{ vendorId: hid_provider_1.HIDProvider.vendorId, productId: hid_provider_1.HIDProvider.productId },
|
|
16
|
+
],
|
|
17
|
+
})
|
|
18
|
+
.then((devices) => {
|
|
19
|
+
if (devices.length === 0) {
|
|
20
|
+
return this.onError(new Error(`No controllers available`));
|
|
21
|
+
}
|
|
22
|
+
devices[0]
|
|
23
|
+
.open()
|
|
24
|
+
.then(() => {
|
|
25
|
+
this.device = devices[0];
|
|
26
|
+
this.device.addEventListener("inputreport", ({ data }) => {
|
|
27
|
+
this.onData(this.process(data));
|
|
28
|
+
});
|
|
29
|
+
})
|
|
30
|
+
.catch((err) => {
|
|
31
|
+
this.onError(err);
|
|
32
|
+
});
|
|
33
|
+
})
|
|
34
|
+
.catch((err) => {
|
|
35
|
+
this.onError(err);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
get connected() {
|
|
39
|
+
return this.device !== undefined;
|
|
40
|
+
}
|
|
41
|
+
disconnect() {
|
|
42
|
+
if (this.device) {
|
|
43
|
+
this.device.close().finally(() => {
|
|
44
|
+
this.device = undefined;
|
|
45
|
+
this.wireless = false;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
process(buffer) {
|
|
50
|
+
// Bluetooth buffer starts with an extra byte
|
|
51
|
+
const report = new DataView(buffer.buffer, this.wireless ? 2 : 1);
|
|
52
|
+
const mainButtons = report.getUint8(7);
|
|
53
|
+
const miscButtons = report.getUint8(8);
|
|
54
|
+
const lastButtons = report.getUint8(9);
|
|
55
|
+
const dpad = (mainButtons << 4) >> 4;
|
|
56
|
+
return {
|
|
57
|
+
["LX" /* InputId.LeftAnalogX */]: (0, hid_provider_1.mapAxis)(report.getUint8(0)),
|
|
58
|
+
["LY" /* InputId.LeftAnalogY */]: -(0, hid_provider_1.mapAxis)(report.getUint8(1)),
|
|
59
|
+
["RX" /* InputId.RightAnalogX */]: (0, hid_provider_1.mapAxis)(report.getUint8(2)),
|
|
60
|
+
["RY" /* InputId.RightAnalogY */]: -(0, hid_provider_1.mapAxis)(report.getUint8(3)),
|
|
61
|
+
["L2" /* InputId.LeftTrigger */]: (0, hid_provider_1.mapTrigger)(report.getUint8(4)),
|
|
62
|
+
["R2" /* InputId.RightTrigger */]: (0, hid_provider_1.mapTrigger)(report.getUint8(5)),
|
|
63
|
+
["Triangle" /* InputId.Triangle */]: (mainButtons & 128) > 0,
|
|
64
|
+
["Circle" /* InputId.Circle */]: (mainButtons & 64) > 0,
|
|
65
|
+
["Cross" /* InputId.Cross */]: (mainButtons & 32) > 0,
|
|
66
|
+
["Square" /* InputId.Square */]: (mainButtons & 16) > 0,
|
|
67
|
+
["Dpad" /* InputId.Dpad */]: dpad,
|
|
68
|
+
["Up" /* InputId.Up */]: dpad < 2 || dpad === 7,
|
|
69
|
+
["Down" /* InputId.Down */]: dpad > 2 && dpad < 6,
|
|
70
|
+
["Left" /* InputId.Left */]: dpad > 4 && dpad < 8,
|
|
71
|
+
["Right" /* InputId.Right */]: dpad > 0 && dpad < 4,
|
|
72
|
+
["L2Button" /* InputId.LeftTriggerButton */]: (miscButtons & 4) > 0,
|
|
73
|
+
["R2Button" /* InputId.RightTriggerButton */]: (miscButtons & 8) > 0,
|
|
74
|
+
["L1" /* InputId.LeftBumper */]: (miscButtons & 1) > 0,
|
|
75
|
+
["R1" /* InputId.RightBumper */]: (miscButtons & 2) > 0,
|
|
76
|
+
["Create" /* InputId.Create */]: (miscButtons & 16) > 0,
|
|
77
|
+
["Options" /* InputId.Options */]: (miscButtons & 32) > 0,
|
|
78
|
+
["L3" /* InputId.LeftAnalogButton */]: (miscButtons & 64) > 0,
|
|
79
|
+
["R3" /* InputId.RightAnalogButton */]: (miscButtons & 128) > 0,
|
|
80
|
+
["Playstation" /* InputId.Playstation */]: (lastButtons & 1) > 0,
|
|
81
|
+
["TouchButton" /* InputId.TouchButton */]: (lastButtons & 2) > 0,
|
|
82
|
+
["Mute" /* InputId.Mute */]: (lastButtons & 4) > 0,
|
|
83
|
+
["GyroX" /* InputId.GyroX */]: report.getUint16(15, true),
|
|
84
|
+
["GyroY" /* InputId.GyroY */]: report.getUint16(17, true),
|
|
85
|
+
["GyroZ" /* InputId.GyroZ */]: report.getUint16(19, true),
|
|
86
|
+
["AccelX" /* InputId.AccelX */]: report.getUint16(21, true),
|
|
87
|
+
["AccelY" /* InputId.AccelY */]: report.getUint16(23, true),
|
|
88
|
+
["AccelZ" /* InputId.AccelZ */]: report.getUint16(25, true),
|
|
89
|
+
["TouchId0" /* InputId.TouchId0 */]: report.getUint8(32) & 0x7f,
|
|
90
|
+
["TouchContact0" /* InputId.TouchContact0 */]: (report.getUint8(32) & 0x80) === 0,
|
|
91
|
+
["TouchX0" /* InputId.TouchX0 */]: (0, hid_provider_1.mapAxis)((report.getUint16(33, true) << 20) >> 20, 1920),
|
|
92
|
+
["TouchY0" /* InputId.TouchY0 */]: (0, hid_provider_1.mapAxis)(report.getUint16(34, true) >> 4, 1080),
|
|
93
|
+
["TouchId1" /* InputId.TouchId1 */]: report.getUint8(36) & 0x7f,
|
|
94
|
+
["TouchContact1" /* InputId.TouchContact1 */]: (report.getUint8(36) & 0x80) === 0,
|
|
95
|
+
["TouchX1" /* InputId.TouchX1 */]: (0, hid_provider_1.mapAxis)((report.getUint16(37, true) << 20) >> 20, 1920),
|
|
96
|
+
["TouchY1" /* InputId.TouchY1 */]: (0, hid_provider_1.mapAxis)(report.getUint16(38, true) >> 4, 1080),
|
|
97
|
+
["Status" /* InputId.Status */]: (report.getUint8(53) & 4) > 0,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.WebHIDProvider = WebHIDProvider;
|
|
102
|
+
//# sourceMappingURL=web_hid_provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web_hid_provider.js","sourceRoot":"","sources":["../../src/hid/web_hid_provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDs for real and virtual controller inputs.
|
|
3
|
+
*/
|
|
1
4
|
export declare const enum InputId {
|
|
2
5
|
Options = "Options",
|
|
3
6
|
Create = "Create",
|
|
@@ -39,6 +42,7 @@ export declare const enum InputId {
|
|
|
39
42
|
GyroZ = "GyroZ",
|
|
40
43
|
AccelX = "AccelX",
|
|
41
44
|
AccelY = "AccelY",
|
|
42
|
-
AccelZ = "AccelZ"
|
|
45
|
+
AccelZ = "AccelZ",
|
|
46
|
+
Unknown = "Unknown"
|
|
43
47
|
}
|
|
44
|
-
//# sourceMappingURL=
|
|
48
|
+
//# sourceMappingURL=id.d.ts.map
|
package/dist/id.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,0BAAkB,OAAO;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IAEjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IAEjB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IAEf,WAAW,gBAAgB;IAE3B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IAErB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IAErB,gBAAgB,OAAO;IACvB,iBAAiB,OAAO;IAExB,WAAW,OAAO;IAClB,YAAY,OAAO;IACnB,iBAAiB,aAAa;IAC9B,kBAAkB,aAAa;IAE/B,UAAU,OAAO;IACjB,WAAW,OAAO;IAElB,WAAW,OAAO;IAClB,WAAW,OAAO;IAClB,YAAY,OAAO;IACnB,YAAY,OAAO;IAEnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IAEf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IAGjB,OAAO,YAAY;CACpB"}
|
package/dist/id.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
17
17
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./comparators"), exports);
|
|
20
21
|
__exportStar(require("./dualsense"), exports);
|
|
22
|
+
__exportStar(require("./id"), exports);
|
|
21
23
|
__exportStar(require("./input"), exports);
|
|
22
24
|
__exportStar(require("./math"), exports);
|
|
23
25
|
__exportStar(require("./elements/index"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,mDAAiC;AACjC,kDAAgC;AAChC,8CAA4B;AAC5B,qDAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,gDAA8B;AAC9B,8CAA4B;AAC5B,uCAAqB;AACrB,0CAAwB;AACxB,yCAAuB;AACvB,mDAAiC;AACjC,kDAAgC;AAChC,8CAA4B;AAC5B,qDAAmC"}
|
package/dist/input.d.ts
CHANGED
|
@@ -1,43 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { EventEmitter } from "events";
|
|
4
|
-
import { inspect } from "util";
|
|
1
|
+
import { InputId } from "./id";
|
|
2
|
+
export { InputId } from "./id";
|
|
5
3
|
export interface InputParams {
|
|
6
4
|
name?: string;
|
|
7
5
|
icon?: string;
|
|
8
6
|
threshold?: number;
|
|
9
|
-
parent?: Input<unknown>;
|
|
10
7
|
}
|
|
11
|
-
declare
|
|
12
|
-
declare
|
|
13
|
-
declare
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
declare const
|
|
8
|
+
export declare type InputChangeType = "change" | "press" | "release";
|
|
9
|
+
export declare type InputEventType = InputChangeType | "input";
|
|
10
|
+
export declare type InputCallback<Instance> = (input: Instance, changed: Instance | Input<unknown>) => unknown | Promise<unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* Private utilities
|
|
13
|
+
*/
|
|
14
|
+
export declare const InputSetComparator: unique symbol;
|
|
18
15
|
export declare const InputChanged: unique symbol;
|
|
19
16
|
export declare const InputSet: unique symbol;
|
|
20
17
|
export declare const InputName: unique symbol;
|
|
21
18
|
export declare const InputIcon: unique symbol;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Private properties
|
|
21
|
+
*/
|
|
22
|
+
declare const InputOns: unique symbol;
|
|
23
|
+
declare const InputOnces: unique symbol;
|
|
24
|
+
declare const InputAdopt: unique symbol;
|
|
25
|
+
declare const InputParents: unique symbol;
|
|
26
|
+
declare const InputComparator: unique symbol;
|
|
27
27
|
/**
|
|
28
28
|
* Input manages the state of a single device input,
|
|
29
29
|
* a virtual input, or a group of Input children.
|
|
30
30
|
*/
|
|
31
|
-
export declare abstract class Input<Type>
|
|
32
|
-
readonly id:
|
|
33
|
-
/**
|
|
34
|
-
* Timestamp of the last received input that changed the state.
|
|
35
|
-
*/
|
|
36
|
-
lastChange: number;
|
|
37
|
-
/**
|
|
38
|
-
* Timestamp of the last received input, even if it didn't change the state.
|
|
39
|
-
*/
|
|
40
|
-
lastInput: number;
|
|
31
|
+
export declare abstract class Input<Type> implements AsyncIterator<Input<Type>> {
|
|
32
|
+
readonly id: InputId;
|
|
41
33
|
/**
|
|
42
34
|
* For numeric inputs, ignore state changes smaller than this threshold.
|
|
43
35
|
*/
|
|
@@ -46,28 +38,57 @@ export declare abstract class Input<Type> extends EventEmitter implements AsyncI
|
|
|
46
38
|
* Provide the type and default value for the input.
|
|
47
39
|
*/
|
|
48
40
|
abstract state: Type;
|
|
41
|
+
/**
|
|
42
|
+
* Stores event listeners.
|
|
43
|
+
*/
|
|
44
|
+
private [InputOns];
|
|
45
|
+
/**
|
|
46
|
+
* Stores callbacks waiting for one-time events.
|
|
47
|
+
*/
|
|
48
|
+
private [InputOnces];
|
|
49
|
+
constructor(params?: InputParams);
|
|
49
50
|
/**
|
|
50
51
|
* Implement a function that returns true if the user is actively engaged with the input.
|
|
51
52
|
*/
|
|
52
53
|
abstract get active(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Register a callback to recieve state updates from this Input.
|
|
56
|
+
*/
|
|
57
|
+
on(event: InputEventType, listener: InputCallback<this>): this;
|
|
58
|
+
/**
|
|
59
|
+
* Register a callback to recieve the next specified update.
|
|
60
|
+
*/
|
|
61
|
+
once(event: InputChangeType, listener: InputCallback<this>): this;
|
|
62
|
+
/**
|
|
63
|
+
* Notify listeners and parents of a state change.
|
|
64
|
+
*/
|
|
65
|
+
private emit;
|
|
66
|
+
/**
|
|
67
|
+
* Notify one-time listeners of a state change.
|
|
68
|
+
*/
|
|
69
|
+
private emitOnce;
|
|
70
|
+
/**
|
|
71
|
+
* Register a callback to recieve state updates from this Input.
|
|
72
|
+
*/
|
|
73
|
+
addEventListener(event: InputEventType, listener: InputCallback<this>, { once }?: {
|
|
74
|
+
once: boolean;
|
|
75
|
+
}): this;
|
|
53
76
|
/**
|
|
54
77
|
* Resolves on the next change to this input's state.
|
|
55
78
|
*/
|
|
56
|
-
next(type?:
|
|
79
|
+
next(type?: InputChangeType): Promise<IteratorResult<this>>;
|
|
57
80
|
/**
|
|
58
81
|
* Resolves on the next change to this input's state.
|
|
59
82
|
*/
|
|
60
83
|
promise(type?: "press" | "release" | "change"): Promise<this>;
|
|
61
84
|
/**
|
|
62
|
-
* Render a
|
|
85
|
+
* Render a debugging string.
|
|
63
86
|
*/
|
|
64
87
|
toString(): string;
|
|
65
|
-
constructor(params?: InputParams);
|
|
66
88
|
/**
|
|
67
|
-
*
|
|
89
|
+
* Returns true if the provided state is worth an event
|
|
68
90
|
*/
|
|
69
|
-
[
|
|
70
|
-
[inspect.custom](): string;
|
|
91
|
+
[InputComparator]: (state: Type, newState: Type) => boolean;
|
|
71
92
|
[Symbol.asyncIterator](): AsyncIterator<this>;
|
|
72
93
|
[Symbol.toPrimitive](hint: "number" | "string" | "default"): number | string;
|
|
73
94
|
get [Symbol.toStringTag](): string;
|
|
@@ -76,27 +97,24 @@ export declare abstract class Input<Type> extends EventEmitter implements AsyncI
|
|
|
76
97
|
*/
|
|
77
98
|
readonly [InputName]: string;
|
|
78
99
|
/**
|
|
79
|
-
* A short name for this input
|
|
100
|
+
* A short name for this input.
|
|
80
101
|
*/
|
|
81
102
|
readonly [InputIcon]: string;
|
|
82
103
|
/**
|
|
83
|
-
*
|
|
104
|
+
* Other Inputs that contain this one.
|
|
105
|
+
*/
|
|
106
|
+
private [InputParents];
|
|
107
|
+
/**
|
|
108
|
+
* Links Inputs to bubble up events.
|
|
84
109
|
*/
|
|
85
|
-
[
|
|
86
|
-
[InputChildless]: boolean;
|
|
110
|
+
[InputAdopt](parent: Input<unknown>): void;
|
|
87
111
|
/**
|
|
88
|
-
*
|
|
89
|
-
* And decide if this is the root Input.
|
|
112
|
+
* Sets a default comparison type for the Input by discovering the generic type.
|
|
90
113
|
*/
|
|
91
|
-
[
|
|
92
|
-
[InputChangedVirtual](): boolean;
|
|
93
|
-
[InputChangedPrimitive](state: Type, newState: Type): boolean;
|
|
94
|
-
[InputChangedThreshold](state: number, newState: number): boolean;
|
|
95
|
-
[InputSetComparison](): (state: Type, newState: Type) => boolean;
|
|
114
|
+
[InputSetComparator](): void;
|
|
96
115
|
/**
|
|
97
116
|
* Update the input's state and trigger all necessary callbacks.
|
|
98
117
|
*/
|
|
99
118
|
[InputSet](state: Type): void;
|
|
100
119
|
}
|
|
101
|
-
export {};
|
|
102
120
|
//# sourceMappingURL=input.d.ts.map
|
package/dist/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
|