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.
Files changed (70) hide show
  1. package/README.md +18 -0
  2. package/dist/dualsense.d.ts +4 -0
  3. package/dist/dualsense.d.ts.map +1 -1
  4. package/dist/dualsense.js +22 -0
  5. package/dist/dualsense.js.map +1 -1
  6. package/dist/elements/mute.d.ts +1 -2
  7. package/dist/elements/mute.d.ts.map +1 -1
  8. package/dist/elements/mute.js +1 -2
  9. package/dist/elements/mute.js.map +1 -1
  10. package/dist/elements/trigger.d.ts +0 -2
  11. package/dist/elements/trigger.d.ts.map +1 -1
  12. package/dist/elements/trigger.js +0 -2
  13. package/dist/elements/trigger.js.map +1 -1
  14. package/dist/elements/unisense.d.ts +4 -2
  15. package/dist/elements/unisense.d.ts.map +1 -1
  16. package/dist/elements/unisense.js +11 -2
  17. package/dist/elements/unisense.js.map +1 -1
  18. package/dist/hid/command.d.ts +4 -3
  19. package/dist/hid/command.d.ts.map +1 -1
  20. package/dist/hid/dualsense_hid.d.ts +24 -7
  21. package/dist/hid/dualsense_hid.d.ts.map +1 -1
  22. package/dist/hid/dualsense_hid.js +96 -7
  23. package/dist/hid/dualsense_hid.js.map +1 -1
  24. package/dist/hid/hid_provider.d.ts +7 -1
  25. package/dist/hid/hid_provider.d.ts.map +1 -1
  26. package/dist/hid/hid_provider.js +8 -0
  27. package/dist/hid/hid_provider.js.map +1 -1
  28. package/dist/hid/node_hid_provider.d.ts +1 -0
  29. package/dist/hid/node_hid_provider.d.ts.map +1 -1
  30. package/dist/hid/node_hid_provider.js +6 -0
  31. package/dist/hid/node_hid_provider.js.map +1 -1
  32. package/dist/hid/web_hid_provider.d.ts +2 -1
  33. package/dist/hid/web_hid_provider.d.ts.map +1 -1
  34. package/dist/hid/web_hid_provider.js +6 -1
  35. package/dist/hid/web_hid_provider.js.map +1 -1
  36. package/dist/index.d.ts +0 -2
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +0 -2
  39. package/dist/index.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/dualsense.ts +28 -0
  42. package/src/elements/mute.ts +1 -2
  43. package/src/elements/trigger.ts +0 -3
  44. package/src/elements/unisense.ts +11 -3
  45. package/src/hid/command.ts +5 -3
  46. package/src/hid/dualsense_hid.ts +118 -8
  47. package/src/hid/hid_provider.ts +15 -1
  48. package/src/hid/node_hid_provider.ts +8 -0
  49. package/src/hid/web_hid_provider.ts +6 -1
  50. package/src/index.ts +0 -2
  51. package/dist/haptics/haptic.d.ts +0 -5
  52. package/dist/haptics/haptic.d.ts.map +0 -1
  53. package/dist/haptics/haptic.js +0 -10
  54. package/dist/haptics/haptic.js.map +0 -1
  55. package/dist/haptics/index.d.ts +0 -5
  56. package/dist/haptics/index.d.ts.map +0 -1
  57. package/dist/haptics/index.js +0 -21
  58. package/dist/haptics/index.js.map +0 -1
  59. package/dist/indicators/index.d.ts +0 -5
  60. package/dist/indicators/index.d.ts.map +0 -1
  61. package/dist/indicators/index.js +0 -21
  62. package/dist/indicators/index.js.map +0 -1
  63. package/dist/indicators/indicator.d.ts +0 -7
  64. package/dist/indicators/indicator.d.ts.map +0 -1
  65. package/dist/indicators/indicator.js +0 -22
  66. package/dist/indicators/indicator.js.map +0 -1
  67. package/src/haptics/haptic.ts +0 -5
  68. package/src/haptics/index.ts +0 -5
  69. package/src/indicators/index.ts +0 -5
  70. 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:
@@ -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
  }
@@ -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;AAEf,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;IAsFxC,8DAA8D;IAC9D,OAAO,CAAC,UAAU;CAwCnB"}
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) {
@@ -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,6 @@
1
1
  import { Momentary } from "./momentary";
2
- import { Indicator } from "../indicators";
3
2
  export declare class Mute extends Momentary {
4
- readonly indicator: Indicator;
3
+ readonly indicator: {};
5
4
  readonly status: Momentary;
6
5
  }
7
6
  //# sourceMappingURL=mute.d.ts.map
@@ -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;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,qBAAa,IAAK,SAAQ,SAAS;IACjC,SAAgB,SAAS,YAAmB;IAC5C,SAAgB,MAAM,YAAgD;CACvE"}
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"}
@@ -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 = new indicators_1.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;AACxC,8CAA0C;AAE1C,MAAa,IAAK,SAAQ,qBAAS;IAAnC;;QACkB,cAAS,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC5B,WAAM,GAAG,IAAI,qBAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;CAAA;AAHD,oBAGC"}
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,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,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;IAIzC,SAAgB,MAAM,SAAgB;CACvC"}
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"}
@@ -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,wCAAoC;AACpC,oCAAiC;AAEjC,2CAAwC;AAExC,MAAa,OAAQ,SAAQ,aAAgB;IAA7C;;QACS,UAAK,GAAc,CAAC,CAAC;QAErB,WAAM,GAAc,IAAI,qBAAS,EAAE,CAAC;QAkB3B,WAAM,GAAG,IAAI,gBAAM,EAAE,CAAC;IACxC,CAAC;IAjBC,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;CAGF;AAtBD,0BAsBC"}
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
- readonly haptic: Haptic;
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,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C,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,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,MAAM,GAAE,cAAmB;IAqBvC,IAAW,MAAM,IAAI,OAAO,CAE3B;CACF"}
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
- this.haptic = new haptics_1.Haptic();
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,wCAAoC;AACpC,oCAA8C;AAY9C,iFAAiF;AACjF,iCAAiC;AACjC,MAAa,QAAS,SAAQ,aAAe;IAQ3C,YAAY,SAAyB,EAAE;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC;QARA,UAAK,GAAS,IAAI,CAAC;QASjC,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;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,EAAE,CAAC;IAC7B,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;AAhCD,4BAgCC"}
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"}
@@ -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 DualSenseCommand extends Uint8Array {
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":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/hid/command.ts"],"names":[],"mappings":"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"}
@@ -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;AAEnD,gEAAgE;AAChE,qBAAa,YAAY;IAgDX,QAAQ,CAAC,QAAQ,EAAE,WAAW;IA/C1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4B;IAEtD,KAAK,EAAE,iBAAiB,CA0C7B;gBAEmB,QAAQ,EAAE,WAAW;IAK1C;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAI5C;;OAEG;IACI,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIvC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIhE,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,WAAW;CAGpB"}
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":";;;AAKA,gEAAgE;AAChE,MAAa,YAAY;IAgDvB,YAAqB,QAAqB;QAArB,aAAQ,GAAR,QAAQ,CAAa;QA/CzB,gBAAW,GAAG,IAAI,GAAG,EAAe,CAAC;QACrC,qBAAgB,GAAG,IAAI,GAAG,EAAiB,CAAC;QAEtD,UAAK,GAAsB;YAChC,gCAAqB,EAAE,CAAC;YACxB,gCAAqB,EAAE,CAAC;YACxB,iCAAsB,EAAE,CAAC;YACzB,iCAAsB,EAAE,CAAC;YACzB,gCAAqB,EAAE,CAAC;YACxB,iCAAsB,EAAE,CAAC;YACzB,mCAAkB,EAAE,KAAK;YACzB,+BAAgB,EAAE,KAAK;YACvB,6BAAe,EAAE,KAAK;YACtB,+BAAgB,EAAE,KAAK;YACvB,2BAAc,EAAE,CAAC;YACjB,uBAAY,EAAE,KAAK;YACnB,2BAAc,EAAE,KAAK;YACrB,2BAAc,EAAE,KAAK;YACrB,6BAAe,EAAE,KAAK;YACtB,sCAA2B,EAAE,KAAK;YAClC,qCAA0B,EAAE,KAAK;YACjC,iCAAiB,EAAE,KAAK;YACxB,+BAAgB,EAAE,KAAK;YACvB,6CAA4B,EAAE,KAAK;YACnC,4CAA2B,EAAE,KAAK;YAClC,gCAAqB,EAAE,KAAK;YAC5B,+BAAoB,EAAE,KAAK;YAC3B,yCAAqB,EAAE,KAAK;YAC5B,yCAAqB,EAAE,KAAK;YAC5B,2BAAc,EAAE,KAAK;YACrB,+BAAgB,EAAE,KAAK;YACvB,iCAAiB,EAAE,CAAC;YACpB,iCAAiB,EAAE,CAAC;YACpB,6CAAuB,EAAE,KAAK;YAC9B,mCAAkB,EAAE,CAAC;YACrB,iCAAiB,EAAE,CAAC;YACpB,iCAAiB,EAAE,CAAC;YACpB,6CAAuB,EAAE,KAAK;YAC9B,mCAAkB,EAAE,CAAC;YACrB,6BAAe,EAAE,CAAC;YAClB,6BAAe,EAAE,CAAC;YAClB,6BAAe,EAAE,CAAC;YAClB,+BAAgB,EAAE,CAAC;YACnB,+BAAgB,EAAE,CAAC;YACnB,+BAAgB,EAAE,CAAC;SACpB,CAAC;QAGA,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,QAAqB;QACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,QAAqB;QACrC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,EAAE,CAAC,IAAsB,EAAE,QAAuB;QACvD,IAAI,IAAI,KAAK,OAAO;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAEO,GAAG,CAAC,KAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,WAAW,CAAC,KAAY;QAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AA/ED,oCA+EC"}
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 get wireless(): boolean;
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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"}
@@ -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;QAC7D,uCAAuC;QAChC,YAAO,GAA2B,GAAG,EAAE,GAAE,CAAC,CAAC;IAgBpD,CAAC;;AAzBD,kCAyBC;AAxBC,8CAA8C;AAC9B,oBAAQ,GAAW,IAAI,CAAC;AACxC,+CAA+C;AAC/B,qBAAS,GAAW,IAAI,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"}
@@ -4,6 +4,7 @@ export declare class NodeHIDProvider extends HIDProvider {
4
4
  private device?;
5
5
  wireless: boolean;
6
6
  connect(): Promise<void>;
7
+ write(data: Uint8Array): Promise<void>;
7
8
  get connected(): boolean;
8
9
  disconnect(): void;
9
10
  process(buffer: Buffer): DualsenseHIDState;
@@ -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;AAOxB,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAU;IAClB,QAAQ,EAAE,OAAO,CAAS;IAE3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C9B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,UAAU,IAAI,IAAI;IASlB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;CA2D3C"}
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
  }