dualsense-ts 5.0.136 → 5.1.7
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 +18 -0
- package/dist/dualsense.d.ts +4 -0
- package/dist/dualsense.d.ts.map +1 -1
- package/dist/dualsense.js +22 -0
- package/dist/dualsense.js.map +1 -1
- package/dist/elements/mute.d.ts +1 -2
- package/dist/elements/mute.d.ts.map +1 -1
- package/dist/elements/mute.js +1 -2
- package/dist/elements/mute.js.map +1 -1
- package/dist/elements/trigger.d.ts +0 -2
- package/dist/elements/trigger.d.ts.map +1 -1
- package/dist/elements/trigger.js +0 -2
- package/dist/elements/trigger.js.map +1 -1
- package/dist/elements/unisense.d.ts +4 -2
- package/dist/elements/unisense.d.ts.map +1 -1
- package/dist/elements/unisense.js +11 -2
- package/dist/elements/unisense.js.map +1 -1
- package/dist/hid/command.d.ts +4 -3
- package/dist/hid/command.d.ts.map +1 -1
- package/dist/hid/dualsense_hid.d.ts +24 -7
- package/dist/hid/dualsense_hid.d.ts.map +1 -1
- package/dist/hid/dualsense_hid.js +96 -7
- package/dist/hid/dualsense_hid.js.map +1 -1
- package/dist/hid/hid_provider.d.ts +7 -1
- package/dist/hid/hid_provider.d.ts.map +1 -1
- package/dist/hid/hid_provider.js +8 -0
- package/dist/hid/hid_provider.js.map +1 -1
- package/dist/hid/node_hid_provider.d.ts +1 -0
- package/dist/hid/node_hid_provider.d.ts.map +1 -1
- package/dist/hid/node_hid_provider.js +6 -0
- package/dist/hid/node_hid_provider.js.map +1 -1
- package/dist/hid/web_hid_provider.d.ts +2 -1
- package/dist/hid/web_hid_provider.d.ts.map +1 -1
- package/dist/hid/web_hid_provider.js +6 -1
- package/dist/hid/web_hid_provider.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/dualsense.ts +28 -0
- package/src/elements/mute.ts +1 -2
- package/src/elements/trigger.ts +0 -3
- package/src/elements/unisense.ts +11 -3
- package/src/hid/command.ts +5 -3
- package/src/hid/dualsense_hid.ts +118 -8
- package/src/hid/hid_provider.ts +15 -1
- package/src/hid/node_hid_provider.ts +8 -0
- package/src/hid/web_hid_provider.ts +6 -1
- package/src/index.ts +0 -2
- package/dist/haptics/haptic.d.ts +0 -5
- package/dist/haptics/haptic.d.ts.map +0 -1
- package/dist/haptics/haptic.js +0 -10
- package/dist/haptics/haptic.js.map +0 -1
- package/dist/haptics/index.d.ts +0 -5
- package/dist/haptics/index.d.ts.map +0 -1
- package/dist/haptics/index.js +0 -21
- package/dist/haptics/index.js.map +0 -1
- package/dist/indicators/index.d.ts +0 -5
- package/dist/indicators/index.d.ts.map +0 -1
- package/dist/indicators/index.js +0 -21
- package/dist/indicators/index.js.map +0 -1
- package/dist/indicators/indicator.d.ts +0 -7
- package/dist/indicators/indicator.d.ts.map +0 -1
- package/dist/indicators/indicator.js +0 -22
- package/dist/indicators/indicator.js.map +0 -1
- package/src/haptics/haptic.ts +0 -5
- package/src/haptics/index.ts +0 -5
- package/src/indicators/index.ts +0 -5
- package/src/indicators/indicator.ts +0 -25
package/README.md
CHANGED
|
@@ -110,6 +110,24 @@ for await (const { pressure } of controller.left.trigger) {
|
|
|
110
110
|
}
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
+
### Rumble Support (node-hid only)
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
controller.rumble(1.0); // 100% rumble intensity
|
|
117
|
+
controller.left.rumble(0.5); // 50% rumble intensity on the left
|
|
118
|
+
console.log(controller.left.rumble()); // Prints 0.5
|
|
119
|
+
console.log(controller.right.rumble()); // Prints 1
|
|
120
|
+
controller.rumble(0); // Stop rumbling
|
|
121
|
+
|
|
122
|
+
controller.rumble(true); // Another way to set 100% intensity
|
|
123
|
+
controller.rumble(false); // Another way to stop rumbling
|
|
124
|
+
|
|
125
|
+
// Control right rumble intensity with the right trigger
|
|
126
|
+
controller.right.trigger.on("change", (trigger) => {
|
|
127
|
+
controller.right.rumble(trigger.magnitude);
|
|
128
|
+
});
|
|
129
|
+
```
|
|
130
|
+
|
|
113
131
|
### With React
|
|
114
132
|
|
|
115
133
|
Creating a controller interface with `new Dualsense()` is much too expensive to be done at render time. You can create a [Context](https://reactjs.org/docs/context.html) to share the controller state with your components:
|
package/dist/dualsense.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Momentary, Dpad, DpadParams, Mute, Unisense, UnisenseParams, Touchpad } from "./elements";
|
|
2
2
|
import { Input, InputParams } from "./input";
|
|
3
3
|
import { DualsenseHID } from "./hid";
|
|
4
|
+
import { Intensity } from "./math";
|
|
4
5
|
/** Settings for your Dualsense controller and each of its inputs */
|
|
5
6
|
export interface DualsenseParams extends InputParams {
|
|
6
7
|
/** Sets the source for HID events. Default: decide automatically */
|
|
@@ -63,6 +64,9 @@ export declare class Dualsense extends Input<Dualsense> {
|
|
|
63
64
|
readonly connection: Momentary;
|
|
64
65
|
get active(): boolean;
|
|
65
66
|
constructor(params?: DualsenseParams);
|
|
67
|
+
private get rumbleIntensity();
|
|
68
|
+
/** Check or adjust rumble intensity evenly across both sides of the controller */
|
|
69
|
+
rumble(intensity?: Intensity): number;
|
|
66
70
|
/** Distributes HID event values to the controller's inputs */
|
|
67
71
|
private processHID;
|
|
68
72
|
}
|
package/dist/dualsense.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense.d.ts","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAY,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAEL,YAAY,EAGb,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"dualsense.d.ts","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAY,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAEL,YAAY,EAGb,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,oEAAoE;AACpE,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,oEAAoE;IACpE,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,0CAA0C;IAC1C,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,mCAAmC;IACnC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qCAAqC;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,qCAAqC;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,qCAAqC;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oCAAoC;IACpC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,wCAAwC;AACxC,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,KAAK,EAAE,SAAS,CAAQ;IAExC,6BAA6B;IAC7B,SAAgB,EAAE,EAAE,SAAS,CAAC;IAC9B,uCAAuC;IACvC,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,yBAAyB;IACzB,SAAgB,OAAO,EAAE,SAAS,CAAC;IACnC,wBAAwB;IACxB,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,0BAA0B;IAC1B,SAAgB,QAAQ,EAAE,SAAS,CAAC;IACpC,wBAAwB;IACxB,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,6BAA6B;IAC7B,SAAgB,KAAK,EAAE,SAAS,CAAC;IACjC,wBAAwB;IACxB,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,0CAA0C;IAC1C,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,gDAAgD;IAChD,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,iDAAiD;IACjD,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,+CAA+C;IAC/C,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,kEAAkE;IAClE,SAAgB,GAAG,EAAE,YAAY,CAAC;IAElC,6EAA6E;IAC7E,SAAgB,UAAU,EAAE,SAAS,CAAC;IAEtC,IAAW,MAAM,IAAI,OAAO,CAI3B;gBAEW,MAAM,GAAE,eAAoB;IAsGxC,OAAO,KAAK,eAAe,GAE1B;IAED,kFAAkF;IAC3E,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM;IAM5C,8DAA8D;IAC9D,OAAO,CAAC,UAAU;CAwCnB"}
|
package/dist/dualsense.js
CHANGED
|
@@ -82,12 +82,34 @@ class Dualsense extends input_1.Input {
|
|
|
82
82
|
this.hid.register((state) => {
|
|
83
83
|
this.processHID(state);
|
|
84
84
|
});
|
|
85
|
+
/** Refresh connection state */
|
|
85
86
|
setInterval(() => {
|
|
86
87
|
const { provider: { connected }, } = this.hid;
|
|
87
88
|
this.connection[input_1.InputSet](connected);
|
|
88
89
|
if (!connected)
|
|
89
90
|
this.hid.provider.connect();
|
|
90
91
|
}, 200);
|
|
92
|
+
/** Refresh rumble state */
|
|
93
|
+
const rumbleMemo = { left: -1, right: -1 };
|
|
94
|
+
setInterval(() => {
|
|
95
|
+
const left = this.left.rumble();
|
|
96
|
+
const right = this.right.rumble();
|
|
97
|
+
if (this.connection.active &&
|
|
98
|
+
(left !== rumbleMemo.left || right !== rumbleMemo.right)) {
|
|
99
|
+
this.hid.setRumble(left * 255, right * 255);
|
|
100
|
+
rumbleMemo.left = left;
|
|
101
|
+
rumbleMemo.right = right;
|
|
102
|
+
}
|
|
103
|
+
}, 1000 / 30);
|
|
104
|
+
}
|
|
105
|
+
get rumbleIntensity() {
|
|
106
|
+
return (this.left.rumble() + this.right.rumble()) / 2;
|
|
107
|
+
}
|
|
108
|
+
/** Check or adjust rumble intensity evenly across both sides of the controller */
|
|
109
|
+
rumble(intensity) {
|
|
110
|
+
this.left.rumble(intensity);
|
|
111
|
+
this.right.rumble(intensity);
|
|
112
|
+
return this.rumbleIntensity;
|
|
91
113
|
}
|
|
92
114
|
/** Distributes HID event values to the controller's inputs */
|
|
93
115
|
processHID(state) {
|
package/dist/dualsense.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":";;;AAAA,yCAQoB;AACpB,mCAAuD;AACvD,+BAKe;
|
|
1
|
+
{"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"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"}
|
package/dist/elements/mute.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mute.d.ts","sourceRoot":"","sources":["../../src/elements/mute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mute.d.ts","sourceRoot":"","sources":["../../src/elements/mute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,IAAK,SAAQ,SAAS;IACjC,SAAgB,SAAS,KAAM;IAC/B,SAAgB,MAAM,YAAgD;CACvE"}
|
package/dist/elements/mute.js
CHANGED
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Mute = void 0;
|
|
4
4
|
const momentary_1 = require("./momentary");
|
|
5
|
-
const indicators_1 = require("../indicators");
|
|
6
5
|
class Mute extends momentary_1.Momentary {
|
|
7
6
|
constructor() {
|
|
8
7
|
super(...arguments);
|
|
9
|
-
this.indicator =
|
|
8
|
+
this.indicator = {};
|
|
10
9
|
this.status = new momentary_1.Momentary({ icon: "!", name: "Status" });
|
|
11
10
|
}
|
|
12
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mute.js","sourceRoot":"","sources":["../../src/elements/mute.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;
|
|
1
|
+
{"version":3,"file":"mute.js","sourceRoot":"","sources":["../../src/elements/mute.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,MAAa,IAAK,SAAQ,qBAAS;IAAnC;;QACkB,cAAS,GAAG,EAAE,CAAC;QACf,WAAM,GAAG,IAAI,qBAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;CAAA;AAHD,oBAGC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Haptic } from "../haptics";
|
|
2
1
|
import { Input } from "../input";
|
|
3
2
|
import { Magnitude } from "../math";
|
|
4
3
|
import { Momentary } from "./momentary";
|
|
@@ -9,6 +8,5 @@ export declare class Trigger extends Input<Magnitude> {
|
|
|
9
8
|
get pressure(): Magnitude;
|
|
10
9
|
get magnitude(): Magnitude;
|
|
11
10
|
changes(state: Magnitude): boolean;
|
|
12
|
-
readonly haptic: Haptic;
|
|
13
11
|
}
|
|
14
12
|
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/elements/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/elements/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,OAAQ,SAAQ,KAAK,CAAC,SAAS,CAAC;IACpC,KAAK,EAAE,SAAS,CAAK;IAErB,MAAM,EAAE,SAAS,CAAmB;IAE3C,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,QAAQ,IAAI,SAAS,CAE/B;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;IAEM,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;CAG1C"}
|
package/dist/elements/trigger.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Trigger = void 0;
|
|
4
|
-
const haptics_1 = require("../haptics");
|
|
5
4
|
const input_1 = require("../input");
|
|
6
5
|
const momentary_1 = require("./momentary");
|
|
7
6
|
class Trigger extends input_1.Input {
|
|
@@ -9,7 +8,6 @@ class Trigger extends input_1.Input {
|
|
|
9
8
|
super(...arguments);
|
|
10
9
|
this.state = 0;
|
|
11
10
|
this.button = new momentary_1.Momentary();
|
|
12
|
-
this.haptic = new haptics_1.Haptic();
|
|
13
11
|
}
|
|
14
12
|
get active() {
|
|
15
13
|
return this.state > 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/elements/trigger.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/elements/trigger.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAEjC,2CAAwC;AAExC,MAAa,OAAQ,SAAQ,aAAgB;IAA7C;;QACS,UAAK,GAAc,CAAC,CAAC;QAErB,WAAM,GAAc,IAAI,qBAAS,EAAE,CAAC;IAiB7C,CAAC;IAfC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,OAAO,CAAC,KAAgB;QAC7B,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;IAC9B,CAAC;CACF;AApBD,0BAoBC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Trigger } from "./trigger";
|
|
2
2
|
import { Momentary } from "./momentary";
|
|
3
3
|
import { Analog, AnalogParams } from "./analog";
|
|
4
|
-
import { Haptic } from "../haptics";
|
|
5
4
|
import { Input, InputParams } from "../input";
|
|
5
|
+
import { Intensity } from "math";
|
|
6
6
|
/** Settings for the trigger, bumpers, and analog stick on one side of the controller */
|
|
7
7
|
export interface UnisenseParams extends InputParams {
|
|
8
8
|
/** Settings for a trigger */
|
|
@@ -18,8 +18,10 @@ export declare class Unisense extends Input<Unisense> {
|
|
|
18
18
|
readonly trigger: Trigger;
|
|
19
19
|
readonly bumper: Momentary;
|
|
20
20
|
readonly analog: Analog;
|
|
21
|
-
|
|
21
|
+
private rumbleIntensity;
|
|
22
22
|
constructor(params?: UnisenseParams);
|
|
23
|
+
/** Check or adjust rumble intensity for one side of the controller */
|
|
24
|
+
rumble(intensity?: Intensity | boolean): Intensity;
|
|
23
25
|
get active(): boolean;
|
|
24
26
|
}
|
|
25
27
|
//# sourceMappingURL=unisense.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unisense.d.ts","sourceRoot":"","sources":["../../src/elements/unisense.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"unisense.d.ts","sourceRoot":"","sources":["../../src/elements/unisense.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,wFAAwF;AACxF,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,6BAA6B;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mCAAmC;IACnC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAGD,iCAAiC;AACjC,qBAAa,QAAS,SAAQ,KAAK,CAAC,QAAQ,CAAC;IAC3C,SAAgB,KAAK,EAAE,IAAI,CAAQ;IAEnC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,eAAe,CAAgB;gBAE3B,MAAM,GAAE,cAAmB;IAoBvC,sEAAsE;IAC/D,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAQzD,IAAW,MAAM,IAAI,OAAO,CAE3B;CACF"}
|
|
@@ -4,7 +4,6 @@ exports.Unisense = void 0;
|
|
|
4
4
|
const trigger_1 = require("./trigger");
|
|
5
5
|
const momentary_1 = require("./momentary");
|
|
6
6
|
const analog_1 = require("./analog");
|
|
7
|
-
const haptics_1 = require("../haptics");
|
|
8
7
|
const input_1 = require("../input");
|
|
9
8
|
// The name "Dualsense" clearly implies a composition of two Unisense elements 🤔
|
|
10
9
|
/** One half of the controller */
|
|
@@ -12,6 +11,7 @@ class Unisense extends input_1.Input {
|
|
|
12
11
|
constructor(params = {}) {
|
|
13
12
|
super(params);
|
|
14
13
|
this.state = this;
|
|
14
|
+
this.rumbleIntensity = 0;
|
|
15
15
|
const { trigger, bumper, analog } = params;
|
|
16
16
|
this.trigger = new trigger_1.Trigger({
|
|
17
17
|
icon: "2",
|
|
@@ -27,7 +27,16 @@ class Unisense extends input_1.Input {
|
|
|
27
27
|
deadzone: 8 / 128,
|
|
28
28
|
...analog,
|
|
29
29
|
});
|
|
30
|
-
|
|
30
|
+
}
|
|
31
|
+
/** Check or adjust rumble intensity for one side of the controller */
|
|
32
|
+
rumble(intensity) {
|
|
33
|
+
if (typeof intensity === "number")
|
|
34
|
+
this.rumbleIntensity = Math.max(Math.min(intensity, 1), 0);
|
|
35
|
+
if (intensity === false)
|
|
36
|
+
this.rumbleIntensity = 0;
|
|
37
|
+
if (intensity === true)
|
|
38
|
+
this.rumbleIntensity = 1;
|
|
39
|
+
return this.rumbleIntensity;
|
|
31
40
|
}
|
|
32
41
|
get active() {
|
|
33
42
|
return this.trigger.active || this.bumper.active || this.analog.active;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unisense.js","sourceRoot":"","sources":["../../src/elements/unisense.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,2CAAwC;AACxC,qCAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"unisense.js","sourceRoot":"","sources":["../../src/elements/unisense.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,2CAAwC;AACxC,qCAAgD;AAChD,oCAA8C;AAa9C,iFAAiF;AACjF,iCAAiC;AACjC,MAAa,QAAS,SAAQ,aAAe;IAQ3C,YAAY,SAAyB,EAAE;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC;QARA,UAAK,GAAS,IAAI,CAAC;QAK3B,oBAAe,GAAc,CAAC,CAAC;QAIrC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAE3C,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,CAAC,GAAG,GAAG;YAClB,GAAG,OAAO;SACX,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC,GAAG,GAAG;YAClB,QAAQ,EAAE,CAAC,GAAG,GAAG;YACjB,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IAC/D,MAAM,CAAC,SAA+B;QAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,IAAI,SAAS,KAAK,KAAK;YAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAClD,IAAI,SAAS,KAAK,IAAI;YAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACzE,CAAC;CACF;AAxCD,4BAwCC"}
|
package/dist/hid/command.d.ts
CHANGED
|
@@ -52,19 +52,20 @@ export declare const enum CommandScopeB {
|
|
|
52
52
|
PlayerLeds = 16,
|
|
53
53
|
MotorPower = 64
|
|
54
54
|
}
|
|
55
|
+
export type CommandScope = CommandScopeA | CommandScopeB;
|
|
55
56
|
/** Byte value, 0 to 255 */
|
|
56
57
|
type Intensity = number;
|
|
57
58
|
/** 48 byte packet that is sent to the controller to update LEDs, rumble, etc */
|
|
58
|
-
export interface
|
|
59
|
+
export interface DualsenseCommand extends Uint8Array {
|
|
59
60
|
/** Packet type */
|
|
60
61
|
[0]: 0x2;
|
|
61
62
|
/** Command effect limited to these bits */
|
|
62
63
|
[1]: CommandScopeA | 0xff;
|
|
63
64
|
/** Command effect also limited to these bits */
|
|
64
65
|
[2]: CommandScopeB | (0x1 | 0x2 | 0x4 | 0x10 | 0x40);
|
|
65
|
-
/** Left rumble intensity */
|
|
66
|
-
[3]: Intensity;
|
|
67
66
|
/** Right rumble intensity */
|
|
67
|
+
[3]: Intensity;
|
|
68
|
+
/** Left rumble intensity */
|
|
68
69
|
[4]: Intensity;
|
|
69
70
|
[5]: 0;
|
|
70
71
|
[6]: 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/hid/command.ts"],"names":[],"mappings":"AAAA,0BAAkB,UAAU;IAC1B,GAAG,IAAM;IACT,mBAAmB,IAAM;IACzB,eAAe,IAAM;IACrB,IAAI,IAAI;CACT;AAED,0BAAkB,YAAY;IAC5B,GAAG,IAAM;IACT,QAAQ,IAAM;IACd,OAAO,IAAM;CACd;AAED,0BAAkB,UAAU;IAC1B,IAAI,IAAM;IACV,MAAM,IAAM;IACZ,GAAG,IAAM;CACV;AAED,0BAAkB,QAAQ;IACxB,OAAO,IAAI;IACX,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,GAAG,KAAK;CACT;AAED,0BAAkB,WAAW;IAC3B,oBAAoB;IACpB,GAAG,IAAM;IACT,4BAA4B;IAC5B,KAAK,IAAM;IACX,KAAK,IAAM;IACX,WAAW,MAAO;IAElB,OAAO,KAAK;IACZ,OAAO,IAAI;IACX,QAAQ,KAAK;IACb,OAAO,KAAK;IACZ,OAAO,IAAI;IACX,QAAQ,KAAK;CACd;AAED,0BAAkB,aAAa;IAC7B,YAAY,IAAO;IACnB,aAAa,IAAO;IACpB,oBAAoB,IAAO;IAC3B,mBAAmB,IAAO;IAC1B,WAAW,KAAO;IAClB,aAAa,KAAO;IACpB,gBAAgB,KAAO;CACxB;AAED,0BAAkB,aAAa;IAC7B,aAAa,IAAO;IACpB,IAAI,IAAO;IACX,YAAY,IAAO;IACnB,WAAW,IAAO;IAClB,UAAU,KAAO;IACjB,UAAU,KAAO;CAClB;AAED,2BAA2B;AAC3B,KAAK,SAAS,GAAG,MAAM,CAAC;AAExB,gFAAgF;AAChF,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,kBAAkB;IAClB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACT,2CAA2C;IAC3C,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACrD,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/hid/command.ts"],"names":[],"mappings":"AAAA,0BAAkB,UAAU;IAC1B,GAAG,IAAM;IACT,mBAAmB,IAAM;IACzB,eAAe,IAAM;IACrB,IAAI,IAAI;CACT;AAED,0BAAkB,YAAY;IAC5B,GAAG,IAAM;IACT,QAAQ,IAAM;IACd,OAAO,IAAM;CACd;AAED,0BAAkB,UAAU;IAC1B,IAAI,IAAM;IACV,MAAM,IAAM;IACZ,GAAG,IAAM;CACV;AAED,0BAAkB,QAAQ;IACxB,OAAO,IAAI;IACX,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,GAAG,KAAK;CACT;AAED,0BAAkB,WAAW;IAC3B,oBAAoB;IACpB,GAAG,IAAM;IACT,4BAA4B;IAC5B,KAAK,IAAM;IACX,KAAK,IAAM;IACX,WAAW,MAAO;IAElB,OAAO,KAAK;IACZ,OAAO,IAAI;IACX,QAAQ,KAAK;IACb,OAAO,KAAK;IACZ,OAAO,IAAI;IACX,QAAQ,KAAK;CACd;AAED,0BAAkB,aAAa;IAC7B,YAAY,IAAO;IACnB,aAAa,IAAO;IACpB,oBAAoB,IAAO;IAC3B,mBAAmB,IAAO;IAC1B,WAAW,KAAO;IAClB,aAAa,KAAO;IACpB,gBAAgB,KAAO;CACxB;AAED,0BAAkB,aAAa;IAC7B,aAAa,IAAO;IACpB,IAAI,IAAO;IACX,YAAY,IAAO;IACnB,WAAW,IAAO;IAClB,UAAU,KAAO;IACjB,UAAU,KAAO;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;AAEzD,2BAA2B;AAC3B,KAAK,SAAS,GAAG,MAAM,CAAC;AAExB,gFAAgF;AAChF,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,kBAAkB;IAClB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACT,2CAA2C;IAC3C,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACrD,6BAA6B;IAC7B,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IACf,4BAA4B;IAC5B,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IACf,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACP,+BAA+B;IAC/B,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IACf,uDAAuD;IACvD,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;IAClB,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;IAClB,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;IACjB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC;IACnB,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;IACjB,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;IACf,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;CACb"}
|
|
@@ -1,23 +1,40 @@
|
|
|
1
|
+
import { TriggerMode, PlayerID } from "./command";
|
|
1
2
|
import { HIDProvider, DualsenseHIDState } from "./hid_provider";
|
|
2
3
|
export type HIDCallback = (state: DualsenseHIDState) => void;
|
|
3
4
|
export type ErrorCallback = (error: Error) => void;
|
|
4
5
|
/** Coordinates a HIDProvider and tracks the latest HID state */
|
|
5
6
|
export declare class DualsenseHID {
|
|
6
7
|
readonly provider: HIDProvider;
|
|
8
|
+
/** Subscribers waiting for HID state updates */
|
|
7
9
|
private readonly subscribers;
|
|
10
|
+
/** Subscribers waiting for error updates */
|
|
8
11
|
private readonly errorSubscribers;
|
|
12
|
+
/** Queue of pending HID commands */
|
|
13
|
+
private pendingCommands;
|
|
14
|
+
/** Most recent HID state of the device */
|
|
9
15
|
state: DualsenseHIDState;
|
|
10
|
-
constructor(provider: HIDProvider);
|
|
11
|
-
/**
|
|
12
|
-
* Register a handler for HID state updates.
|
|
13
|
-
*/
|
|
16
|
+
constructor(provider: HIDProvider, refreshRate?: number);
|
|
17
|
+
/** Register a handler for HID state updates */
|
|
14
18
|
register(callback: HIDCallback): void;
|
|
15
|
-
/**
|
|
16
|
-
* Cancel a previously registered handler.
|
|
17
|
-
*/
|
|
19
|
+
/** Cancel a previously registered handler */
|
|
18
20
|
unregister(callback: HIDCallback): void;
|
|
21
|
+
/** Add a subscriber for errors */
|
|
19
22
|
on(type: "error" | string, callback: ErrorCallback): void;
|
|
23
|
+
/** Update the HID state and pass it along to all state subscribers */
|
|
20
24
|
private set;
|
|
25
|
+
/** Pass errors along to all error subscribers */
|
|
21
26
|
private handleError;
|
|
27
|
+
/** Condense all pending commands into one HID feature report */
|
|
28
|
+
private static buildFeatureReport;
|
|
29
|
+
/** Set intensity for left and right rumbles */
|
|
30
|
+
setRumble(left: number, right: number): void;
|
|
31
|
+
/** Set left trigger resistance and behavior */
|
|
32
|
+
setLeftTriggerFeedback(mode: TriggerMode, forces: number[]): void;
|
|
33
|
+
/** Set right trigger resistance and behavior */
|
|
34
|
+
setRightTriggerFeedback(mode: TriggerMode, forces: number[]): void;
|
|
35
|
+
/** Set microphone LED brightness */
|
|
36
|
+
setMicrophoneLED(brightness: number): void;
|
|
37
|
+
/** Set player ID LEDs */
|
|
38
|
+
setPlayerId(id: PlayerID): void;
|
|
22
39
|
}
|
|
23
40
|
//# sourceMappingURL=dualsense_hid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAW,MAAM,gBAAgB,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAW,MAAM,gBAAgB,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAenD,gEAAgE;AAChE,qBAAa,YAAY;IAoDX,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAnD1C,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B;IAC7D,oCAAoC;IACpC,OAAO,CAAC,eAAe,CAAsB;IAC7C,0CAA0C;IACnC,KAAK,EAAE,iBAAiB,CA0C7B;gBAEmB,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAE,MAAW;IAmBpE,+CAA+C;IACxC,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAI5C,6CAA6C;IACtC,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAI9C,kCAAkC;IAC3B,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIhE,sEAAsE;IACtE,OAAO,CAAC,GAAG;IAKX,iDAAiD;IACjD,OAAO,CAAC,WAAW;IAInB,gEAAgE;IAChE,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAsBjC,+CAA+C;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAiBnD,+CAA+C;IACxC,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAUxE,gDAAgD;IACzC,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAUzE,oCAAoC;IAC7B,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOjD,yBAAyB;IAClB,WAAW,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;CAMvC"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DualsenseHID = void 0;
|
|
4
|
+
const SCOPE_A = 1;
|
|
5
|
+
const SCOPE_B = 2;
|
|
4
6
|
/** Coordinates a HIDProvider and tracks the latest HID state */
|
|
5
7
|
class DualsenseHID {
|
|
6
|
-
constructor(provider) {
|
|
8
|
+
constructor(provider, refreshRate = 30) {
|
|
7
9
|
this.provider = provider;
|
|
10
|
+
/** Subscribers waiting for HID state updates */
|
|
8
11
|
this.subscribers = new Set();
|
|
12
|
+
/** Subscribers waiting for error updates */
|
|
9
13
|
this.errorSubscribers = new Set();
|
|
14
|
+
/** Queue of pending HID commands */
|
|
15
|
+
this.pendingCommands = [];
|
|
16
|
+
/** Most recent HID state of the device */
|
|
10
17
|
this.state = {
|
|
11
18
|
["LX" /* InputId.LeftAnalogX */]: 0,
|
|
12
19
|
["LY" /* InputId.LeftAnalogY */]: 0,
|
|
@@ -52,30 +59,112 @@ class DualsenseHID {
|
|
|
52
59
|
};
|
|
53
60
|
provider.onData = this.set.bind(this);
|
|
54
61
|
provider.onError = this.handleError.bind(this);
|
|
62
|
+
setInterval(() => {
|
|
63
|
+
if (this.pendingCommands.length > 0) {
|
|
64
|
+
(async () => {
|
|
65
|
+
const command = [...this.pendingCommands];
|
|
66
|
+
this.pendingCommands = [];
|
|
67
|
+
await provider.write(DualsenseHID.buildFeatureReport(command));
|
|
68
|
+
})().catch((err) => {
|
|
69
|
+
this.handleError(new Error(`HID write failed: ${JSON.stringify(err)}`));
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}, 1000 / refreshRate);
|
|
55
73
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Register a handler for HID state updates.
|
|
58
|
-
*/
|
|
74
|
+
/** Register a handler for HID state updates */
|
|
59
75
|
register(callback) {
|
|
60
76
|
this.subscribers.add(callback);
|
|
61
77
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Cancel a previously registered handler.
|
|
64
|
-
*/
|
|
78
|
+
/** Cancel a previously registered handler */
|
|
65
79
|
unregister(callback) {
|
|
66
80
|
this.subscribers.delete(callback);
|
|
67
81
|
}
|
|
82
|
+
/** Add a subscriber for errors */
|
|
68
83
|
on(type, callback) {
|
|
69
84
|
if (type === "error")
|
|
70
85
|
this.errorSubscribers.add(callback);
|
|
71
86
|
}
|
|
87
|
+
/** Update the HID state and pass it along to all state subscribers */
|
|
72
88
|
set(state) {
|
|
73
89
|
this.state = state;
|
|
74
90
|
this.subscribers.forEach((callback) => callback(state));
|
|
75
91
|
}
|
|
92
|
+
/** Pass errors along to all error subscribers */
|
|
76
93
|
handleError(error) {
|
|
77
94
|
this.errorSubscribers.forEach((callback) => callback(error));
|
|
78
95
|
}
|
|
96
|
+
/** Condense all pending commands into one HID feature report */
|
|
97
|
+
static buildFeatureReport(events) {
|
|
98
|
+
const report = new Uint8Array(46).fill(0);
|
|
99
|
+
report[0] = 0x2;
|
|
100
|
+
report[1] = events
|
|
101
|
+
.filter(({ scope: { index } }) => index === SCOPE_A)
|
|
102
|
+
.reduce((acc, { scope: { value } }) => {
|
|
103
|
+
return acc | value;
|
|
104
|
+
}, 0x00);
|
|
105
|
+
report[2] = events
|
|
106
|
+
.filter(({ scope: { index } }) => index === SCOPE_B)
|
|
107
|
+
.reduce((acc, { scope: { value } }) => {
|
|
108
|
+
return acc | value;
|
|
109
|
+
}, 0x00);
|
|
110
|
+
events.forEach(({ values }) => {
|
|
111
|
+
values.forEach(({ index, value }) => {
|
|
112
|
+
report[index] = value;
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
return report;
|
|
116
|
+
}
|
|
117
|
+
/** Set intensity for left and right rumbles */
|
|
118
|
+
setRumble(left, right) {
|
|
119
|
+
this.pendingCommands.push({
|
|
120
|
+
scope: {
|
|
121
|
+
index: SCOPE_A,
|
|
122
|
+
value: 2 /* CommandScopeA.PrimaryRumble */ | 1 /* CommandScopeA.HapticRumble */,
|
|
123
|
+
},
|
|
124
|
+
values: [
|
|
125
|
+
{ index: 3, value: right },
|
|
126
|
+
{ index: 4, value: left },
|
|
127
|
+
],
|
|
128
|
+
});
|
|
129
|
+
this.pendingCommands.push({
|
|
130
|
+
scope: { index: SCOPE_B, value: 64 /* CommandScopeB.MotorPower */ },
|
|
131
|
+
values: [],
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/** Set left trigger resistance and behavior */
|
|
135
|
+
setLeftTriggerFeedback(mode, forces) {
|
|
136
|
+
this.pendingCommands.push({
|
|
137
|
+
scope: { index: SCOPE_A, value: 8 /* CommandScopeA.LeftTriggerFeedback */ },
|
|
138
|
+
values: [
|
|
139
|
+
{ index: 22, value: mode },
|
|
140
|
+
...forces.map((force, index) => ({ index: 23 + index, value: force })),
|
|
141
|
+
],
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/** Set right trigger resistance and behavior */
|
|
145
|
+
setRightTriggerFeedback(mode, forces) {
|
|
146
|
+
this.pendingCommands.push({
|
|
147
|
+
scope: { index: SCOPE_A, value: 4 /* CommandScopeA.RightTriggerFeedback */ },
|
|
148
|
+
values: [
|
|
149
|
+
{ index: 11, value: mode },
|
|
150
|
+
...forces.map((force, index) => ({ index: 12 + index, value: force })),
|
|
151
|
+
],
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/** Set microphone LED brightness */
|
|
155
|
+
setMicrophoneLED(brightness) {
|
|
156
|
+
this.pendingCommands.push({
|
|
157
|
+
scope: { index: SCOPE_B, value: 1 /* CommandScopeB.MicrophoneLED */ },
|
|
158
|
+
values: [{ index: 9, value: brightness }],
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/** Set player ID LEDs */
|
|
162
|
+
setPlayerId(id) {
|
|
163
|
+
this.pendingCommands.push({
|
|
164
|
+
scope: { index: SCOPE_B, value: 16 /* CommandScopeB.PlayerLeds */ },
|
|
165
|
+
values: [{ index: 44, value: id }],
|
|
166
|
+
});
|
|
167
|
+
}
|
|
79
168
|
}
|
|
80
169
|
exports.DualsenseHID = DualsenseHID;
|
|
81
170
|
//# sourceMappingURL=dualsense_hid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,8 +65,14 @@ export declare abstract class HIDProvider {
|
|
|
65
65
|
/** Returns true if a device is currently connected and working */
|
|
66
66
|
abstract get connected(): boolean;
|
|
67
67
|
/** Returns true if a device is connected wirelessly */
|
|
68
|
-
abstract
|
|
68
|
+
abstract wireless: boolean;
|
|
69
69
|
/** Converts the HID report to a simpler format */
|
|
70
70
|
abstract process(input: unknown): DualsenseHIDState;
|
|
71
|
+
/** Write to the HID device */
|
|
72
|
+
abstract write(data: Uint8Array): Promise<void>;
|
|
73
|
+
/** Treat the device as if it were connected over Bluetooth */
|
|
74
|
+
setWireless(): void;
|
|
75
|
+
/** Treat the device as if it were connected over USB */
|
|
76
|
+
setWired(): void;
|
|
71
77
|
}
|
|
72
78
|
//# sourceMappingURL=hid_provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":"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"}
|
package/dist/hid/hid_provider.js
CHANGED
|
@@ -34,6 +34,14 @@ class HIDProvider {
|
|
|
34
34
|
/** Callback to use for Error events */
|
|
35
35
|
this.onError = () => { };
|
|
36
36
|
}
|
|
37
|
+
/** Treat the device as if it were connected over Bluetooth */
|
|
38
|
+
setWireless() {
|
|
39
|
+
this.wireless = true;
|
|
40
|
+
}
|
|
41
|
+
/** Treat the device as if it were connected over USB */
|
|
42
|
+
setWired() {
|
|
43
|
+
this.wireless = false;
|
|
44
|
+
}
|
|
37
45
|
}
|
|
38
46
|
exports.HIDProvider = HIDProvider;
|
|
39
47
|
/** HID vendorId for a Dualsense controller */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hid_provider.js","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,wCAAsB;AAEtB,0CAA0C;AAC1C,SAAgB,OAAO,CAAC,KAAa,EAAE,MAAc,GAAG;IACtD,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAFD,0BAEC;AAED,2CAA2C;AAC3C,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAFD,gCAEC;AA+CD,sEAAsE;AACtE,MAAsB,WAAW;IAAjC;QAME,2CAA2C;QACpC,WAAM,GAAuC,GAAG,EAAE,GAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"hid_provider.js","sourceRoot":"","sources":["../../src/hid/hid_provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,wCAAsB;AAEtB,0CAA0C;AAC1C,SAAgB,OAAO,CAAC,KAAa,EAAE,MAAc,GAAG;IACtD,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAFD,0BAEC;AAED,2CAA2C;AAC3C,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAFD,gCAEC;AA+CD,sEAAsE;AACtE,MAAsB,WAAW;IAAjC;QAME,2CAA2C;QACpC,WAAM,GAAuC,GAAG,EAAE,GAAE,CAAC,CAAC;QAE7D,uCAAuC;QAChC,YAAO,GAA2B,GAAG,EAAE,GAAE,CAAC,CAAC;IA6BpD,CAAC;IATC,8DAA8D;IAC9D,WAAW;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,wDAAwD;IACxD,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;;AAtCH,kCAuCC;AAtCC,8CAA8C;AAC9B,oBAAQ,GAAW,IAAI,CAAC;AACxC,+CAA+C;AAC/B,qBAAS,GAAW,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/node_hid_provider.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"node_hid_provider.d.ts","sourceRoot":"","sources":["../../src/hid/node_hid_provider.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;AASxB,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAU;IAClB,QAAQ,EAAE,OAAO,CAAS;IAE3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C9B,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,UAAU,IAAI,IAAI;IASlB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;CA2D3C"}
|
|
@@ -54,6 +54,12 @@ class NodeHIDProvider extends hid_provider_1.HIDProvider {
|
|
|
54
54
|
this.onError(new Error(`Could not import 'node-hid'. Did you add it?\nError: ${err instanceof Error ? err.message : "???"}`));
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
+
write(data) {
|
|
58
|
+
if (!this.device)
|
|
59
|
+
return Promise.resolve();
|
|
60
|
+
this.device.write(Array.from(data));
|
|
61
|
+
return Promise.resolve();
|
|
62
|
+
}
|
|
57
63
|
get connected() {
|
|
58
64
|
return this.device !== undefined;
|
|
59
65
|
}
|