dualsense-ts 1.3.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dualsense.js CHANGED
@@ -84,27 +84,27 @@ class Dualsense extends input_1.Input {
84
84
  processHID() {
85
85
  if (!this.hid)
86
86
  return;
87
- this.ps[input_1.InputSet](this.hid.state["Playstation" /* Playstation */]);
88
- this.options[input_1.InputSet](this.hid.state["Options" /* Options */]);
89
- this.mute[input_1.InputSet](this.hid.state["Mute" /* Mute */]);
90
- this.create[input_1.InputSet](this.hid.state["Create" /* Create */]);
91
- this.triangle[input_1.InputSet](this.hid.state["Triangle" /* Triangle */]);
92
- this.circle[input_1.InputSet](this.hid.state["Circle" /* Circle */]);
93
- this.cross[input_1.InputSet](this.hid.state["Cross" /* Cross */]);
94
- this.square[input_1.InputSet](this.hid.state["Square" /* Square */]);
95
- this.dpad.up[input_1.InputSet](this.hid.state["Up" /* Up */]);
96
- this.dpad.down[input_1.InputSet](this.hid.state["Down" /* Down */]);
97
- this.dpad.right[input_1.InputSet](this.hid.state["Right" /* Right */]);
98
- this.dpad.left[input_1.InputSet](this.hid.state["Left" /* Left */]);
99
- this.touchpad.button[input_1.InputSet](this.hid.state["TouchpadButton" /* TouchpadButton */]);
100
- this.left.analog.x[input_1.InputSet](this.hid.state["LX" /* LeftAnalogX */]);
101
- this.left.analog.y[input_1.InputSet](this.hid.state["LY" /* LeftAnalogY */]);
102
- this.right.analog.x[input_1.InputSet](this.hid.state["RX" /* RightAnalogX */]);
103
- this.right.analog.y[input_1.InputSet](this.hid.state["RY" /* RightAnalogY */]);
104
- this.left.trigger[input_1.InputSet](this.hid.state["L2" /* LeftTrigger */]);
105
- this.right.trigger[input_1.InputSet](this.hid.state["R2" /* RightTrigger */]);
106
- this.left.trigger.button[input_1.InputSet](this.hid.state["L2Button" /* LeftTriggerButton */]);
107
- this.right.trigger.button[input_1.InputSet](this.hid.state["R2Button" /* RightTriggerButton */]);
87
+ this.ps[input_1.InputSet](this.hid.state["Playstation" /* InputId.Playstation */]);
88
+ this.options[input_1.InputSet](this.hid.state["Options" /* InputId.Options */]);
89
+ this.mute[input_1.InputSet](this.hid.state["Mute" /* InputId.Mute */]);
90
+ this.create[input_1.InputSet](this.hid.state["Create" /* InputId.Create */]);
91
+ this.triangle[input_1.InputSet](this.hid.state["Triangle" /* InputId.Triangle */]);
92
+ this.circle[input_1.InputSet](this.hid.state["Circle" /* InputId.Circle */]);
93
+ this.cross[input_1.InputSet](this.hid.state["Cross" /* InputId.Cross */]);
94
+ this.square[input_1.InputSet](this.hid.state["Square" /* InputId.Square */]);
95
+ this.dpad.up[input_1.InputSet](this.hid.state["Up" /* InputId.Up */]);
96
+ this.dpad.down[input_1.InputSet](this.hid.state["Down" /* InputId.Down */]);
97
+ this.dpad.right[input_1.InputSet](this.hid.state["Right" /* InputId.Right */]);
98
+ this.dpad.left[input_1.InputSet](this.hid.state["Left" /* InputId.Left */]);
99
+ this.touchpad.button[input_1.InputSet](this.hid.state["TouchButton" /* InputId.TouchButton */]);
100
+ this.left.analog.x[input_1.InputSet](this.hid.state["LX" /* InputId.LeftAnalogX */]);
101
+ this.left.analog.y[input_1.InputSet](this.hid.state["LY" /* InputId.LeftAnalogY */]);
102
+ this.right.analog.x[input_1.InputSet](this.hid.state["RX" /* InputId.RightAnalogX */]);
103
+ this.right.analog.y[input_1.InputSet](this.hid.state["RY" /* InputId.RightAnalogY */]);
104
+ this.left.trigger[input_1.InputSet](this.hid.state["L2" /* InputId.LeftTrigger */]);
105
+ this.right.trigger[input_1.InputSet](this.hid.state["R2" /* InputId.RightTrigger */]);
106
+ this.left.trigger.button[input_1.InputSet](this.hid.state["L2Button" /* InputId.LeftTriggerButton */]);
107
+ this.right.trigger.button[input_1.InputSet](this.hid.state["R2Button" /* InputId.RightTriggerButton */]);
108
108
  }
109
109
  }
110
110
  exports.Dualsense = Dualsense;
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":";;;AAAA,yCAQoB;AACpB,mCAAuD;AACvD,+BAA8C;AAoB9C,MAAa,SAAU,SAAQ,aAAgB;IA8B7C,YAAY,SAA0B,EAAE;QACtC,KAAK,CAAC,MAAM,CAAC,CAAC;QA9BA,UAAK,GAAc,IAAI,CAAC;QAoBxB,QAAG,GAAwB,IAAI,CAAC;QAY9C,IAAI,CAAC,EAAE,GAAG,IAAI,oBAAS,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,MAAM;YACZ,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,eAAI,CAAC;YACnB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,MAAM;YACZ,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,oBAAS,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,SAAS;YACf,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAS,CAAC;YAC1B,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,QAAQ;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAS,CAAC;YAC5B,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,UAAU;YAChB,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAS,CAAC;YAC1B,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,QAAQ;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAS,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,OAAO;YACb,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAS,CAAC;YAC1B,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,QAAQ;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,eAAI,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,OAAO;YACb,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAQ,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,MAAM;YACZ,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAQ,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,OAAO;YACb,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,UAAU;YAChB,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC3B,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,kBAAY,EAAE,CAAC;QAE5D,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxB,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IA/ED,IAAW,MAAM;QACf,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC7B,CAAC,KAAc,EAAE,EAAE,CACjB,KAAK,YAAY,aAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAC3D,CAAC;IACJ,CAAC;IA4EO,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QACtB,IAAI,CAAC,EAAE,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iCAAqB,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,yBAAiB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,mBAAc,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,uBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,2BAAkB,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,uBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,qBAAe,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,uBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,eAAY,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,mBAAc,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,qBAAe,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,mBAAc,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,uCAAwB,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,wBAAqB,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,wBAAqB,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,yBAAsB,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,yBAAsB,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,wBAAqB,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,yBAAsB,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAQ,CAAC,CAChC,IAAI,CAAC,GAAG,CAAC,KAAK,oCAA2B,CAC1C,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAQ,CAAC,CACjC,IAAI,CAAC,GAAG,CAAC,KAAK,qCAA4B,CAC3C,CAAC;IACJ,CAAC;CACF;AApID,8BAoIC"}
1
+ {"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from "events";
3
3
  import { InputId } from "./ids";
4
- export declare type DualsenseHIDState = {
4
+ export interface DualsenseHIDState {
5
5
  [InputId.LeftAnalogX]: number;
6
6
  [InputId.LeftAnalogY]: number;
7
7
  [InputId.RightAnalogX]: number;
@@ -12,6 +12,7 @@ export declare type DualsenseHIDState = {
12
12
  [InputId.Circle]: boolean;
13
13
  [InputId.Cross]: boolean;
14
14
  [InputId.Square]: boolean;
15
+ [InputId.Dpad]: number;
15
16
  [InputId.Up]: boolean;
16
17
  [InputId.Down]: boolean;
17
18
  [InputId.Left]: boolean;
@@ -25,21 +26,36 @@ export declare type DualsenseHIDState = {
25
26
  [InputId.RightBumper]: boolean;
26
27
  [InputId.LeftBumper]: boolean;
27
28
  [InputId.Playstation]: boolean;
28
- [InputId.TouchpadButton]: boolean;
29
+ [InputId.TouchButton]: boolean;
29
30
  [InputId.Mute]: boolean;
30
- [InputId.TouchpadX1]: number;
31
- [InputId.TouchpadY1]: number;
32
- [InputId.TouchpadX2]: number;
33
- [InputId.TouchpadY2]: number;
34
- };
31
+ [InputId.Status]: boolean;
32
+ [InputId.TouchX0]: number;
33
+ [InputId.TouchY0]: number;
34
+ [InputId.TouchContact0]: boolean;
35
+ [InputId.TouchId0]: number;
36
+ [InputId.TouchX1]: number;
37
+ [InputId.TouchY1]: number;
38
+ [InputId.TouchContact1]: boolean;
39
+ [InputId.TouchId1]: number;
40
+ [InputId.GyroX]: number;
41
+ [InputId.GyroY]: number;
42
+ [InputId.GyroZ]: number;
43
+ [InputId.AccelX]: number;
44
+ [InputId.AccelY]: number;
45
+ [InputId.AccelZ]: number;
46
+ }
35
47
  export declare function mapAxis(value: number): number;
36
48
  export declare function mapTrigger(value: number): number;
37
49
  export declare class DualsenseHID extends EventEmitter {
38
50
  state: DualsenseHIDState;
39
51
  private device;
52
+ private wireless;
40
53
  static readonly vendorId: number;
41
54
  static readonly productId: number;
42
55
  constructor();
56
+ /**
57
+ * Unpacks a Dualsense HID report.
58
+ */
43
59
  private process;
44
60
  private handleError;
45
61
  private disconnect;
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,oBAAY,iBAAiB,GAAG;IAC9B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAGF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,qBAAa,YAAa,SAAQ,YAAY;IACrC,KAAK,EAAE,iBAAiB,CA8B7B;IAEF,OAAO,CAAC,MAAM,CAAM;IAEpB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAQ;IACxC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAQ;;IAOzC,OAAO,CAAC,OAAO;IAqCf,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,OAAO;CAahB"}
1
+ {"version":3,"file":"dualsense_hid.d.ts","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DualsenseHID = exports.mapTrigger = exports.mapAxis = void 0;
4
4
  const node_hid_1 = require("node-hid");
5
5
  const events_1 = require("events");
6
- // Maps a HID input from 0...255, to -1...1
6
+ // Maps a HID input of 0...255 to -1...1
7
7
  function mapAxis(value) {
8
8
  return (2 / 255) * Math.max(0, Math.min(255, value)) - 1;
9
9
  }
10
10
  exports.mapAxis = mapAxis;
11
- // Maps a HID input from 0...255, to 0...1
11
+ // Maps a HID input of 0...255 to 0...1
12
12
  function mapTrigger(value) {
13
13
  return (1 / 255) * Math.max(0, Math.min(255, value));
14
14
  }
@@ -17,71 +17,109 @@ class DualsenseHID extends events_1.EventEmitter {
17
17
  constructor() {
18
18
  super();
19
19
  this.state = {
20
- ["LX" /* LeftAnalogX */]: 0,
21
- ["LY" /* LeftAnalogY */]: 0,
22
- ["RX" /* RightAnalogX */]: 0,
23
- ["RY" /* RightAnalogY */]: 0,
24
- ["L2" /* LeftTrigger */]: 0,
25
- ["R2" /* RightTrigger */]: 0,
26
- ["Triangle" /* Triangle */]: false,
27
- ["Circle" /* Circle */]: false,
28
- ["Cross" /* Cross */]: false,
29
- ["Square" /* Square */]: false,
30
- ["Up" /* Up */]: false,
31
- ["Down" /* Down */]: false,
32
- ["Left" /* Left */]: false,
33
- ["Right" /* Right */]: false,
34
- ["R3" /* RightAnalogButton */]: false,
35
- ["L3" /* LeftAnalogButton */]: false,
36
- ["Options" /* Options */]: false,
37
- ["Create" /* Create */]: false,
38
- ["R2Button" /* RightTriggerButton */]: false,
39
- ["L2Button" /* LeftTriggerButton */]: false,
40
- ["R1" /* RightBumper */]: false,
41
- ["L1" /* LeftBumper */]: false,
42
- ["Playstation" /* Playstation */]: false,
43
- ["TouchpadButton" /* TouchpadButton */]: false,
44
- ["Mute" /* Mute */]: false,
45
- ["TouchpadX1" /* TouchpadX1 */]: 0,
46
- ["TouchpadY1" /* TouchpadY1 */]: 0,
47
- ["TouchpadX2" /* TouchpadX2 */]: 0,
48
- ["TouchpadY2" /* TouchpadY2 */]: 0,
20
+ ["LX" /* InputId.LeftAnalogX */]: 0,
21
+ ["LY" /* InputId.LeftAnalogY */]: 0,
22
+ ["RX" /* InputId.RightAnalogX */]: 0,
23
+ ["RY" /* InputId.RightAnalogY */]: 0,
24
+ ["L2" /* InputId.LeftTrigger */]: 0,
25
+ ["R2" /* InputId.RightTrigger */]: 0,
26
+ ["Triangle" /* InputId.Triangle */]: false,
27
+ ["Circle" /* InputId.Circle */]: false,
28
+ ["Cross" /* InputId.Cross */]: false,
29
+ ["Square" /* InputId.Square */]: false,
30
+ ["Dpad" /* InputId.Dpad */]: 0,
31
+ ["Up" /* InputId.Up */]: false,
32
+ ["Down" /* InputId.Down */]: false,
33
+ ["Left" /* InputId.Left */]: false,
34
+ ["Right" /* InputId.Right */]: false,
35
+ ["R3" /* InputId.RightAnalogButton */]: false,
36
+ ["L3" /* InputId.LeftAnalogButton */]: false,
37
+ ["Options" /* InputId.Options */]: false,
38
+ ["Create" /* InputId.Create */]: false,
39
+ ["R2Button" /* InputId.RightTriggerButton */]: false,
40
+ ["L2Button" /* InputId.LeftTriggerButton */]: false,
41
+ ["R1" /* InputId.RightBumper */]: false,
42
+ ["L1" /* InputId.LeftBumper */]: false,
43
+ ["Playstation" /* InputId.Playstation */]: false,
44
+ ["TouchButton" /* InputId.TouchButton */]: false,
45
+ ["Mute" /* InputId.Mute */]: false,
46
+ ["Status" /* InputId.Status */]: false,
47
+ ["TouchX0" /* InputId.TouchX0 */]: 0,
48
+ ["TouchY0" /* InputId.TouchY0 */]: 0,
49
+ ["TouchContact0" /* InputId.TouchContact0 */]: false,
50
+ ["TouchId0" /* InputId.TouchId0 */]: 0,
51
+ ["TouchX1" /* InputId.TouchX1 */]: 0,
52
+ ["TouchY1" /* InputId.TouchY1 */]: 0,
53
+ ["TouchContact1" /* InputId.TouchContact1 */]: false,
54
+ ["TouchId1" /* InputId.TouchId1 */]: 0,
55
+ ["GyroX" /* InputId.GyroX */]: 0,
56
+ ["GyroY" /* InputId.GyroY */]: 0,
57
+ ["GyroZ" /* InputId.GyroZ */]: 0,
58
+ ["AccelX" /* InputId.AccelX */]: 0,
59
+ ["AccelY" /* InputId.AccelY */]: 0,
60
+ ["AccelZ" /* InputId.AccelZ */]: 0,
49
61
  };
62
+ this.wireless = false;
50
63
  this.device = this.connect();
51
64
  }
65
+ /**
66
+ * Unpacks a Dualsense HID report.
67
+ */
52
68
  process(buffer) {
53
- const states = [...buffer];
54
- const buttonState = states[8];
55
- const misc = states[9];
56
- const misc2 = states[10];
57
- Object.assign(this.state, {
58
- ["LX" /* LeftAnalogX */]: mapAxis(states[1]),
59
- ["LY" /* LeftAnalogY */]: -mapAxis(states[2]),
60
- ["RX" /* RightAnalogX */]: mapAxis(states[3]),
61
- ["RY" /* RightAnalogY */]: -mapAxis(states[4]),
62
- ["L2" /* LeftTrigger */]: mapTrigger(states[5]),
63
- ["R2" /* RightTrigger */]: mapTrigger(states[6]),
64
- ["Triangle" /* Triangle */]: (buttonState & (1 << 7)) != 0,
65
- ["Circle" /* Circle */]: (buttonState & (1 << 6)) != 0,
66
- ["Cross" /* Cross */]: (buttonState & (1 << 5)) != 0,
67
- ["Square" /* Square */]: (buttonState & (1 << 4)) != 0,
68
- ["Up" /* Up */]: [0, 1, 7].includes(buttonState & 0x0f),
69
- ["Down" /* Down */]: [3, 4, 5].includes(buttonState & 0x0f),
70
- ["Left" /* Left */]: [5, 6, 7].includes(buttonState & 0x0f),
71
- ["Right" /* Right */]: [1, 2, 3].includes(buttonState & 0x0f),
72
- ["R3" /* RightAnalogButton */]: (misc & (1 << 7)) != 0,
73
- ["L3" /* LeftAnalogButton */]: (misc & (1 << 6)) != 0,
74
- ["Options" /* Options */]: (misc & (1 << 5)) != 0,
75
- ["Create" /* Create */]: (misc & (1 << 4)) != 0,
76
- ["R2Button" /* RightTriggerButton */]: (misc & (1 << 3)) != 0,
77
- ["L2Button" /* LeftTriggerButton */]: (misc & (1 << 2)) != 0,
78
- ["R1" /* RightBumper */]: (misc & (1 << 1)) != 0,
79
- ["L1" /* LeftBumper */]: (misc & (1 << 0)) != 0,
80
- ["Playstation" /* Playstation */]: (misc2 & (1 << 0)) != 0,
81
- ["TouchpadButton" /* TouchpadButton */]: (misc2 & 0x02) != 0,
82
- ["Mute" /* Mute */]: (misc2 & 0x04) != 0,
83
- });
84
- this.emit("input", this);
69
+ // Bluetooth buffer starts with an extra byte
70
+ const report = buffer.subarray(this.wireless ? 2 : 1);
71
+ const { state } = this;
72
+ state["LX" /* InputId.LeftAnalogX */] = mapAxis(report.readUint8(0));
73
+ state["LY" /* InputId.LeftAnalogY */] = -mapAxis(report.readUint8(1));
74
+ state["RX" /* InputId.RightAnalogX */] = mapAxis(report.readUint8(2));
75
+ state["RY" /* InputId.RightAnalogY */] = -mapAxis(report.readUint8(3));
76
+ state["L2" /* InputId.LeftTrigger */] = mapTrigger(report.readUint8(4));
77
+ state["R2" /* InputId.RightTrigger */] = mapTrigger(report.readUint8(5));
78
+ // 6 is a sequence byte
79
+ const mainButtons = report.readUint8(7);
80
+ state["Triangle" /* InputId.Triangle */] = (mainButtons & 128) > 0;
81
+ state["Circle" /* InputId.Circle */] = (mainButtons & 64) > 0;
82
+ state["Cross" /* InputId.Cross */] = (mainButtons & 32) > 0;
83
+ state["Square" /* InputId.Square */] = (mainButtons & 16) > 0;
84
+ state["Dpad" /* InputId.Dpad */] = (mainButtons << 4) >> 4;
85
+ state["Up" /* InputId.Up */] = state["Dpad" /* InputId.Dpad */] < 2 || state["Dpad" /* InputId.Dpad */] === 7;
86
+ state["Down" /* InputId.Down */] = state["Dpad" /* InputId.Dpad */] > 2 && state["Dpad" /* InputId.Dpad */] < 6;
87
+ state["Left" /* InputId.Left */] = state["Dpad" /* InputId.Dpad */] > 4 && state["Dpad" /* InputId.Dpad */] < 8;
88
+ state["Right" /* InputId.Right */] = state["Dpad" /* InputId.Dpad */] > 0 && state["Dpad" /* InputId.Dpad */] < 4;
89
+ const miscButtons = report.readUint8(8);
90
+ state["L2Button" /* InputId.LeftTriggerButton */] = (miscButtons & 4) > 0;
91
+ state["R2Button" /* InputId.RightTriggerButton */] = (miscButtons & 8) > 0;
92
+ state["L1" /* InputId.LeftBumper */] = (miscButtons & 1) > 0;
93
+ state["R1" /* InputId.RightBumper */] = (miscButtons & 2) > 0;
94
+ state["Create" /* InputId.Create */] = (miscButtons & 16) > 0;
95
+ state["Options" /* InputId.Options */] = (miscButtons & 32) > 0;
96
+ state["L3" /* InputId.LeftAnalogButton */] = (miscButtons & 64) > 0;
97
+ state["R3" /* InputId.RightAnalogButton */] = (miscButtons & 128) > 0;
98
+ const lastButtons = report.readUint8(9);
99
+ state["Playstation" /* InputId.Playstation */] = (lastButtons & 1) > 0;
100
+ state["TouchButton" /* InputId.TouchButton */] = (lastButtons & 2) > 0;
101
+ state["Mute" /* InputId.Mute */] = (lastButtons & 4) > 0;
102
+ // The other 5 bits are unused
103
+ // 5 reserved bytes
104
+ state["GyroX" /* InputId.GyroX */] = report.readUint16LE(15);
105
+ state["GyroY" /* InputId.GyroY */] = report.readUint16LE(17);
106
+ state["GyroZ" /* InputId.GyroZ */] = report.readUint16LE(19);
107
+ state["AccelX" /* InputId.AccelX */] = report.readUint16LE(21);
108
+ state["AccelY" /* InputId.AccelY */] = report.readUint16LE(23);
109
+ state["AccelZ" /* InputId.AccelZ */] = report.readUint16LE(25);
110
+ // 4 bytes for sensor timestamp (32LE)
111
+ // 1 reserved byte
112
+ state["TouchId0" /* InputId.TouchId0 */] = report.readUint8(32) & 0x7f;
113
+ state["TouchContact0" /* InputId.TouchContact0 */] = (report.readUint8(32) & 0x80) === 0;
114
+ state["TouchX0" /* InputId.TouchX0 */] = (report.readUint16LE(33) << 20) >> 20;
115
+ state["TouchY0" /* InputId.TouchY0 */] = report.readUint16LE(34) >> 4;
116
+ state["TouchId1" /* InputId.TouchId1 */] = report.readUint8(36) & 0x7f;
117
+ state["TouchContact1" /* InputId.TouchContact1 */] = (report.readUint8(36) & 0x80) === 0;
118
+ state["TouchX1" /* InputId.TouchX1 */] = (report.readUint16LE(37) << 20) >> 20;
119
+ state["TouchY1" /* InputId.TouchY1 */] = report.readUint16LE(38) >> 4;
120
+ // 12 reserved bytes
121
+ state["Status" /* InputId.Status */] = (report.readUint8(53) & 4) > 0;
122
+ this.emit("input", state);
85
123
  }
86
124
  handleError(error) {
87
125
  console.error(error);
@@ -103,9 +141,11 @@ class DualsenseHID extends events_1.EventEmitter {
103
141
  connect() {
104
142
  this.disconnect();
105
143
  const controllers = (0, node_hid_1.devices)(DualsenseHID.vendorId, DualsenseHID.productId);
106
- if (!controllers[0]?.path) {
144
+ if (controllers.length === 0 || !controllers[0].path) {
107
145
  throw new Error(`No controllers (${(0, node_hid_1.devices)().length} other devices)`);
108
146
  }
147
+ if (controllers[0].interface === -1)
148
+ this.wireless = true;
109
149
  const controller = new node_hid_1.HID(controllers[0].path);
110
150
  controller.on("data", this.process.bind(this));
111
151
  controller.on("error", this.handleError.bind(this));
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
package/dist/hid/ids.d.ts CHANGED
@@ -3,19 +3,25 @@ export declare const enum InputId {
3
3
  Create = "Create",
4
4
  Playstation = "Playstation",
5
5
  Mute = "Mute",
6
+ Status = "Status",
6
7
  Triangle = "Triangle",
7
8
  Circle = "Circle",
8
9
  Cross = "Cross",
9
10
  Square = "Square",
11
+ Dpad = "Dpad",
10
12
  Up = "Up",
11
13
  Down = "Down",
12
14
  Left = "Left",
13
15
  Right = "Right",
14
- TouchpadX1 = "TouchpadX1",
15
- TouchpadY1 = "TouchpadY1",
16
- TouchpadX2 = "TouchpadX2",
17
- TouchpadY2 = "TouchpadY2",
18
- TouchpadButton = "TouchpadButton",
16
+ TouchButton = "TouchButton",
17
+ TouchX0 = "TouchX0",
18
+ TouchY0 = "TouchY0",
19
+ TouchContact0 = "TouchContact0",
20
+ TouchId0 = "TouchId0",
21
+ TouchX1 = "TouchX1",
22
+ TouchY1 = "TouchY1",
23
+ TouchContact1 = "TouchContact1",
24
+ TouchId1 = "TouchId1",
19
25
  LeftAnalogButton = "L3",
20
26
  RightAnalogButton = "R3",
21
27
  LeftTrigger = "L2",
@@ -27,6 +33,12 @@ export declare const enum InputId {
27
33
  LeftAnalogX = "LX",
28
34
  LeftAnalogY = "LY",
29
35
  RightAnalogX = "RX",
30
- RightAnalogY = "RY"
36
+ RightAnalogY = "RY",
37
+ GyroX = "GyroX",
38
+ GyroY = "GyroY",
39
+ GyroZ = "GyroZ",
40
+ AccelX = "AccelX",
41
+ AccelY = "AccelY",
42
+ AccelZ = "AccelZ"
31
43
  }
32
44
  //# sourceMappingURL=ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/hid/ids.ts"],"names":[],"mappings":"AACA,0BAAkB,OAAO;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IAEb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IAEjB,EAAE,OAAO;IACT,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IAGf,UAAU,eAAe;IACzB,UAAU,eAAe;IAEzB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,cAAc,mBAAmB;IAEjC,gBAAgB,OAAO;IACvB,iBAAiB,OAAO;IAExB,WAAW,OAAO;IAClB,YAAY,OAAO;IACnB,iBAAiB,aAAa;IAC9B,kBAAkB,aAAa;IAE/B,UAAU,OAAO;IACjB,WAAW,OAAO;IAElB,WAAW,OAAO;IAClB,WAAW,OAAO;IAClB,YAAY,OAAO;IACnB,YAAY,OAAO;CACpB"}
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/hid/ids.ts"],"names":[],"mappings":"AACA,0BAAkB,OAAO;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;IACb,MAAM,WAAW;IAEjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IAEjB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IAEf,WAAW,gBAAgB;IAE3B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IAErB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IAErB,gBAAgB,OAAO;IACvB,iBAAiB,OAAO;IAExB,WAAW,OAAO;IAClB,YAAY,OAAO;IACnB,iBAAiB,aAAa;IAC9B,kBAAkB,aAAa;IAE/B,UAAU,OAAO;IACjB,WAAW,OAAO;IAElB,WAAW,OAAO;IAClB,WAAW,OAAO;IAClB,YAAY,OAAO;IACnB,YAAY,OAAO;IAEnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IAEf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB"}
package/dist/input.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { EventEmitter } from "events";
3
4
  import { inspect } from "util";
4
5
  export interface InputParams {
@@ -64,7 +65,7 @@ export declare abstract class Input<Type> extends EventEmitter implements AsyncI
64
65
  [InputChangedVirtual](): boolean;
65
66
  [InputChangedPrimitive](state: Type, newState: Type): boolean;
66
67
  [InputChangedThreshold](state: number, newState: number): boolean;
67
- [InputSetComparison](): void;
68
+ [InputSetComparison](): (state: Type, newState: Type) => boolean;
68
69
  /**
69
70
  * Update the input's state and trigger all necessary callbacks.
70
71
  */
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
package/dist/input.js CHANGED
@@ -46,10 +46,10 @@ class Input extends events_1.EventEmitter {
46
46
  this[InputParent] = parent;
47
47
  this.threshold = threshold;
48
48
  this.id = Symbol(this[exports.InputName]);
49
- this[InputSetComparison]();
49
+ this[exports.InputChanged] = this[InputSetComparison]();
50
50
  setImmediate(() => {
51
51
  this[InputAdopt]();
52
- this[InputSetComparison]();
52
+ this[exports.InputChanged] = this[InputSetComparison]();
53
53
  });
54
54
  }
55
55
  /**
@@ -130,13 +130,13 @@ class Input extends events_1.EventEmitter {
130
130
  // Sets a default comparison type for the Input based on the generic type.
131
131
  [InputSetComparison]() {
132
132
  if (typeof this.state === "number") {
133
- this[exports.InputChanged] = this[InputChangedThreshold];
133
+ return this[InputChangedThreshold];
134
134
  }
135
135
  else if (this.state instanceof Input) {
136
- this[exports.InputChanged] = this[InputChangedVirtual];
136
+ return this[InputChangedVirtual];
137
137
  }
138
138
  else {
139
- this[exports.InputChanged] = this[InputChangedPrimitive];
139
+ return this[InputChangedPrimitive];
140
140
  }
141
141
  }
142
142
  /**
package/dist/input.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dualsense-ts",
3
- "version": "1.3.0",
3
+ "version": "2.0.2",
4
4
  "description": "A natural interface for your DualSense controller, with Typescript",
5
5
  "keywords": [
6
6
  "dualsense",
package/src/dualsense.ts CHANGED
@@ -146,7 +146,7 @@ export class Dualsense extends Input<Dualsense> {
146
146
  this.dpad.down[InputSet](this.hid.state[InputId.Down]);
147
147
  this.dpad.right[InputSet](this.hid.state[InputId.Right]);
148
148
  this.dpad.left[InputSet](this.hid.state[InputId.Left]);
149
- this.touchpad.button[InputSet](this.hid.state[InputId.TouchpadButton]);
149
+ this.touchpad.button[InputSet](this.hid.state[InputId.TouchButton]);
150
150
  this.left.analog.x[InputSet](this.hid.state[InputId.LeftAnalogX]);
151
151
  this.left.analog.y[InputSet](this.hid.state[InputId.LeftAnalogY]);
152
152
  this.right.analog.x[InputSet](this.hid.state[InputId.RightAnalogX]);
@@ -3,7 +3,7 @@ import { EventEmitter } from "events";
3
3
 
4
4
  import { InputId } from "./ids";
5
5
 
6
- export type DualsenseHIDState = {
6
+ export interface DualsenseHIDState {
7
7
  [InputId.LeftAnalogX]: number;
8
8
  [InputId.LeftAnalogY]: number;
9
9
  [InputId.RightAnalogX]: number;
@@ -14,6 +14,7 @@ export type DualsenseHIDState = {
14
14
  [InputId.Circle]: boolean;
15
15
  [InputId.Cross]: boolean;
16
16
  [InputId.Square]: boolean;
17
+ [InputId.Dpad]: number;
17
18
  [InputId.Up]: boolean;
18
19
  [InputId.Down]: boolean;
19
20
  [InputId.Left]: boolean;
@@ -27,20 +28,31 @@ export type DualsenseHIDState = {
27
28
  [InputId.RightBumper]: boolean;
28
29
  [InputId.LeftBumper]: boolean;
29
30
  [InputId.Playstation]: boolean;
30
- [InputId.TouchpadButton]: boolean;
31
+ [InputId.TouchButton]: boolean;
31
32
  [InputId.Mute]: boolean;
32
- [InputId.TouchpadX1]: number;
33
- [InputId.TouchpadY1]: number;
34
- [InputId.TouchpadX2]: number;
35
- [InputId.TouchpadY2]: number;
36
- };
33
+ [InputId.Status]: boolean;
34
+ [InputId.TouchX0]: number;
35
+ [InputId.TouchY0]: number;
36
+ [InputId.TouchContact0]: boolean;
37
+ [InputId.TouchId0]: number;
38
+ [InputId.TouchX1]: number;
39
+ [InputId.TouchY1]: number;
40
+ [InputId.TouchContact1]: boolean;
41
+ [InputId.TouchId1]: number;
42
+ [InputId.GyroX]: number;
43
+ [InputId.GyroY]: number;
44
+ [InputId.GyroZ]: number;
45
+ [InputId.AccelX]: number;
46
+ [InputId.AccelY]: number;
47
+ [InputId.AccelZ]: number;
48
+ }
37
49
 
38
- // Maps a HID input from 0...255, to -1...1
50
+ // Maps a HID input of 0...255 to -1...1
39
51
  export function mapAxis(value: number): number {
40
52
  return (2 / 255) * Math.max(0, Math.min(255, value)) - 1;
41
53
  }
42
54
 
43
- // Maps a HID input from 0...255, to 0...1
55
+ // Maps a HID input of 0...255 to 0...1
44
56
  export function mapTrigger(value: number): number {
45
57
  return (1 / 255) * Math.max(0, Math.min(255, value));
46
58
  }
@@ -57,6 +69,7 @@ export class DualsenseHID extends EventEmitter {
57
69
  [InputId.Circle]: false,
58
70
  [InputId.Cross]: false,
59
71
  [InputId.Square]: false,
72
+ [InputId.Dpad]: 0,
60
73
  [InputId.Up]: false,
61
74
  [InputId.Down]: false,
62
75
  [InputId.Left]: false,
@@ -70,15 +83,27 @@ export class DualsenseHID extends EventEmitter {
70
83
  [InputId.RightBumper]: false,
71
84
  [InputId.LeftBumper]: false,
72
85
  [InputId.Playstation]: false,
73
- [InputId.TouchpadButton]: false,
86
+ [InputId.TouchButton]: false,
74
87
  [InputId.Mute]: false,
75
- [InputId.TouchpadX1]: 0,
76
- [InputId.TouchpadY1]: 0,
77
- [InputId.TouchpadX2]: 0,
78
- [InputId.TouchpadY2]: 0,
88
+ [InputId.Status]: false,
89
+ [InputId.TouchX0]: 0,
90
+ [InputId.TouchY0]: 0,
91
+ [InputId.TouchContact0]: false,
92
+ [InputId.TouchId0]: 0,
93
+ [InputId.TouchX1]: 0,
94
+ [InputId.TouchY1]: 0,
95
+ [InputId.TouchContact1]: false,
96
+ [InputId.TouchId1]: 0,
97
+ [InputId.GyroX]: 0,
98
+ [InputId.GyroY]: 0,
99
+ [InputId.GyroZ]: 0,
100
+ [InputId.AccelX]: 0,
101
+ [InputId.AccelY]: 0,
102
+ [InputId.AccelZ]: 0,
79
103
  };
80
104
 
81
105
  private device: HID;
106
+ private wireless: boolean = false;
82
107
 
83
108
  static readonly vendorId: number = 1356;
84
109
  static readonly productId: number = 3302;
@@ -88,41 +113,66 @@ export class DualsenseHID extends EventEmitter {
88
113
  this.device = this.connect();
89
114
  }
90
115
 
116
+ /**
117
+ * Unpacks a Dualsense HID report.
118
+ */
91
119
  private process(buffer: Buffer): void {
92
- const states = [...buffer];
93
- const buttonState: number = states[8];
94
- const misc: number = states[9];
95
- const misc2: number = states[10];
96
-
97
- Object.assign(this.state, {
98
- [InputId.LeftAnalogX]: mapAxis(states[1]),
99
- [InputId.LeftAnalogY]: -mapAxis(states[2]),
100
- [InputId.RightAnalogX]: mapAxis(states[3]),
101
- [InputId.RightAnalogY]: -mapAxis(states[4]),
102
- [InputId.LeftTrigger]: mapTrigger(states[5]),
103
- [InputId.RightTrigger]: mapTrigger(states[6]),
104
- [InputId.Triangle]: (buttonState & (1 << 7)) != 0,
105
- [InputId.Circle]: (buttonState & (1 << 6)) != 0,
106
- [InputId.Cross]: (buttonState & (1 << 5)) != 0,
107
- [InputId.Square]: (buttonState & (1 << 4)) != 0,
108
- [InputId.Up]: [0, 1, 7].includes(buttonState & 0x0f),
109
- [InputId.Down]: [3, 4, 5].includes(buttonState & 0x0f),
110
- [InputId.Left]: [5, 6, 7].includes(buttonState & 0x0f),
111
- [InputId.Right]: [1, 2, 3].includes(buttonState & 0x0f),
112
- [InputId.RightAnalogButton]: (misc & (1 << 7)) != 0,
113
- [InputId.LeftAnalogButton]: (misc & (1 << 6)) != 0,
114
- [InputId.Options]: (misc & (1 << 5)) != 0,
115
- [InputId.Create]: (misc & (1 << 4)) != 0,
116
- [InputId.RightTriggerButton]: (misc & (1 << 3)) != 0,
117
- [InputId.LeftTriggerButton]: (misc & (1 << 2)) != 0,
118
- [InputId.RightBumper]: (misc & (1 << 1)) != 0,
119
- [InputId.LeftBumper]: (misc & (1 << 0)) != 0,
120
- [InputId.Playstation]: (misc2 & (1 << 0)) != 0,
121
- [InputId.TouchpadButton]: (misc2 & 0x02) != 0,
122
- [InputId.Mute]: (misc2 & 0x04) != 0,
123
- });
124
-
125
- this.emit("input", this);
120
+ // Bluetooth buffer starts with an extra byte
121
+ const report = buffer.subarray(this.wireless ? 2 : 1);
122
+
123
+ const { state } = this;
124
+ state[InputId.LeftAnalogX] = mapAxis(report.readUint8(0));
125
+ state[InputId.LeftAnalogY] = -mapAxis(report.readUint8(1));
126
+ state[InputId.RightAnalogX] = mapAxis(report.readUint8(2));
127
+ state[InputId.RightAnalogY] = -mapAxis(report.readUint8(3));
128
+ state[InputId.LeftTrigger] = mapTrigger(report.readUint8(4));
129
+ state[InputId.RightTrigger] = mapTrigger(report.readUint8(5));
130
+ // 6 is a sequence byte
131
+ const mainButtons = report.readUint8(7);
132
+ state[InputId.Triangle] = (mainButtons & 128) > 0;
133
+ state[InputId.Circle] = (mainButtons & 64) > 0;
134
+ state[InputId.Cross] = (mainButtons & 32) > 0;
135
+ state[InputId.Square] = (mainButtons & 16) > 0;
136
+ state[InputId.Dpad] = (mainButtons << 4) >> 4;
137
+ state[InputId.Up] = state[InputId.Dpad] < 2 || state[InputId.Dpad] === 7;
138
+ state[InputId.Down] = state[InputId.Dpad] > 2 && state[InputId.Dpad] < 6;
139
+ state[InputId.Left] = state[InputId.Dpad] > 4 && state[InputId.Dpad] < 8;
140
+ state[InputId.Right] = state[InputId.Dpad] > 0 && state[InputId.Dpad] < 4;
141
+ const miscButtons = report.readUint8(8);
142
+ state[InputId.LeftTriggerButton] = (miscButtons & 4) > 0;
143
+ state[InputId.RightTriggerButton] = (miscButtons & 8) > 0;
144
+ state[InputId.LeftBumper] = (miscButtons & 1) > 0;
145
+ state[InputId.RightBumper] = (miscButtons & 2) > 0;
146
+ state[InputId.Create] = (miscButtons & 16) > 0;
147
+ state[InputId.Options] = (miscButtons & 32) > 0;
148
+ state[InputId.LeftAnalogButton] = (miscButtons & 64) > 0;
149
+ state[InputId.RightAnalogButton] = (miscButtons & 128) > 0;
150
+ const lastButtons = report.readUint8(9);
151
+ state[InputId.Playstation] = (lastButtons & 1) > 0;
152
+ state[InputId.TouchButton] = (lastButtons & 2) > 0;
153
+ state[InputId.Mute] = (lastButtons & 4) > 0;
154
+ // The other 5 bits are unused
155
+ // 5 reserved bytes
156
+ state[InputId.GyroX] = report.readUint16LE(15);
157
+ state[InputId.GyroY] = report.readUint16LE(17);
158
+ state[InputId.GyroZ] = report.readUint16LE(19);
159
+ state[InputId.AccelX] = report.readUint16LE(21);
160
+ state[InputId.AccelY] = report.readUint16LE(23);
161
+ state[InputId.AccelZ] = report.readUint16LE(25);
162
+ // 4 bytes for sensor timestamp (32LE)
163
+ // 1 reserved byte
164
+ state[InputId.TouchId0] = report.readUint8(32) & 0x7f;
165
+ state[InputId.TouchContact0] = (report.readUint8(32) & 0x80) === 0;
166
+ state[InputId.TouchX0] = (report.readUint16LE(33) << 20) >> 20;
167
+ state[InputId.TouchY0] = report.readUint16LE(34) >> 4;
168
+ state[InputId.TouchId1] = report.readUint8(36) & 0x7f;
169
+ state[InputId.TouchContact1] = (report.readUint8(36) & 0x80) === 0;
170
+ state[InputId.TouchX1] = (report.readUint16LE(37) << 20) >> 20;
171
+ state[InputId.TouchY1] = report.readUint16LE(38) >> 4;
172
+ // 12 reserved bytes
173
+ state[InputId.Status] = (report.readUint8(53) & 4) > 0;
174
+
175
+ this.emit("input", state);
126
176
  }
127
177
 
128
178
  private handleError(error: unknown): void {
@@ -147,10 +197,12 @@ export class DualsenseHID extends EventEmitter {
147
197
  this.disconnect();
148
198
 
149
199
  const controllers = devices(DualsenseHID.vendorId, DualsenseHID.productId);
150
- if (!controllers[0]?.path) {
200
+ if (controllers.length === 0 || !controllers[0].path) {
151
201
  throw new Error(`No controllers (${devices().length} other devices)`);
152
202
  }
153
203
 
204
+ if (controllers[0].interface === -1) this.wireless = true;
205
+
154
206
  const controller = new HID(controllers[0].path);
155
207
  controller.on("data", this.process.bind(this));
156
208
  controller.on("error", this.handleError.bind(this));
package/src/hid/ids.ts CHANGED
@@ -4,24 +4,30 @@ export const enum InputId {
4
4
  Create = "Create",
5
5
  Playstation = "Playstation",
6
6
  Mute = "Mute",
7
+ Status = "Status", // Orange indicator light state
7
8
 
8
9
  Triangle = "Triangle",
9
10
  Circle = "Circle",
10
11
  Cross = "Cross",
11
12
  Square = "Square",
12
13
 
14
+ Dpad = "Dpad",
13
15
  Up = "Up",
14
16
  Down = "Down",
15
17
  Left = "Left",
16
18
  Right = "Right",
17
19
 
18
- // Multitouch point one
19
- TouchpadX1 = "TouchpadX1",
20
- TouchpadY1 = "TouchpadY1",
21
- // Multitouch point two
22
- TouchpadX2 = "TouchpadX2",
23
- TouchpadY2 = "TouchpadY2",
24
- TouchpadButton = "TouchpadButton",
20
+ TouchButton = "TouchButton",
21
+
22
+ TouchX0 = "TouchX0",
23
+ TouchY0 = "TouchY0",
24
+ TouchContact0 = "TouchContact0",
25
+ TouchId0 = "TouchId0",
26
+
27
+ TouchX1 = "TouchX1",
28
+ TouchY1 = "TouchY1",
29
+ TouchContact1 = "TouchContact1",
30
+ TouchId1 = "TouchId1",
25
31
 
26
32
  LeftAnalogButton = "L3",
27
33
  RightAnalogButton = "R3",
@@ -38,4 +44,12 @@ export const enum InputId {
38
44
  LeftAnalogY = "LY",
39
45
  RightAnalogX = "RX",
40
46
  RightAnalogY = "RY",
47
+
48
+ GyroX = "GyroX",
49
+ GyroY = "GyroY",
50
+ GyroZ = "GyroZ",
51
+
52
+ AccelX = "AccelX",
53
+ AccelY = "AccelY",
54
+ AccelZ = "AccelZ",
41
55
  }
package/src/input.ts CHANGED
@@ -113,10 +113,10 @@ export abstract class Input<Type>
113
113
  this.threshold = threshold;
114
114
  this.id = Symbol(this[InputName]);
115
115
 
116
- this[InputSetComparison]();
116
+ this[InputChanged] = this[InputSetComparison]();
117
117
  setImmediate(() => {
118
118
  this[InputAdopt]();
119
- this[InputSetComparison]();
119
+ this[InputChanged] = this[InputSetComparison]();
120
120
  });
121
121
  }
122
122
 
@@ -192,16 +192,16 @@ export abstract class Input<Type>
192
192
  }
193
193
 
194
194
  // Sets a default comparison type for the Input based on the generic type.
195
- [InputSetComparison](): void {
195
+ [InputSetComparison](): (state: Type, newState: Type) => boolean {
196
196
  if (typeof this.state === "number") {
197
- this[InputChanged] = this[InputChangedThreshold] as unknown as (
197
+ return this[InputChangedThreshold] as unknown as (
198
198
  state: Type,
199
199
  newState: Type
200
200
  ) => boolean;
201
201
  } else if (this.state instanceof Input) {
202
- this[InputChanged] = this[InputChangedVirtual];
202
+ return this[InputChangedVirtual];
203
203
  } else {
204
- this[InputChanged] = this[InputChangedPrimitive];
204
+ return this[InputChangedPrimitive];
205
205
  }
206
206
  }
207
207