dualsense-ts 5.4.0 → 6.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.
Files changed (85) hide show
  1. package/MIGRATION_GUIDE.md +19 -0
  2. package/README.md +87 -4
  3. package/dist/dualsense.d.ts +14 -2
  4. package/dist/dualsense.d.ts.map +1 -1
  5. package/dist/dualsense.js +65 -9
  6. package/dist/dualsense.js.map +1 -1
  7. package/dist/elements/accelerometer.d.ts +17 -4
  8. package/dist/elements/accelerometer.d.ts.map +1 -1
  9. package/dist/elements/accelerometer.js +24 -4
  10. package/dist/elements/accelerometer.js.map +1 -1
  11. package/dist/elements/gyroscope.d.ts +17 -4
  12. package/dist/elements/gyroscope.d.ts.map +1 -1
  13. package/dist/elements/gyroscope.js +24 -4
  14. package/dist/elements/gyroscope.js.map +1 -1
  15. package/dist/elements/index.d.ts +1 -0
  16. package/dist/elements/index.d.ts.map +1 -1
  17. package/dist/elements/index.js +1 -0
  18. package/dist/elements/index.js.map +1 -1
  19. package/dist/elements/trigger.d.ts +3 -0
  20. package/dist/elements/trigger.d.ts.map +1 -1
  21. package/dist/elements/trigger.js +3 -0
  22. package/dist/elements/trigger.js.map +1 -1
  23. package/dist/elements/trigger_feedback.d.ts +109 -0
  24. package/dist/elements/trigger_feedback.d.ts.map +1 -0
  25. package/dist/elements/trigger_feedback.js +168 -0
  26. package/dist/elements/trigger_feedback.js.map +1 -0
  27. package/dist/hid/bt_checksum.d.ts +2 -0
  28. package/dist/hid/bt_checksum.d.ts.map +1 -0
  29. package/dist/hid/bt_checksum.js +60 -0
  30. package/dist/hid/bt_checksum.js.map +1 -0
  31. package/dist/hid/command.d.ts +8 -18
  32. package/dist/hid/command.d.ts.map +1 -1
  33. package/dist/hid/dualsense_hid.d.ts +6 -5
  34. package/dist/hid/dualsense_hid.d.ts.map +1 -1
  35. package/dist/hid/dualsense_hid.js +40 -63
  36. package/dist/hid/dualsense_hid.js.map +1 -1
  37. package/dist/hid/hid_provider.d.ts +1 -0
  38. package/dist/hid/hid_provider.d.ts.map +1 -1
  39. package/dist/hid/hid_provider.js +4 -2
  40. package/dist/hid/hid_provider.js.map +1 -1
  41. package/dist/hid/index.d.ts +1 -0
  42. package/dist/hid/index.d.ts.map +1 -1
  43. package/dist/hid/index.js +1 -0
  44. package/dist/hid/index.js.map +1 -1
  45. package/dist/hid/node_hid_provider.d.ts +1 -0
  46. package/dist/hid/node_hid_provider.d.ts.map +1 -1
  47. package/dist/hid/web_hid_provider.d.ts.map +1 -1
  48. package/dist/hid/web_hid_provider.js +9 -4
  49. package/dist/hid/web_hid_provider.js.map +1 -1
  50. package/nodehid_example/debug.ts +122 -39
  51. package/package.json +5 -5
  52. package/src/dualsense.ts +88 -15
  53. package/src/elements/accelerometer.ts +45 -4
  54. package/src/elements/gyroscope.ts +45 -4
  55. package/src/elements/index.ts +1 -0
  56. package/src/elements/trigger.ts +4 -0
  57. package/src/elements/trigger_feedback.ts +267 -0
  58. package/src/hid/bt_checksum.spec.ts +15 -0
  59. package/src/hid/bt_checksum.ts +58 -0
  60. package/src/hid/command.ts +24 -34
  61. package/src/hid/dualsense_hid.ts +64 -68
  62. package/src/hid/hid_provider.ts +5 -5
  63. package/src/hid/index.ts +1 -0
  64. package/src/hid/web_hid_provider.ts +20 -7
  65. package/webhid_example/build/asset-manifest.json +6 -6
  66. package/webhid_example/build/index.html +1 -1
  67. package/webhid_example/build/static/css/{main.237f8cfa.css → main.9393bbb9.css} +2 -2
  68. package/webhid_example/build/static/css/main.9393bbb9.css.map +1 -0
  69. package/webhid_example/build/static/js/main.d804191f.js +3 -0
  70. package/webhid_example/build/static/js/main.d804191f.js.map +1 -0
  71. package/webhid_example/src/App.tsx +59 -13
  72. package/webhid_example/src/hud/ControllerConnection.tsx +59 -57
  73. package/webhid_example/src/hud/Debugger.tsx +83 -79
  74. package/webhid_example/src/hud/Gyro.tsx +74 -0
  75. package/webhid_example/src/hud/HUDLayout.tsx +2 -10
  76. package/webhid_example/src/hud/Reticle.tsx +12 -64
  77. package/webhid_example/src/hud/RightStick.tsx +26 -0
  78. package/webhid_example/src/hud/StickVisualization.tsx +81 -0
  79. package/webhid_example/src/hud/TriggerEffectControls.tsx +417 -0
  80. package/webhid_example/src/hud/index.tsx +4 -0
  81. package/webhid_example/src/index.css +20 -1
  82. package/webhid_example/build/static/css/main.237f8cfa.css.map +0 -1
  83. package/webhid_example/build/static/js/main.221f57e7.js +0 -3
  84. package/webhid_example/build/static/js/main.221f57e7.js.map +0 -1
  85. /package/webhid_example/build/static/js/{main.221f57e7.js.LICENSE.txt → main.d804191f.js.LICENSE.txt} +0 -0
@@ -1,5 +1,24 @@
1
1
  # Migration Guide
2
2
 
3
+ ### v5 to v6
4
+
5
+ `TriggerMode` is deprecated. The low-level `DualsenseHID` methods for setting trigger effects now accept 11-byte effect blocks instead of individual mode/value pairs.
6
+
7
+ Use the new element-based API instead:
8
+
9
+ ```typescript
10
+ import { TriggerEffect } from "dualsense-ts";
11
+
12
+ controller.right.trigger.feedback.set({
13
+ effect: TriggerEffect.Weapon,
14
+ start: 0.2,
15
+ end: 0.6,
16
+ strength: 0.9,
17
+ });
18
+
19
+ controller.right.trigger.feedback.reset();
20
+ ```
21
+
3
22
  ### v4 to v5
4
23
 
5
24
  `node-hid` is now an optional peer dependency, simplifying the use of this library in the browser.
package/README.md CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
  This module provides a natural interface for your DualSense controller.
4
4
 
5
+ **[Try it in your browser](https://nsfm.github.io/dualsense-ts/)** — connect a DualSense controller and explore inputs, rumble, and adaptive trigger effects with the interactive demo.
6
+
5
7
  ## Getting started
6
8
 
7
9
  ### Installation
8
10
 
9
- [This package is distributed via npm](https://npmjs.org/package.dualsense-ts). Install it the usual way:
11
+ [This package is distributed via npm](https://www.npmjs.com/package/dualsense-ts). Install it the usual way:
10
12
 
11
13
  - `npm add dualsense-ts`
12
14
 
@@ -37,6 +39,8 @@ controller.connection.on("change", ({ active }) = > {
37
39
  });
38
40
  ```
39
41
 
42
+ This package supports both wired and Bluetooth devices. While connected via Bluetooth, `controller.wireless` will return `true`.
43
+
40
44
  ### Input APIs
41
45
 
42
46
  `dualsense-ts` provides several interfaces for reading input:
@@ -60,7 +64,7 @@ controller.left.analog.magnitude; // 0.23, 0 to 1
60
64
 
61
65
  // Touchpad - each touch point works like an analog input
62
66
  controller.touchpad.right.contact.state; // false
63
- +controller.touchpad.right.x; // -0.44, -1 to 1
67
+ controller.touchpad.right.x; // -0.44, -1 to 1
64
68
  ```
65
69
 
66
70
  - _Callbacks_: Each input is an EventEmitter or EventTarget that provides `input`, `press`, `release`, and `change` events
@@ -110,9 +114,27 @@ for await (const { pressure } of controller.left.trigger) {
110
114
  }
111
115
  ```
112
116
 
113
- ### Rumble Support
117
+ ### Other Supported Features
118
+
119
+ #### Motion Control
120
+
121
+ ```typescript
122
+ controller.gyroscope.on("change", ({ x, y, z }) => {
123
+ console.log(`Gyroscope: \n\t${x}\n\t${y}\n\t${z}`)
124
+ }
125
+
126
+ controller.accelerometer.on("change", ({ x, y, z }) => {
127
+ console.log(`Accelerometer: \n\t${x}\n\t${y}\n\t${z}`)
128
+ }
129
+
130
+ controller.accelerometer.z.on("change", ({ force }) => {
131
+ if (force > 0.3) console.log('Controller moving')
132
+ })
133
+ ```
134
+
135
+ #### Rumble
114
136
 
115
- Only supported in node.js over USB at this time.
137
+ The controller has two independent rumble motors. The left motor is larger and produces a stronger, lower-frequency rumble, while the right motor is smaller and produces a lighter, higher-frequency vibration. They are controlled independently:
116
138
 
117
139
  ```typescript
118
140
  controller.rumble(1.0); // 100% rumble intensity
@@ -130,6 +152,67 @@ controller.right.trigger.on("change", (trigger) => {
130
152
  });
131
153
  ```
132
154
 
155
+ #### Adaptive Triggers
156
+
157
+ Haptic trigger feedback is controlled via `controller.left.trigger.feedback` / `controller.right.trigger.feedback`. All position and strength values are normalized 0–1.
158
+
159
+ ```typescript
160
+ import { Dualsense, TriggerEffect } from "dualsense-ts";
161
+
162
+ const controller = new Dualsense();
163
+
164
+ // Continuous resistance starting at 30% travel
165
+ controller.right.trigger.feedback.set({
166
+ effect: TriggerEffect.Feedback,
167
+ position: 0.3,
168
+ strength: 0.8,
169
+ });
170
+
171
+ // Weapon trigger — resistance with snap release
172
+ controller.right.trigger.feedback.set({
173
+ effect: TriggerEffect.Weapon,
174
+ start: 0.2,
175
+ end: 0.6,
176
+ strength: 0.9,
177
+ });
178
+
179
+ // Vibration with frequency
180
+ controller.right.trigger.feedback.set({
181
+ effect: TriggerEffect.Vibration,
182
+ position: 0.1,
183
+ amplitude: 0.7,
184
+ frequency: 40, // in Hz, 0 - 255
185
+ });
186
+
187
+ // Reset to default linear feel
188
+ controller.right.trigger.feedback.reset();
189
+
190
+ // Reset both triggers
191
+ controller.resetTriggerFeedback();
192
+
193
+ // Read current config
194
+ console.log(controller.right.trigger.feedback.config);
195
+ console.log(controller.right.trigger.feedback.effect); // TriggerEffect.Off
196
+ ```
197
+
198
+ Feedback state is automatically restored if the controller disconnects and reconnects — no handling required on your end.
199
+
200
+ #### Trigger effects
201
+
202
+ | Effect | Description |
203
+ | ------------------------- | ---------------------------------------------------------- |
204
+ | `TriggerEffect.Off` | No resistance (default linear feel) |
205
+ | `TriggerEffect.Feedback` | Zone-based continuous resistance from a start position |
206
+ | `TriggerEffect.Weapon` | Resistance with a snap release point |
207
+ | `TriggerEffect.Bow` | Weapon feel with snap-back force |
208
+ | `TriggerEffect.Galloping` | Rhythmic two-stroke oscillation |
209
+ | `TriggerEffect.Vibration` | Zone-based oscillation with amplitude and frequency |
210
+ | `TriggerEffect.Machine` | Dual-amplitude vibration with frequency and period control |
211
+
212
+ Each effect accepts a unique set of configuration options — your editor's type hints will guide you through the available parameters for each effect. The [interactive demo](https://nsfm.github.io/dualsense-ts/) includes full slider controls for every effect and parameter, making it a great tool for finding the right values.
213
+
214
+ Effect names are based on [Nielk1's DualSense trigger effect documentation](https://gist.github.com/Nielk1/6d54cc2c00d2201ccb8c2720ad7538db).
215
+
133
216
  ### With React
134
217
 
135
218
  Check out [the example app](./webhid_example/) for more details.
@@ -1,4 +1,4 @@
1
- import { Momentary, Dpad, DpadParams, Mute, Unisense, UnisenseParams, Touchpad } from "./elements";
1
+ import { Momentary, Dpad, DpadParams, Mute, Unisense, UnisenseParams, Touchpad, Gyroscope, GyroscopeParams, Accelerometer, AccelerometerParams } from "./elements";
2
2
  import { Input, InputParams } from "./input";
3
3
  import { DualsenseHID } from "./hid";
4
4
  import { Intensity } from "./math";
@@ -30,6 +30,10 @@ export interface DualsenseParams extends InputParams {
30
30
  right?: UnisenseParams;
31
31
  /** Settings for the touchpad inputs */
32
32
  touchpad?: InputParams;
33
+ /** Settings for the gyroscope */
34
+ gyroscope?: GyroscopeParams;
35
+ /** Settings for the accelerometer */
36
+ accelerometer?: AccelerometerParams;
33
37
  }
34
38
  /** Represents a Dualsense controller */
35
39
  export declare class Dualsense extends Input<Dualsense> {
@@ -56,15 +60,23 @@ export declare class Dualsense extends Input<Dualsense> {
56
60
  readonly left: Unisense;
57
61
  /** Inputs on the right half of the controller */
58
62
  readonly right: Unisense;
59
- /** The touchpad; works like an analog stick */
63
+ /** The touchpad; works like a pair of analog sticks */
60
64
  readonly touchpad: Touchpad;
65
+ /** Tracks the controller's angular velocity */
66
+ readonly gyroscope: Gyroscope;
67
+ /** Tracks the controller's linear acceleration */
68
+ readonly accelerometer: Accelerometer;
61
69
  /** Represents the underlying HID device. Provides input events */
62
70
  readonly hid: DualsenseHID;
63
71
  /** A virtual button representing whether or not a controller is connected */
64
72
  readonly connection: Momentary;
65
73
  get active(): boolean;
74
+ /** Returns `true` if the controller is connected via Bluetooth */
75
+ get wireless(): boolean;
66
76
  constructor(params?: DualsenseParams);
67
77
  private get rumbleIntensity();
78
+ /** Reset adaptive trigger feedback on both sides to the default linear feel */
79
+ resetTriggerFeedback(): void;
68
80
  /** Check or adjust rumble intensity evenly across both sides of the controller */
69
81
  rumble(intensity?: Intensity): number;
70
82
  /** Distributes HID event values to the controller's inputs */
@@ -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;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;CA0CnB"}
1
+ {"version":3,"file":"dualsense.d.ts","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"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"}
package/dist/dualsense.js CHANGED
@@ -9,6 +9,10 @@ class Dualsense extends input_1.Input {
9
9
  get active() {
10
10
  return Object.values(this).some((input) => input !== this && input instanceof input_1.Input && input.active);
11
11
  }
12
+ /** Returns `true` if the controller is connected via Bluetooth */
13
+ get wireless() {
14
+ return this.hid.wireless;
15
+ }
12
16
  constructor(params = {}) {
13
17
  super(params);
14
18
  this.state = this;
@@ -77,34 +81,80 @@ class Dualsense extends input_1.Input {
77
81
  name: "Connected",
78
82
  ...(params.square ?? {}),
79
83
  });
84
+ this.gyroscope = new elements_1.Gyroscope({
85
+ icon: "∞",
86
+ name: "Gyroscope",
87
+ threshold: 0.01,
88
+ ...(params.gyroscope ?? {}),
89
+ });
90
+ this.accelerometer = new elements_1.Accelerometer({
91
+ icon: "⤲",
92
+ name: "Accelerometer",
93
+ threshold: 0.01,
94
+ ...(params.accelerometer ?? {}),
95
+ });
80
96
  this.connection[input_1.InputSet](false);
81
97
  this.hid = params.hid ?? new hid_1.DualsenseHID(new hid_1.PlatformHIDProvider());
82
98
  this.hid.register((state) => {
83
99
  this.processHID(state);
84
100
  });
101
+ const rumbleMemo = { left: -1, right: -1 };
102
+ const triggerFeedbackMemo = { left: "", right: "" };
85
103
  /** Refresh connection state */
104
+ let lastConnected = false;
86
105
  setInterval(() => {
87
106
  const { provider: { connected }, } = this.hid;
88
107
  this.connection[input_1.InputSet](connected);
108
+ if (connected && !lastConnected) {
109
+ // Invalidate memo so the output loop restores desired state on reconnect.
110
+ triggerFeedbackMemo.left = "";
111
+ triggerFeedbackMemo.right = "";
112
+ }
113
+ lastConnected = connected;
89
114
  if (!connected)
90
115
  this.hid.provider.connect();
91
116
  }, 200);
92
- /** Refresh rumble state */
93
- const rumbleMemo = { left: -1, right: -1 };
117
+ /** Refresh output state (rumble + trigger feedback) */
94
118
  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;
119
+ if (!this.connection.active)
120
+ return;
121
+ const leftRumble = this.left.rumble();
122
+ const rightRumble = this.right.rumble();
123
+ if (leftRumble !== rumbleMemo.left || rightRumble !== rumbleMemo.right) {
124
+ this.hid.setRumble(leftRumble * 255, rightRumble * 255);
125
+ rumbleMemo.left = leftRumble;
126
+ rumbleMemo.right = rightRumble;
127
+ }
128
+ const leftFeedback = this.left.trigger.feedback;
129
+ const rightFeedback = this.right.trigger.feedback;
130
+ const leftKey = leftFeedback.toKey();
131
+ const rightKey = rightFeedback.toKey();
132
+ const feedbackChanged = leftKey !== triggerFeedbackMemo.left ||
133
+ rightKey !== triggerFeedbackMemo.right;
134
+ if (feedbackChanged) {
135
+ // Force rumble into the same batch so MotorPower scope bit is always present.
136
+ this.hid.setRumble(leftRumble * 255, rightRumble * 255);
137
+ rumbleMemo.left = leftRumble;
138
+ rumbleMemo.right = rightRumble;
139
+ }
140
+ if (leftKey !== triggerFeedbackMemo.left) {
141
+ this.hid.setLeftTriggerFeedback(leftFeedback.toBytes());
142
+ triggerFeedbackMemo.left = leftKey;
143
+ }
144
+ if (rightKey !== triggerFeedbackMemo.right) {
145
+ this.hid.setRightTriggerFeedback(rightFeedback.toBytes());
146
+ triggerFeedbackMemo.right = rightKey;
102
147
  }
103
148
  }, 1000 / 30);
104
149
  }
105
150
  get rumbleIntensity() {
106
151
  return (this.left.rumble() + this.right.rumble()) / 2;
107
152
  }
153
+ /** Reset adaptive trigger feedback on both sides to the default linear feel */
154
+ resetTriggerFeedback() {
155
+ this.left.trigger.feedback.reset();
156
+ this.right.trigger.feedback.reset();
157
+ }
108
158
  /** Check or adjust rumble intensity evenly across both sides of the controller */
109
159
  rumble(intensity) {
110
160
  this.left.rumble(intensity);
@@ -147,6 +197,12 @@ class Dualsense extends input_1.Input {
147
197
  this.right.bumper[input_1.InputSet](state["R1" /* InputId.RightBumper */]);
148
198
  this.right.trigger[input_1.InputSet](state["R2" /* InputId.RightTrigger */]);
149
199
  this.right.trigger.button[input_1.InputSet](state["R2Button" /* InputId.RightTriggerButton */]);
200
+ this.gyroscope.x[input_1.InputSet](state["GyroX" /* InputId.GyroX */]);
201
+ this.gyroscope.y[input_1.InputSet](state["GyroY" /* InputId.GyroY */]);
202
+ this.gyroscope.z[input_1.InputSet](state["GyroZ" /* InputId.GyroZ */]);
203
+ this.accelerometer.x[input_1.InputSet](state["AccelX" /* InputId.AccelX */]);
204
+ this.accelerometer.y[input_1.InputSet](state["AccelY" /* InputId.AccelY */]);
205
+ this.accelerometer.z[input_1.InputSet](state["AccelZ" /* InputId.AccelZ */]);
150
206
  }
151
207
  }
152
208
  exports.Dualsense = Dualsense;
@@ -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,20 @@
1
- import { Input } from "../input";
2
- /** Not yet implemented */
3
- export declare class Accelerometer extends Input<boolean> {
4
- readonly state: boolean;
1
+ import { Input, InputParams } from "../input";
2
+ import { Axis, AxisParams } from "./axis";
3
+ export interface AccelerometerParams extends InputParams {
4
+ /** Configuration for the input's x axis */
5
+ x?: AxisParams;
6
+ /** Configuration for the input's y axis */
7
+ y?: AxisParams;
8
+ /** Configuration for the input's z axis */
9
+ z?: AxisParams;
10
+ }
11
+ /** Tracks the linear acceleration of the controller. */
12
+ export declare class Accelerometer extends Input<Accelerometer> {
13
+ readonly state: this;
14
+ readonly x: Axis;
15
+ readonly y: Axis;
16
+ readonly z: Axis;
17
+ constructor(params?: AccelerometerParams);
5
18
  readonly active = false;
6
19
  }
7
20
  //# sourceMappingURL=accelerometer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accelerometer.d.ts","sourceRoot":"","sources":["../../src/elements/accelerometer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,0BAA0B;AAC1B,qBAAa,aAAc,SAAQ,KAAK,CAAC,OAAO,CAAC;IAC/C,SAAgB,KAAK,EAAE,OAAO,CAAS;IACvC,SAAgB,MAAM,SAAS;CAChC"}
1
+ {"version":3,"file":"accelerometer.d.ts","sourceRoot":"","sources":["../../src/elements/accelerometer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,2CAA2C;IAC3C,CAAC,CAAC,EAAE,UAAU,CAAC;IAEf,2CAA2C;IAC3C,CAAC,CAAC,EAAE,UAAU,CAAC;IAEf,2CAA2C;IAC3C,CAAC,CAAC,EAAE,UAAU,CAAC;CAChB;AAED,wDAAwD;AACxD,qBAAa,aAAc,SAAQ,KAAK,CAAC,aAAa,CAAC;IACrD,SAAgB,KAAK,EAAE,IAAI,CAAQ;IAEnC,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,CAAC,EAAE,IAAI,CAAC;gBAEZ,MAAM,CAAC,EAAE,mBAAmB;IAwBxC,SAAgB,MAAM,SAAS;CAChC"}
@@ -2,12 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Accelerometer = void 0;
4
4
  const input_1 = require("../input");
5
- /** Not yet implemented */
5
+ const axis_1 = require("./axis");
6
+ /** Tracks the linear acceleration of the controller. */
6
7
  class Accelerometer extends input_1.Input {
7
- constructor() {
8
- super(...arguments);
9
- this.state = false;
8
+ constructor(params) {
9
+ super(params);
10
+ this.state = this;
10
11
  this.active = false;
12
+ const { x, y, z } = params ?? {};
13
+ this.x = new axis_1.Axis({
14
+ icon: "AX",
15
+ name: "X",
16
+ ...params,
17
+ ...x,
18
+ });
19
+ this.y = new axis_1.Axis({
20
+ icon: "AY",
21
+ name: "Y",
22
+ ...params,
23
+ ...y,
24
+ });
25
+ this.z = new axis_1.Axis({
26
+ icon: "AZ",
27
+ name: "Z",
28
+ ...params,
29
+ ...z,
30
+ });
11
31
  }
12
32
  }
13
33
  exports.Accelerometer = Accelerometer;
@@ -1 +1 @@
1
- {"version":3,"file":"accelerometer.js","sourceRoot":"","sources":["../../src/elements/accelerometer.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAEjC,0BAA0B;AAC1B,MAAa,aAAc,SAAQ,aAAc;IAAjD;;QACkB,UAAK,GAAY,KAAK,CAAC;QACvB,WAAM,GAAG,KAAK,CAAC;IACjC,CAAC;CAAA;AAHD,sCAGC"}
1
+ {"version":3,"file":"accelerometer.js","sourceRoot":"","sources":["../../src/elements/accelerometer.ts"],"names":[],"mappings":";;;AAAA,oCAA8C;AAC9C,iCAA0C;AAa1C,wDAAwD;AACxD,MAAa,aAAc,SAAQ,aAAoB;IAOrD,YAAY,MAA4B;QACtC,KAAK,CAAC,MAAM,CAAC,CAAC;QAPA,UAAK,GAAS,IAAI,CAAC;QA8BnB,WAAM,GAAG,KAAK,CAAC;QAtB7B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;IACL,CAAC;CAGF;AAhCD,sCAgCC"}
@@ -1,7 +1,20 @@
1
- import { Input } from "../input";
2
- /** Not yet implemented */
3
- export declare class Gyroscope extends Input<boolean> {
4
- readonly state: boolean;
1
+ import { Input, InputParams } from "../input";
2
+ import { Axis, AxisParams } from "./axis";
3
+ export interface GyroscopeParams extends InputParams {
4
+ /** Configuration for the input's x axis */
5
+ x?: AxisParams;
6
+ /** Configuration for the input's y axis */
7
+ y?: AxisParams;
8
+ /** Configuration for the input's z axis */
9
+ z?: AxisParams;
10
+ }
11
+ /** Tracks the angular velocity of the controller. */
12
+ export declare class Gyroscope extends Input<Gyroscope> {
13
+ readonly state: this;
14
+ readonly x: Axis;
15
+ readonly y: Axis;
16
+ readonly z: Axis;
17
+ constructor(params?: GyroscopeParams);
5
18
  readonly active = false;
6
19
  }
7
20
  //# sourceMappingURL=gyroscope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gyroscope.d.ts","sourceRoot":"","sources":["../../src/elements/gyroscope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,0BAA0B;AAC1B,qBAAa,SAAU,SAAQ,KAAK,CAAC,OAAO,CAAC;IAC3C,SAAgB,KAAK,EAAE,OAAO,CAAS;IACvC,SAAgB,MAAM,SAAS;CAChC"}
1
+ {"version":3,"file":"gyroscope.d.ts","sourceRoot":"","sources":["../../src/elements/gyroscope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,2CAA2C;IAC3C,CAAC,CAAC,EAAE,UAAU,CAAC;IAEf,2CAA2C;IAC3C,CAAC,CAAC,EAAE,UAAU,CAAC;IAEf,2CAA2C;IAC3C,CAAC,CAAC,EAAE,UAAU,CAAC;CAChB;AAED,qDAAqD;AACrD,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,KAAK,EAAE,IAAI,CAAQ;IAEnC,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,CAAC,EAAE,IAAI,CAAC;gBAEZ,MAAM,CAAC,EAAE,eAAe;IAwBpC,SAAgB,MAAM,SAAS;CAChC"}
@@ -2,12 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Gyroscope = void 0;
4
4
  const input_1 = require("../input");
5
- /** Not yet implemented */
5
+ const axis_1 = require("./axis");
6
+ /** Tracks the angular velocity of the controller. */
6
7
  class Gyroscope extends input_1.Input {
7
- constructor() {
8
- super(...arguments);
9
- this.state = false;
8
+ constructor(params) {
9
+ super(params);
10
+ this.state = this;
10
11
  this.active = false;
12
+ const { x, y, z } = params ?? {};
13
+ this.x = new axis_1.Axis({
14
+ icon: "GX",
15
+ name: "X",
16
+ ...params,
17
+ ...x,
18
+ });
19
+ this.y = new axis_1.Axis({
20
+ icon: "GY",
21
+ name: "Y",
22
+ ...params,
23
+ ...y,
24
+ });
25
+ this.z = new axis_1.Axis({
26
+ icon: "GZ",
27
+ name: "Z",
28
+ ...params,
29
+ ...z,
30
+ });
11
31
  }
12
32
  }
13
33
  exports.Gyroscope = Gyroscope;
@@ -1 +1 @@
1
- {"version":3,"file":"gyroscope.js","sourceRoot":"","sources":["../../src/elements/gyroscope.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAEjC,0BAA0B;AAC1B,MAAa,SAAU,SAAQ,aAAc;IAA7C;;QACkB,UAAK,GAAY,KAAK,CAAC;QACvB,WAAM,GAAG,KAAK,CAAC;IACjC,CAAC;CAAA;AAHD,8BAGC"}
1
+ {"version":3,"file":"gyroscope.js","sourceRoot":"","sources":["../../src/elements/gyroscope.ts"],"names":[],"mappings":";;;AAAA,oCAA8C;AAC9C,iCAA0C;AAa1C,qDAAqD;AACrD,MAAa,SAAU,SAAQ,aAAgB;IAO7C,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,CAAC,CAAC;QAPA,UAAK,GAAS,IAAI,CAAC;QA8BnB,WAAM,GAAG,KAAK,CAAC;QAtB7B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;IACL,CAAC;CAGF;AAhCD,8BAgCC"}
@@ -13,5 +13,6 @@ export * from "./mute";
13
13
  export * from "./touch";
14
14
  export * from "./touchpad";
15
15
  export * from "./trigger";
16
+ export * from "./trigger_feedback";
16
17
  export * from "./unisense";
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
@@ -29,5 +29,6 @@ __exportStar(require("./mute"), exports);
29
29
  __exportStar(require("./touch"), exports);
30
30
  __exportStar(require("./touchpad"), exports);
31
31
  __exportStar(require("./trigger"), exports);
32
+ __exportStar(require("./trigger_feedback"), exports);
32
33
  __exportStar(require("./unisense"), exports);
33
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/elements/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,qDAAmC;AACnC,6CAA2B"}
@@ -1,9 +1,12 @@
1
1
  import { Input } from "../input";
2
2
  import { Magnitude } from "../math";
3
3
  import { Momentary } from "./momentary";
4
+ import { TriggerFeedback } from "./trigger_feedback";
4
5
  export declare class Trigger extends Input<Magnitude> {
5
6
  state: Magnitude;
6
7
  button: Momentary;
8
+ /** Desired adaptive trigger feedback state */
9
+ readonly feedback: TriggerFeedback;
7
10
  get active(): boolean;
8
11
  get pressure(): Magnitude;
9
12
  get magnitude(): Magnitude;
@@ -1 +1 @@
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
+ {"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;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,OAAQ,SAAQ,KAAK,CAAC,SAAS,CAAC;IACpC,KAAK,EAAE,SAAS,CAAK;IAErB,MAAM,EAAE,SAAS,CAAmB;IAE3C,8CAA8C;IAC9C,SAAgB,QAAQ,kBAAyB;IAEjD,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"}
@@ -3,11 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Trigger = void 0;
4
4
  const input_1 = require("../input");
5
5
  const momentary_1 = require("./momentary");
6
+ const trigger_feedback_1 = require("./trigger_feedback");
6
7
  class Trigger extends input_1.Input {
7
8
  constructor() {
8
9
  super(...arguments);
9
10
  this.state = 0;
10
11
  this.button = new momentary_1.Momentary();
12
+ /** Desired adaptive trigger feedback state */
13
+ this.feedback = new trigger_feedback_1.TriggerFeedback();
11
14
  }
12
15
  get active() {
13
16
  return this.state > 0;
@@ -1 +1 @@
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
+ {"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/elements/trigger.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAEjC,2CAAwC;AACxC,yDAAqD;AAErD,MAAa,OAAQ,SAAQ,aAAgB;IAA7C;;QACS,UAAK,GAAc,CAAC,CAAC;QAErB,WAAM,GAAc,IAAI,qBAAS,EAAE,CAAC;QAE3C,8CAA8C;QAC9B,aAAQ,GAAG,IAAI,kCAAe,EAAE,CAAC;IAiBnD,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;AAvBD,0BAuBC"}