dualsense-ts 1.3.0 → 2.0.0
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/dist/dualsense.js +1 -1
- package/dist/dualsense.js.map +1 -1
- package/dist/hid/dualsense_hid.d.ts +23 -7
- package/dist/hid/dualsense_hid.d.ts.map +1 -1
- package/dist/hid/dualsense_hid.js +80 -40
- package/dist/hid/dualsense_hid.js.map +1 -1
- package/dist/hid/ids.d.ts +18 -6
- package/dist/hid/ids.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/dualsense.ts +1 -1
- package/src/hid/dualsense_hid.ts +101 -49
- package/src/hid/ids.ts +21 -7
package/dist/dualsense.js
CHANGED
|
@@ -96,7 +96,7 @@ class Dualsense extends input_1.Input {
|
|
|
96
96
|
this.dpad.down[input_1.InputSet](this.hid.state["Down" /* Down */]);
|
|
97
97
|
this.dpad.right[input_1.InputSet](this.hid.state["Right" /* Right */]);
|
|
98
98
|
this.dpad.left[input_1.InputSet](this.hid.state["Left" /* Left */]);
|
|
99
|
-
this.touchpad.button[input_1.InputSet](this.hid.state["
|
|
99
|
+
this.touchpad.button[input_1.InputSet](this.hid.state["TouchButton" /* TouchButton */]);
|
|
100
100
|
this.left.analog.x[input_1.InputSet](this.hid.state["LX" /* LeftAnalogX */]);
|
|
101
101
|
this.left.analog.y[input_1.InputSet](this.hid.state["LY" /* LeftAnalogY */]);
|
|
102
102
|
this.right.analog.x[input_1.InputSet](this.hid.state["RX" /* RightAnalogX */]);
|
package/dist/dualsense.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from "events";
|
|
3
3
|
import { InputId } from "./ids";
|
|
4
|
-
export
|
|
4
|
+
export interface DualsenseHIDState {
|
|
5
5
|
[InputId.LeftAnalogX]: number;
|
|
6
6
|
[InputId.LeftAnalogY]: number;
|
|
7
7
|
[InputId.RightAnalogX]: number;
|
|
@@ -12,6 +12,7 @@ export declare type DualsenseHIDState = {
|
|
|
12
12
|
[InputId.Circle]: boolean;
|
|
13
13
|
[InputId.Cross]: boolean;
|
|
14
14
|
[InputId.Square]: boolean;
|
|
15
|
+
[InputId.Dpad]: number;
|
|
15
16
|
[InputId.Up]: boolean;
|
|
16
17
|
[InputId.Down]: boolean;
|
|
17
18
|
[InputId.Left]: boolean;
|
|
@@ -25,21 +26,36 @@ export declare type DualsenseHIDState = {
|
|
|
25
26
|
[InputId.RightBumper]: boolean;
|
|
26
27
|
[InputId.LeftBumper]: boolean;
|
|
27
28
|
[InputId.Playstation]: boolean;
|
|
28
|
-
[InputId.
|
|
29
|
+
[InputId.TouchButton]: boolean;
|
|
29
30
|
[InputId.Mute]: boolean;
|
|
30
|
-
[InputId.
|
|
31
|
-
[InputId.
|
|
32
|
-
[InputId.
|
|
33
|
-
[InputId.
|
|
34
|
-
|
|
31
|
+
[InputId.Status]: boolean;
|
|
32
|
+
[InputId.TouchX0]: number;
|
|
33
|
+
[InputId.TouchY0]: number;
|
|
34
|
+
[InputId.TouchContact0]: boolean;
|
|
35
|
+
[InputId.TouchId0]: number;
|
|
36
|
+
[InputId.TouchX1]: number;
|
|
37
|
+
[InputId.TouchY1]: number;
|
|
38
|
+
[InputId.TouchContact1]: boolean;
|
|
39
|
+
[InputId.TouchId1]: number;
|
|
40
|
+
[InputId.GyroX]: number;
|
|
41
|
+
[InputId.GyroY]: number;
|
|
42
|
+
[InputId.GyroZ]: number;
|
|
43
|
+
[InputId.AccelX]: number;
|
|
44
|
+
[InputId.AccelY]: number;
|
|
45
|
+
[InputId.AccelZ]: number;
|
|
46
|
+
}
|
|
35
47
|
export declare function mapAxis(value: number): number;
|
|
36
48
|
export declare function mapTrigger(value: number): number;
|
|
37
49
|
export declare class DualsenseHID extends EventEmitter {
|
|
38
50
|
state: DualsenseHIDState;
|
|
39
51
|
private device;
|
|
52
|
+
private wireless;
|
|
40
53
|
static readonly vendorId: number;
|
|
41
54
|
static readonly productId: number;
|
|
42
55
|
constructor();
|
|
56
|
+
/**
|
|
57
|
+
* Unpacks a Dualsense HID report.
|
|
58
|
+
*/
|
|
43
59
|
private process;
|
|
44
60
|
private handleError;
|
|
45
61
|
private disconnect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,
|
|
1
|
+
{"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DualsenseHID = exports.mapTrigger = exports.mapAxis = void 0;
|
|
4
4
|
const node_hid_1 = require("node-hid");
|
|
5
5
|
const events_1 = require("events");
|
|
6
|
-
// Maps a HID input
|
|
6
|
+
// Maps a HID input of 0...255 to -1...1
|
|
7
7
|
function mapAxis(value) {
|
|
8
8
|
return (2 / 255) * Math.max(0, Math.min(255, value)) - 1;
|
|
9
9
|
}
|
|
10
10
|
exports.mapAxis = mapAxis;
|
|
11
|
-
// Maps a HID input
|
|
11
|
+
// Maps a HID input of 0...255 to 0...1
|
|
12
12
|
function mapTrigger(value) {
|
|
13
13
|
return (1 / 255) * Math.max(0, Math.min(255, value));
|
|
14
14
|
}
|
|
@@ -27,6 +27,7 @@ class DualsenseHID extends events_1.EventEmitter {
|
|
|
27
27
|
["Circle" /* Circle */]: false,
|
|
28
28
|
["Cross" /* Cross */]: false,
|
|
29
29
|
["Square" /* Square */]: false,
|
|
30
|
+
["Dpad" /* Dpad */]: 0,
|
|
30
31
|
["Up" /* Up */]: false,
|
|
31
32
|
["Down" /* Down */]: false,
|
|
32
33
|
["Left" /* Left */]: false,
|
|
@@ -40,48 +41,85 @@ class DualsenseHID extends events_1.EventEmitter {
|
|
|
40
41
|
["R1" /* RightBumper */]: false,
|
|
41
42
|
["L1" /* LeftBumper */]: false,
|
|
42
43
|
["Playstation" /* Playstation */]: false,
|
|
43
|
-
["
|
|
44
|
+
["TouchButton" /* TouchButton */]: false,
|
|
44
45
|
["Mute" /* Mute */]: false,
|
|
45
|
-
["
|
|
46
|
-
["
|
|
47
|
-
["
|
|
48
|
-
["
|
|
46
|
+
["Status" /* Status */]: false,
|
|
47
|
+
["TouchX0" /* TouchX0 */]: 0,
|
|
48
|
+
["TouchY0" /* TouchY0 */]: 0,
|
|
49
|
+
["TouchContact0" /* TouchContact0 */]: false,
|
|
50
|
+
["TouchId0" /* TouchId0 */]: 0,
|
|
51
|
+
["TouchX1" /* TouchX1 */]: 0,
|
|
52
|
+
["TouchY1" /* TouchY1 */]: 0,
|
|
53
|
+
["TouchContact1" /* TouchContact1 */]: false,
|
|
54
|
+
["TouchId1" /* TouchId1 */]: 0,
|
|
55
|
+
["GyroX" /* GyroX */]: 0,
|
|
56
|
+
["GyroY" /* GyroY */]: 0,
|
|
57
|
+
["GyroZ" /* GyroZ */]: 0,
|
|
58
|
+
["AccelX" /* AccelX */]: 0,
|
|
59
|
+
["AccelY" /* AccelY */]: 0,
|
|
60
|
+
["AccelZ" /* AccelZ */]: 0,
|
|
49
61
|
};
|
|
62
|
+
this.wireless = false;
|
|
50
63
|
this.device = this.connect();
|
|
51
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Unpacks a Dualsense HID report.
|
|
67
|
+
*/
|
|
52
68
|
process(buffer) {
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
69
|
+
// Bluetooth buffer starts with an extra byte
|
|
70
|
+
const report = buffer.subarray(this.wireless ? 2 : 1);
|
|
71
|
+
const { state } = this;
|
|
72
|
+
state["LX" /* LeftAnalogX */] = mapAxis(report.readUint8(0));
|
|
73
|
+
state["LY" /* LeftAnalogY */] = -mapAxis(report.readUint8(1));
|
|
74
|
+
state["RX" /* RightAnalogX */] = mapAxis(report.readUint8(2));
|
|
75
|
+
state["RY" /* RightAnalogY */] = -mapAxis(report.readUint8(3));
|
|
76
|
+
state["L2" /* LeftTrigger */] = mapTrigger(report.readUint8(4));
|
|
77
|
+
state["R2" /* RightTrigger */] = mapTrigger(report.readUint8(5));
|
|
78
|
+
// 6 is a sequence byte
|
|
79
|
+
const mainButtons = report.readUint8(7);
|
|
80
|
+
state["Triangle" /* Triangle */] = (mainButtons & 128) > 0;
|
|
81
|
+
state["Circle" /* Circle */] = (mainButtons & 64) > 0;
|
|
82
|
+
state["Cross" /* Cross */] = (mainButtons & 32) > 0;
|
|
83
|
+
state["Square" /* Square */] = (mainButtons & 16) > 0;
|
|
84
|
+
state["Dpad" /* Dpad */] = (mainButtons << 4) >> 4;
|
|
85
|
+
state["Up" /* Up */] = state["Dpad" /* Dpad */] < 2 || state["Dpad" /* Dpad */] === 7;
|
|
86
|
+
state["Down" /* Down */] = state["Dpad" /* Dpad */] > 2 && state["Dpad" /* Dpad */] < 6;
|
|
87
|
+
state["Left" /* Left */] = state["Dpad" /* Dpad */] > 4 && state["Dpad" /* Dpad */] < 8;
|
|
88
|
+
state["Right" /* Right */] = state["Dpad" /* Dpad */] > 0 && state["Dpad" /* Dpad */] < 4;
|
|
89
|
+
const miscButtons = report.readUint8(8);
|
|
90
|
+
state["L2Button" /* LeftTriggerButton */] = (miscButtons & 4) > 0;
|
|
91
|
+
state["R2Button" /* RightTriggerButton */] = (miscButtons & 8) > 0;
|
|
92
|
+
state["L1" /* LeftBumper */] = (miscButtons & 1) > 0;
|
|
93
|
+
state["R1" /* RightBumper */] = (miscButtons & 2) > 0;
|
|
94
|
+
state["Create" /* Create */] = (miscButtons & 16) > 0;
|
|
95
|
+
state["Options" /* Options */] = (miscButtons & 32) > 0;
|
|
96
|
+
state["L3" /* LeftAnalogButton */] = (miscButtons & 64) > 0;
|
|
97
|
+
state["R3" /* RightAnalogButton */] = (miscButtons & 128) > 0;
|
|
98
|
+
const lastButtons = report.readUint8(9);
|
|
99
|
+
state["Playstation" /* Playstation */] = (lastButtons & 1) > 0;
|
|
100
|
+
state["TouchButton" /* TouchButton */] = (lastButtons & 2) > 0;
|
|
101
|
+
state["Mute" /* Mute */] = (lastButtons & 4) > 0;
|
|
102
|
+
// The other 5 bits are unused
|
|
103
|
+
// 5 reserved bytes
|
|
104
|
+
state["GyroX" /* GyroX */] = report.readUint16LE(15);
|
|
105
|
+
state["GyroY" /* GyroY */] = report.readUint16LE(17);
|
|
106
|
+
state["GyroZ" /* GyroZ */] = report.readUint16LE(19);
|
|
107
|
+
state["AccelX" /* AccelX */] = report.readUint16LE(21);
|
|
108
|
+
state["AccelY" /* AccelY */] = report.readUint16LE(23);
|
|
109
|
+
state["AccelZ" /* AccelZ */] = report.readUint16LE(25);
|
|
110
|
+
// 4 bytes for sensor timestamp (32LE)
|
|
111
|
+
// 1 reserved byte
|
|
112
|
+
state["TouchId0" /* TouchId0 */] = report.readUint8(32) & 0x7f;
|
|
113
|
+
state["TouchContact0" /* TouchContact0 */] = (report.readUint8(32) & 0x80) === 0;
|
|
114
|
+
state["TouchX0" /* TouchX0 */] = (report.readUint16LE(33) << 20) >> 20;
|
|
115
|
+
state["TouchY0" /* TouchY0 */] = report.readUint16LE(34) >> 4;
|
|
116
|
+
state["TouchId1" /* TouchId1 */] = report.readUint8(36) & 0x7f;
|
|
117
|
+
state["TouchContact1" /* TouchContact1 */] = (report.readUint8(36) & 0x80) === 0;
|
|
118
|
+
state["TouchX1" /* TouchX1 */] = (report.readUint16LE(37) << 20) >> 20;
|
|
119
|
+
state["TouchY1" /* TouchY1 */] = report.readUint16LE(38) >> 4;
|
|
120
|
+
// 12 reserved bytes
|
|
121
|
+
state["Status" /* Status */] = (report.readUint8(53) & 4) > 0;
|
|
122
|
+
this.emit("input", state);
|
|
85
123
|
}
|
|
86
124
|
handleError(error) {
|
|
87
125
|
console.error(error);
|
|
@@ -103,9 +141,11 @@ class DualsenseHID extends events_1.EventEmitter {
|
|
|
103
141
|
connect() {
|
|
104
142
|
this.disconnect();
|
|
105
143
|
const controllers = (0, node_hid_1.devices)(DualsenseHID.vendorId, DualsenseHID.productId);
|
|
106
|
-
if (!controllers[0]
|
|
144
|
+
if (controllers.length === 0 || !controllers[0].path) {
|
|
107
145
|
throw new Error(`No controllers (${(0, node_hid_1.devices)().length} other devices)`);
|
|
108
146
|
}
|
|
147
|
+
if (controllers[0].interface === -1)
|
|
148
|
+
this.wireless = true;
|
|
109
149
|
const controller = new node_hid_1.HID(controllers[0].path);
|
|
110
150
|
controller.on("data", this.process.bind(this));
|
|
111
151
|
controller.on("error", this.handleError.bind(this));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":";;;AAAA,uCAAwC;AACxC,mCAAsC;
|
|
1
|
+
{"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
|
package/dist/hid/ids.d.ts
CHANGED
|
@@ -3,19 +3,25 @@ export declare const enum InputId {
|
|
|
3
3
|
Create = "Create",
|
|
4
4
|
Playstation = "Playstation",
|
|
5
5
|
Mute = "Mute",
|
|
6
|
+
Status = "Status",
|
|
6
7
|
Triangle = "Triangle",
|
|
7
8
|
Circle = "Circle",
|
|
8
9
|
Cross = "Cross",
|
|
9
10
|
Square = "Square",
|
|
11
|
+
Dpad = "Dpad",
|
|
10
12
|
Up = "Up",
|
|
11
13
|
Down = "Down",
|
|
12
14
|
Left = "Left",
|
|
13
15
|
Right = "Right",
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
TouchButton = "TouchButton",
|
|
17
|
+
TouchX0 = "TouchX0",
|
|
18
|
+
TouchY0 = "TouchY0",
|
|
19
|
+
TouchContact0 = "TouchContact0",
|
|
20
|
+
TouchId0 = "TouchId0",
|
|
21
|
+
TouchX1 = "TouchX1",
|
|
22
|
+
TouchY1 = "TouchY1",
|
|
23
|
+
TouchContact1 = "TouchContact1",
|
|
24
|
+
TouchId1 = "TouchId1",
|
|
19
25
|
LeftAnalogButton = "L3",
|
|
20
26
|
RightAnalogButton = "R3",
|
|
21
27
|
LeftTrigger = "L2",
|
|
@@ -27,6 +33,12 @@ export declare const enum InputId {
|
|
|
27
33
|
LeftAnalogX = "LX",
|
|
28
34
|
LeftAnalogY = "LY",
|
|
29
35
|
RightAnalogX = "RX",
|
|
30
|
-
RightAnalogY = "RY"
|
|
36
|
+
RightAnalogY = "RY",
|
|
37
|
+
GyroX = "GyroX",
|
|
38
|
+
GyroY = "GyroY",
|
|
39
|
+
GyroZ = "GyroZ",
|
|
40
|
+
AccelX = "AccelX",
|
|
41
|
+
AccelY = "AccelY",
|
|
42
|
+
AccelZ = "AccelZ"
|
|
31
43
|
}
|
|
32
44
|
//# sourceMappingURL=ids.d.ts.map
|
package/dist/hid/ids.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/hid/ids.ts"],"names":[],"mappings":"AACA,0BAAkB,OAAO;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/hid/ids.ts"],"names":[],"mappings":"AACA,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;CAClB"}
|
package/package.json
CHANGED
package/src/dualsense.ts
CHANGED
|
@@ -146,7 +146,7 @@ export class Dualsense extends Input<Dualsense> {
|
|
|
146
146
|
this.dpad.down[InputSet](this.hid.state[InputId.Down]);
|
|
147
147
|
this.dpad.right[InputSet](this.hid.state[InputId.Right]);
|
|
148
148
|
this.dpad.left[InputSet](this.hid.state[InputId.Left]);
|
|
149
|
-
this.touchpad.button[InputSet](this.hid.state[InputId.
|
|
149
|
+
this.touchpad.button[InputSet](this.hid.state[InputId.TouchButton]);
|
|
150
150
|
this.left.analog.x[InputSet](this.hid.state[InputId.LeftAnalogX]);
|
|
151
151
|
this.left.analog.y[InputSet](this.hid.state[InputId.LeftAnalogY]);
|
|
152
152
|
this.right.analog.x[InputSet](this.hid.state[InputId.RightAnalogX]);
|
package/src/hid/dualsense_hid.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { EventEmitter } from "events";
|
|
|
3
3
|
|
|
4
4
|
import { InputId } from "./ids";
|
|
5
5
|
|
|
6
|
-
export
|
|
6
|
+
export interface DualsenseHIDState {
|
|
7
7
|
[InputId.LeftAnalogX]: number;
|
|
8
8
|
[InputId.LeftAnalogY]: number;
|
|
9
9
|
[InputId.RightAnalogX]: number;
|
|
@@ -14,6 +14,7 @@ export type DualsenseHIDState = {
|
|
|
14
14
|
[InputId.Circle]: boolean;
|
|
15
15
|
[InputId.Cross]: boolean;
|
|
16
16
|
[InputId.Square]: boolean;
|
|
17
|
+
[InputId.Dpad]: number;
|
|
17
18
|
[InputId.Up]: boolean;
|
|
18
19
|
[InputId.Down]: boolean;
|
|
19
20
|
[InputId.Left]: boolean;
|
|
@@ -27,20 +28,31 @@ export type DualsenseHIDState = {
|
|
|
27
28
|
[InputId.RightBumper]: boolean;
|
|
28
29
|
[InputId.LeftBumper]: boolean;
|
|
29
30
|
[InputId.Playstation]: boolean;
|
|
30
|
-
[InputId.
|
|
31
|
+
[InputId.TouchButton]: boolean;
|
|
31
32
|
[InputId.Mute]: boolean;
|
|
32
|
-
[InputId.
|
|
33
|
-
[InputId.
|
|
34
|
-
[InputId.
|
|
35
|
-
[InputId.
|
|
36
|
-
|
|
33
|
+
[InputId.Status]: boolean;
|
|
34
|
+
[InputId.TouchX0]: number;
|
|
35
|
+
[InputId.TouchY0]: number;
|
|
36
|
+
[InputId.TouchContact0]: boolean;
|
|
37
|
+
[InputId.TouchId0]: number;
|
|
38
|
+
[InputId.TouchX1]: number;
|
|
39
|
+
[InputId.TouchY1]: number;
|
|
40
|
+
[InputId.TouchContact1]: boolean;
|
|
41
|
+
[InputId.TouchId1]: number;
|
|
42
|
+
[InputId.GyroX]: number;
|
|
43
|
+
[InputId.GyroY]: number;
|
|
44
|
+
[InputId.GyroZ]: number;
|
|
45
|
+
[InputId.AccelX]: number;
|
|
46
|
+
[InputId.AccelY]: number;
|
|
47
|
+
[InputId.AccelZ]: number;
|
|
48
|
+
}
|
|
37
49
|
|
|
38
|
-
// Maps a HID input
|
|
50
|
+
// Maps a HID input of 0...255 to -1...1
|
|
39
51
|
export function mapAxis(value: number): number {
|
|
40
52
|
return (2 / 255) * Math.max(0, Math.min(255, value)) - 1;
|
|
41
53
|
}
|
|
42
54
|
|
|
43
|
-
// Maps a HID input
|
|
55
|
+
// Maps a HID input of 0...255 to 0...1
|
|
44
56
|
export function mapTrigger(value: number): number {
|
|
45
57
|
return (1 / 255) * Math.max(0, Math.min(255, value));
|
|
46
58
|
}
|
|
@@ -57,6 +69,7 @@ export class DualsenseHID extends EventEmitter {
|
|
|
57
69
|
[InputId.Circle]: false,
|
|
58
70
|
[InputId.Cross]: false,
|
|
59
71
|
[InputId.Square]: false,
|
|
72
|
+
[InputId.Dpad]: 0,
|
|
60
73
|
[InputId.Up]: false,
|
|
61
74
|
[InputId.Down]: false,
|
|
62
75
|
[InputId.Left]: false,
|
|
@@ -70,15 +83,27 @@ export class DualsenseHID extends EventEmitter {
|
|
|
70
83
|
[InputId.RightBumper]: false,
|
|
71
84
|
[InputId.LeftBumper]: false,
|
|
72
85
|
[InputId.Playstation]: false,
|
|
73
|
-
[InputId.
|
|
86
|
+
[InputId.TouchButton]: false,
|
|
74
87
|
[InputId.Mute]: false,
|
|
75
|
-
[InputId.
|
|
76
|
-
[InputId.
|
|
77
|
-
[InputId.
|
|
78
|
-
[InputId.
|
|
88
|
+
[InputId.Status]: false,
|
|
89
|
+
[InputId.TouchX0]: 0,
|
|
90
|
+
[InputId.TouchY0]: 0,
|
|
91
|
+
[InputId.TouchContact0]: false,
|
|
92
|
+
[InputId.TouchId0]: 0,
|
|
93
|
+
[InputId.TouchX1]: 0,
|
|
94
|
+
[InputId.TouchY1]: 0,
|
|
95
|
+
[InputId.TouchContact1]: false,
|
|
96
|
+
[InputId.TouchId1]: 0,
|
|
97
|
+
[InputId.GyroX]: 0,
|
|
98
|
+
[InputId.GyroY]: 0,
|
|
99
|
+
[InputId.GyroZ]: 0,
|
|
100
|
+
[InputId.AccelX]: 0,
|
|
101
|
+
[InputId.AccelY]: 0,
|
|
102
|
+
[InputId.AccelZ]: 0,
|
|
79
103
|
};
|
|
80
104
|
|
|
81
105
|
private device: HID;
|
|
106
|
+
private wireless: boolean = false;
|
|
82
107
|
|
|
83
108
|
static readonly vendorId: number = 1356;
|
|
84
109
|
static readonly productId: number = 3302;
|
|
@@ -88,41 +113,66 @@ export class DualsenseHID extends EventEmitter {
|
|
|
88
113
|
this.device = this.connect();
|
|
89
114
|
}
|
|
90
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Unpacks a Dualsense HID report.
|
|
118
|
+
*/
|
|
91
119
|
private process(buffer: Buffer): void {
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
// Bluetooth buffer starts with an extra byte
|
|
121
|
+
const report = buffer.subarray(this.wireless ? 2 : 1);
|
|
122
|
+
|
|
123
|
+
const { state } = this;
|
|
124
|
+
state[InputId.LeftAnalogX] = mapAxis(report.readUint8(0));
|
|
125
|
+
state[InputId.LeftAnalogY] = -mapAxis(report.readUint8(1));
|
|
126
|
+
state[InputId.RightAnalogX] = mapAxis(report.readUint8(2));
|
|
127
|
+
state[InputId.RightAnalogY] = -mapAxis(report.readUint8(3));
|
|
128
|
+
state[InputId.LeftTrigger] = mapTrigger(report.readUint8(4));
|
|
129
|
+
state[InputId.RightTrigger] = mapTrigger(report.readUint8(5));
|
|
130
|
+
// 6 is a sequence byte
|
|
131
|
+
const mainButtons = report.readUint8(7);
|
|
132
|
+
state[InputId.Triangle] = (mainButtons & 128) > 0;
|
|
133
|
+
state[InputId.Circle] = (mainButtons & 64) > 0;
|
|
134
|
+
state[InputId.Cross] = (mainButtons & 32) > 0;
|
|
135
|
+
state[InputId.Square] = (mainButtons & 16) > 0;
|
|
136
|
+
state[InputId.Dpad] = (mainButtons << 4) >> 4;
|
|
137
|
+
state[InputId.Up] = state[InputId.Dpad] < 2 || state[InputId.Dpad] === 7;
|
|
138
|
+
state[InputId.Down] = state[InputId.Dpad] > 2 && state[InputId.Dpad] < 6;
|
|
139
|
+
state[InputId.Left] = state[InputId.Dpad] > 4 && state[InputId.Dpad] < 8;
|
|
140
|
+
state[InputId.Right] = state[InputId.Dpad] > 0 && state[InputId.Dpad] < 4;
|
|
141
|
+
const miscButtons = report.readUint8(8);
|
|
142
|
+
state[InputId.LeftTriggerButton] = (miscButtons & 4) > 0;
|
|
143
|
+
state[InputId.RightTriggerButton] = (miscButtons & 8) > 0;
|
|
144
|
+
state[InputId.LeftBumper] = (miscButtons & 1) > 0;
|
|
145
|
+
state[InputId.RightBumper] = (miscButtons & 2) > 0;
|
|
146
|
+
state[InputId.Create] = (miscButtons & 16) > 0;
|
|
147
|
+
state[InputId.Options] = (miscButtons & 32) > 0;
|
|
148
|
+
state[InputId.LeftAnalogButton] = (miscButtons & 64) > 0;
|
|
149
|
+
state[InputId.RightAnalogButton] = (miscButtons & 128) > 0;
|
|
150
|
+
const lastButtons = report.readUint8(9);
|
|
151
|
+
state[InputId.Playstation] = (lastButtons & 1) > 0;
|
|
152
|
+
state[InputId.TouchButton] = (lastButtons & 2) > 0;
|
|
153
|
+
state[InputId.Mute] = (lastButtons & 4) > 0;
|
|
154
|
+
// The other 5 bits are unused
|
|
155
|
+
// 5 reserved bytes
|
|
156
|
+
state[InputId.GyroX] = report.readUint16LE(15);
|
|
157
|
+
state[InputId.GyroY] = report.readUint16LE(17);
|
|
158
|
+
state[InputId.GyroZ] = report.readUint16LE(19);
|
|
159
|
+
state[InputId.AccelX] = report.readUint16LE(21);
|
|
160
|
+
state[InputId.AccelY] = report.readUint16LE(23);
|
|
161
|
+
state[InputId.AccelZ] = report.readUint16LE(25);
|
|
162
|
+
// 4 bytes for sensor timestamp (32LE)
|
|
163
|
+
// 1 reserved byte
|
|
164
|
+
state[InputId.TouchId0] = report.readUint8(32) & 0x7f;
|
|
165
|
+
state[InputId.TouchContact0] = (report.readUint8(32) & 0x80) === 0;
|
|
166
|
+
state[InputId.TouchX0] = (report.readUint16LE(33) << 20) >> 20;
|
|
167
|
+
state[InputId.TouchY0] = report.readUint16LE(34) >> 4;
|
|
168
|
+
state[InputId.TouchId1] = report.readUint8(36) & 0x7f;
|
|
169
|
+
state[InputId.TouchContact1] = (report.readUint8(36) & 0x80) === 0;
|
|
170
|
+
state[InputId.TouchX1] = (report.readUint16LE(37) << 20) >> 20;
|
|
171
|
+
state[InputId.TouchY1] = report.readUint16LE(38) >> 4;
|
|
172
|
+
// 12 reserved bytes
|
|
173
|
+
state[InputId.Status] = (report.readUint8(53) & 4) > 0;
|
|
174
|
+
|
|
175
|
+
this.emit("input", state);
|
|
126
176
|
}
|
|
127
177
|
|
|
128
178
|
private handleError(error: unknown): void {
|
|
@@ -147,10 +197,12 @@ export class DualsenseHID extends EventEmitter {
|
|
|
147
197
|
this.disconnect();
|
|
148
198
|
|
|
149
199
|
const controllers = devices(DualsenseHID.vendorId, DualsenseHID.productId);
|
|
150
|
-
if (!controllers[0]
|
|
200
|
+
if (controllers.length === 0 || !controllers[0].path) {
|
|
151
201
|
throw new Error(`No controllers (${devices().length} other devices)`);
|
|
152
202
|
}
|
|
153
203
|
|
|
204
|
+
if (controllers[0].interface === -1) this.wireless = true;
|
|
205
|
+
|
|
154
206
|
const controller = new HID(controllers[0].path);
|
|
155
207
|
controller.on("data", this.process.bind(this));
|
|
156
208
|
controller.on("error", this.handleError.bind(this));
|
package/src/hid/ids.ts
CHANGED
|
@@ -4,24 +4,30 @@ export const enum InputId {
|
|
|
4
4
|
Create = "Create",
|
|
5
5
|
Playstation = "Playstation",
|
|
6
6
|
Mute = "Mute",
|
|
7
|
+
Status = "Status", // Orange indicator light state
|
|
7
8
|
|
|
8
9
|
Triangle = "Triangle",
|
|
9
10
|
Circle = "Circle",
|
|
10
11
|
Cross = "Cross",
|
|
11
12
|
Square = "Square",
|
|
12
13
|
|
|
14
|
+
Dpad = "Dpad",
|
|
13
15
|
Up = "Up",
|
|
14
16
|
Down = "Down",
|
|
15
17
|
Left = "Left",
|
|
16
18
|
Right = "Right",
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
TouchButton = "TouchButton",
|
|
21
|
+
|
|
22
|
+
TouchX0 = "TouchX0",
|
|
23
|
+
TouchY0 = "TouchY0",
|
|
24
|
+
TouchContact0 = "TouchContact0",
|
|
25
|
+
TouchId0 = "TouchId0",
|
|
26
|
+
|
|
27
|
+
TouchX1 = "TouchX1",
|
|
28
|
+
TouchY1 = "TouchY1",
|
|
29
|
+
TouchContact1 = "TouchContact1",
|
|
30
|
+
TouchId1 = "TouchId1",
|
|
25
31
|
|
|
26
32
|
LeftAnalogButton = "L3",
|
|
27
33
|
RightAnalogButton = "R3",
|
|
@@ -38,4 +44,12 @@ export const enum InputId {
|
|
|
38
44
|
LeftAnalogY = "LY",
|
|
39
45
|
RightAnalogX = "RX",
|
|
40
46
|
RightAnalogY = "RY",
|
|
47
|
+
|
|
48
|
+
GyroX = "GyroX",
|
|
49
|
+
GyroY = "GyroY",
|
|
50
|
+
GyroZ = "GyroZ",
|
|
51
|
+
|
|
52
|
+
AccelX = "AccelX",
|
|
53
|
+
AccelY = "AccelY",
|
|
54
|
+
AccelZ = "AccelZ",
|
|
41
55
|
}
|