dualsense-ts 1.1.3 → 1.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"analog.d.ts","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,CAAC,CAAC,EAAE,WAAW,CAAC;IAChB,CAAC,CAAC,EAAE,WAAW,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,qBAAa,MAAO,SAAQ,KAAK,CAAC,MAAM,CAAC;IACvC,SAAgB,KAAK,EAAE,MAAM,CAAQ;IAErC,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,MAAM,EAAE,SAAS,CAAC;gBAEtB,MAAM,CAAC,EAAE,YAAY;IAWjC,IAAW,MAAM,IAAI,OAAO,CAE3B;IAGD,IAAW,MAAM,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAE5D;IAGD,IAAW,SAAS,IAAI,SAAS,CAEhC;IAGD,IAAW,SAAS,IAAI,OAAO,CAE9B;IAGD,IAAW,OAAO,IAAI,OAAO,CAE5B;IAGD,IAAW,KAAK,IAAI,OAAO,CAE1B;IAGD,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAGD,IAAW,OAAO,IAAI,OAAO,CAE5B;IAGD,IAAW,YAAY,IAAI,OAAO,CAEjC;CACF"}
1
+ {"version":3,"file":"analog.d.ts","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,CAAC,CAAC,EAAE,WAAW,CAAC;IAChB,CAAC,CAAC,EAAE,WAAW,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,qBAAa,MAAO,SAAQ,KAAK,CAAC,MAAM,CAAC;IACvC,SAAgB,KAAK,EAAE,MAAM,CAAQ;IAErC,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,SAAgB,MAAM,EAAE,SAAS,CAAC;gBAEtB,MAAM,CAAC,EAAE,YAAY;IAejC,IAAW,MAAM,IAAI,OAAO,CAE3B;IAGD,IAAW,MAAM,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAE5D;IAGD,IAAW,SAAS,IAAI,SAAS,CAEhC;IAGD,IAAW,SAAS,IAAI,OAAO,CAE9B;IAGD,IAAW,OAAO,IAAI,OAAO,CAE5B;IAGD,IAAW,KAAK,IAAI,OAAO,CAE1B;IAGD,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAGD,IAAW,OAAO,IAAI,OAAO,CAE5B;IAGD,IAAW,YAAY,IAAI,OAAO,CAEjC;CACF"}
@@ -17,8 +17,8 @@ class Analog extends input_1.Input {
17
17
  super(params);
18
18
  this.state = this;
19
19
  this.button = new momentary_1.Momentary(params?.button || { icon: "3", name: "Button" });
20
- this.x = new axis_1.Axis(params?.x || { icon: "↔", name: "X" });
21
- this.y = new axis_1.Axis(params?.y || { icon: "↕", name: "Y" });
20
+ this.x = new axis_1.Axis(params?.x || { icon: "↔", name: "X", threshold: (1 / 255) * 3 });
21
+ this.y = new axis_1.Axis(params?.y || { icon: "↕", name: "Y", threshold: (1 / 255) * 3 });
22
22
  }
23
23
  // Returns true if the stick is away from the idle position, or the button is pressed.
24
24
  get active() {
@@ -1 +1 @@
1
- {"version":3,"file":"analog.js","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAC9B,2CAAwC;AACxC,oCAA8C;AAU9C;;;;;;;GAOG;AACH,MAAa,MAAO,SAAQ,aAAa;IAOvC,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;QAPA,UAAK,GAAW,IAAI,CAAC;QASnC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CACzB,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAChD,CAAC;QACF,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,sFAAsF;IACtF,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,uEAAuE;IACvE,IAAW,MAAM;QACf,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClE,CAAC;IAED,iDAAiD;IACjD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,gEAAgE;IAChE,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,yBAAyB;IACzB,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,yBAAyB;IACzB,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+CAA+C;IAC/C,IAAW,gBAAgB;QACzB,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAiC;IACjC,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,iCAAiC;IACjC,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AA7DD,wBA6DC"}
1
+ {"version":3,"file":"analog.js","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAC9B,2CAAwC;AACxC,oCAA8C;AAU9C;;;;;;;GAOG;AACH,MAAa,MAAO,SAAQ,aAAa;IAOvC,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;QAPA,UAAK,GAAW,IAAI,CAAC;QASnC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CACzB,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAChD,CAAC;QACF,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CACf,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAChE,CAAC;QACF,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CACf,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,uEAAuE;IACvE,IAAW,MAAM;QACf,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClE,CAAC;IAED,iDAAiD;IACjD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,gEAAgE;IAChE,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,yBAAyB;IACzB,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,yBAAyB;IACzB,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+CAA+C;IAC/C,IAAW,gBAAgB;QACzB,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,iCAAiC;IACjC,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,iCAAiC;IACjC,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAjED,wBAiEC"}
@@ -2,10 +2,8 @@ import { Input } from "../input";
2
2
  import { Force, Magnitude } from "../math";
3
3
  export declare class Axis extends Input<Force> {
4
4
  state: Force;
5
- deadzone: Magnitude;
6
5
  get active(): boolean;
7
6
  get force(): Force;
8
7
  get magnitude(): Magnitude;
9
- changes(state: Magnitude): boolean;
10
8
  }
11
9
  //# sourceMappingURL=axis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C,qBAAa,IAAK,SAAQ,KAAK,CAAC,KAAK,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAK;IAEjB,QAAQ,EAAE,SAAS,CAAS;IAEnC,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,KAAK,IAAI,KAAK,CAExB;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;IAEM,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;CAI1C"}
1
+ {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C,qBAAa,IAAK,SAAQ,KAAK,CAAC,KAAK,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAK;IAExB,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,KAAK,IAAI,KAAK,CAExB;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;CACF"}
@@ -6,10 +6,9 @@ class Axis extends input_1.Input {
6
6
  constructor() {
7
7
  super(...arguments);
8
8
  this.state = 0;
9
- this.deadzone = 0.025;
10
9
  }
11
10
  get active() {
12
- return this.magnitude > this.deadzone;
11
+ return this.magnitude > this.threshold;
13
12
  }
14
13
  get force() {
15
14
  return this.state;
@@ -17,11 +16,6 @@ class Axis extends input_1.Input {
17
16
  get magnitude() {
18
17
  return Math.abs(this.state);
19
18
  }
20
- changes(state) {
21
- if (!this.active && Math.abs(state) < this.deadzone)
22
- return false;
23
- return this.state !== state;
24
- }
25
19
  }
26
20
  exports.Axis = Axis;
27
21
  //# sourceMappingURL=axis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axis.js","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAGjC,MAAa,IAAK,SAAQ,aAAY;IAAtC;;QACS,UAAK,GAAU,CAAC,CAAC;QAEjB,aAAQ,GAAc,KAAK,CAAC;IAkBrC,CAAC;IAhBC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO,CAAC,KAAgB;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClE,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;IAC9B,CAAC;CACF;AArBD,oBAqBC"}
1
+ {"version":3,"file":"axis.js","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAGjC,MAAa,IAAK,SAAQ,aAAY;IAAtC;;QACS,UAAK,GAAU,CAAC,CAAC;IAa1B,CAAC;IAXC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAdD,oBAcC"}
@@ -11,7 +11,7 @@ class Unisense extends input_1.Input {
11
11
  constructor(params) {
12
12
  super(params);
13
13
  this.state = this;
14
- this.trigger = new trigger_1.Trigger(params?.trigger || { icon: "2", name: "Trigger" });
14
+ this.trigger = new trigger_1.Trigger(params?.trigger || { icon: "2", name: "Trigger", threshold: (1 / 255) * 3 });
15
15
  this.bumper = new momentary_1.Momentary(params?.bumper || { icon: "1", name: "Bumper" });
16
16
  this.analog = new analog_1.Analog(params?.analog || { icon: "⨁", name: "Analog" });
17
17
  this.haptic = new haptics_1.Haptic();
@@ -1 +1 @@
1
- {"version":3,"file":"unisense.js","sourceRoot":"","sources":["../../src/elements/unisense.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,2CAAwC;AACxC,qCAAkC;AAClC,wCAAoC;AACpC,oCAA8C;AAQ9C,iFAAiF;AACjF,MAAa,QAAS,SAAQ,aAAe;IAQ3C,YAAY,MAAuB;QACjC,KAAK,CAAC,MAAM,CAAC,CAAC;QARA,UAAK,GAAa,IAAI,CAAC;QAUrC,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CACxB,MAAM,EAAE,OAAO,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAClD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CACzB,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAChD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,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;AAxBD,4BAwBC"}
1
+ {"version":3,"file":"unisense.js","sourceRoot":"","sources":["../../src/elements/unisense.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,2CAAwC;AACxC,qCAAkC;AAClC,wCAAoC;AACpC,oCAA8C;AAQ9C,iFAAiF;AACjF,MAAa,QAAS,SAAQ,aAAe;IAQ3C,YAAY,MAAuB;QACjC,KAAK,CAAC,MAAM,CAAC,CAAC;QARA,UAAK,GAAa,IAAI,CAAC;QAUrC,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CACxB,MAAM,EAAE,OAAO,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,GAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC1E,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CACzB,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAChD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,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;AAxBD,4BAwBC"}
@@ -32,6 +32,8 @@ export declare type DualsenseHIDState = {
32
32
  [InputId.TouchpadX2]: number;
33
33
  [InputId.TouchpadY2]: number;
34
34
  };
35
+ export declare function mapAxis(value: number): number;
36
+ export declare function mapTrigger(value: number): number;
35
37
  export declare class DualsenseHID extends EventEmitter {
36
38
  state: DualsenseHIDState;
37
39
  private device;
@@ -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;AAEF,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":";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,8 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DualsenseHID = void 0;
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
7
+ function mapAxis(value) {
8
+ return (2 / 255) * Math.max(0, Math.min(255, value)) - 1;
9
+ }
10
+ exports.mapAxis = mapAxis;
11
+ // Maps a HID input from 0...255, to 0...1
12
+ function mapTrigger(value) {
13
+ return (1 / 255) * Math.max(0, Math.min(255, value));
14
+ }
15
+ exports.mapTrigger = mapTrigger;
6
16
  class DualsenseHID extends events_1.EventEmitter {
7
17
  constructor() {
8
18
  super();
@@ -45,12 +55,12 @@ class DualsenseHID extends events_1.EventEmitter {
45
55
  const misc = states[9];
46
56
  const misc2 = states[10];
47
57
  Object.assign(this.state, {
48
- ["LX" /* LeftAnalogX */]: states[1] - 127,
49
- ["LY" /* LeftAnalogY */]: states[2] - 127,
50
- ["RX" /* RightAnalogX */]: states[3] - 127,
51
- ["RY" /* RightAnalogY */]: states[4] - 127,
52
- ["L2" /* LeftTrigger */]: states[5],
53
- ["R2" /* RightTrigger */]: states[6],
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]),
54
64
  ["Triangle" /* Triangle */]: (buttonState & (1 << 7)) != 0,
55
65
  ["Circle" /* Circle */]: (buttonState & (1 << 6)) != 0,
56
66
  ["Cross" /* Cross */]: (buttonState & (1 << 5)) != 0,
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":";;;AAAA,uCAAwC;AACxC,mCAAsC;AAoCtC,MAAa,YAAa,SAAQ,qBAAY;IAsC5C;QACE,KAAK,EAAE,CAAC;QAtCH,UAAK,GAAsB;YAChC,wBAAqB,EAAE,CAAC;YACxB,wBAAqB,EAAE,CAAC;YACxB,yBAAsB,EAAE,CAAC;YACzB,yBAAsB,EAAE,CAAC;YACzB,wBAAqB,EAAE,CAAC;YACxB,yBAAsB,EAAE,CAAC;YACzB,2BAAkB,EAAE,KAAK;YACzB,uBAAgB,EAAE,KAAK;YACvB,qBAAe,EAAE,KAAK;YACtB,uBAAgB,EAAE,KAAK;YACvB,eAAY,EAAE,KAAK;YACnB,mBAAc,EAAE,KAAK;YACrB,mBAAc,EAAE,KAAK;YACrB,qBAAe,EAAE,KAAK;YACtB,8BAA2B,EAAE,KAAK;YAClC,6BAA0B,EAAE,KAAK;YACjC,yBAAiB,EAAE,KAAK;YACxB,uBAAgB,EAAE,KAAK;YACvB,qCAA4B,EAAE,KAAK;YACnC,oCAA2B,EAAE,KAAK;YAClC,wBAAqB,EAAE,KAAK;YAC5B,uBAAoB,EAAE,KAAK;YAC3B,iCAAqB,EAAE,KAAK;YAC5B,uCAAwB,EAAE,KAAK;YAC/B,mBAAc,EAAE,KAAK;YACrB,+BAAoB,EAAE,CAAC;YACvB,+BAAoB,EAAE,CAAC;YACvB,+BAAoB,EAAE,CAAC;YACvB,+BAAoB,EAAE,CAAC;SACxB,CAAC;QASA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAEO,OAAO,CAAC,MAAc;QAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAW,MAAM,CAAC,EAAE,CAAC,CAAC;QAEjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;YACxB,wBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;YACtC,wBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;YACtC,yBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;YACvC,yBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;YACvC,wBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;YAChC,yBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC;YACjC,2BAAkB,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACjD,uBAAgB,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/C,qBAAe,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,uBAAgB,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/C,eAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YACpD,mBAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YACtD,mBAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YACtD,qBAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YACvD,8BAA2B,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,6BAA0B,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,yBAAiB,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACzC,uBAAgB,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,qCAA4B,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,oCAA2B,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,wBAAqB,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,uBAAoB,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C,iCAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,uCAAwB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YAC7C,mBAAc,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,WAAW,CAAC,KAAc;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI;gBACF,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;aACrB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;SACF;IACH,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,MAAM,WAAW,GAAG,IAAA,kBAAO,EAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAA,kBAAO,GAAE,CAAC,MAAM,iBAAiB,CAAC,CAAC;SACvE;QAED,MAAM,UAAU,GAAG,IAAI,cAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,UAAU,CAAC;IACpB,CAAC;;AA9GH,oCA+GC;AA5EiB,qBAAQ,GAAW,IAAI,CAAC;AACxB,sBAAS,GAAW,IAAI,CAAC"}
1
+ {"version":3,"file":"dualsense_hid.js","sourceRoot":"","sources":["../../src/hid/dualsense_hid.ts"],"names":[],"mappings":"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"}
package/dist/input.d.ts CHANGED
@@ -18,9 +18,9 @@ export declare const InputChanged: unique symbol;
18
18
  export declare const InputSet: unique symbol;
19
19
  export declare const InputName: unique symbol;
20
20
  export declare const InputIcon: unique symbol;
21
- export declare type InputEvent = "change" | "input";
21
+ export declare type InputEvent = "change" | "input" | "press" | "release";
22
22
  export declare interface Input<Type> {
23
- on(event: InputEvent, listener: (input: Input<Type>, changed: Input<unknown>) => void): this;
23
+ on(event: InputEvent, listener: (input: Input<Type>, changed: Input<unknown>) => unknown | Promise<unknown>): this;
24
24
  emit(event: InputEvent, ...args: [Input<Type>, Input<unknown> | Input<Type>]): boolean;
25
25
  }
26
26
  /**
@@ -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
@@ -148,6 +148,11 @@ class Input extends events_1.EventEmitter {
148
148
  this.state = state;
149
149
  this.lastChange = Date.now();
150
150
  this.emit("change", this, this);
151
+ if (typeof state === "boolean") {
152
+ state
153
+ ? this.emit("press", this, this)
154
+ : this.emit("release", this, this);
155
+ }
151
156
  }
152
157
  this.emit("input", this, this);
153
158
  }
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.1.3",
3
+ "version": "1.3.0",
4
4
  "description": "A natural interface for your DualSense controller, with Typescript",
5
5
  "keywords": [
6
6
  "dualsense",
@@ -31,8 +31,12 @@ export class Analog extends Input<Analog> {
31
31
  this.button = new Momentary(
32
32
  params?.button || { icon: "3", name: "Button" }
33
33
  );
34
- this.x = new Axis(params?.x || { icon: "↔", name: "X" });
35
- this.y = new Axis(params?.y || { icon: "", name: "Y" });
34
+ this.x = new Axis(
35
+ params?.x || { icon: "", name: "X", threshold: (1 / 255) * 3 }
36
+ );
37
+ this.y = new Axis(
38
+ params?.y || { icon: "↕", name: "Y", threshold: (1 / 255) * 3 }
39
+ );
36
40
  }
37
41
 
38
42
  // Returns true if the stick is away from the idle position, or the button is pressed.
@@ -4,10 +4,8 @@ import { Force, Magnitude } from "../math";
4
4
  export class Axis extends Input<Force> {
5
5
  public state: Force = 0;
6
6
 
7
- public deadzone: Magnitude = 0.025;
8
-
9
7
  public get active(): boolean {
10
- return this.magnitude > this.deadzone;
8
+ return this.magnitude > this.threshold;
11
9
  }
12
10
 
13
11
  public get force(): Force {
@@ -17,9 +15,4 @@ export class Axis extends Input<Force> {
17
15
  public get magnitude(): Magnitude {
18
16
  return Math.abs(this.state);
19
17
  }
20
-
21
- public changes(state: Magnitude): boolean {
22
- if (!this.active && Math.abs(state) < this.deadzone) return false;
23
- return this.state !== state;
24
- }
25
18
  }
@@ -23,4 +23,32 @@ describe("Momentary", () => {
23
23
  button[InputSet](false);
24
24
  expect(button.state).toEqual(false);
25
25
  });
26
+
27
+ it("should implement 'on `press`'", (done) => {
28
+ const button = new Momentary({});
29
+ button[InputSet](false);
30
+ button.on("release", () => {
31
+ fail();
32
+ });
33
+
34
+ button.on("press", (btn) => {
35
+ expect(button.id).toBe(btn.id);
36
+ done();
37
+ });
38
+ button[InputSet](true);
39
+ });
40
+
41
+ it("should implement 'on `release`'", (done) => {
42
+ const button = new Momentary({});
43
+ button[InputSet](true);
44
+ button.on("press", () => {
45
+ fail();
46
+ });
47
+
48
+ button.on("release", (btn) => {
49
+ expect(button.id).toBe(btn.id);
50
+ done();
51
+ });
52
+ button[InputSet](false);
53
+ });
26
54
  });
@@ -23,7 +23,7 @@ export class Unisense extends Input<Unisense> {
23
23
  super(params);
24
24
 
25
25
  this.trigger = new Trigger(
26
- params?.trigger || { icon: "2", name: "Trigger" }
26
+ params?.trigger || { icon: "2", name: "Trigger", threshold: (1/255) * 3 }
27
27
  );
28
28
  this.bumper = new Momentary(
29
29
  params?.bumper || { icon: "1", name: "Bumper" }
@@ -0,0 +1,19 @@
1
+ import { mapAxis, mapTrigger } from "./dualsense_hid";
2
+
3
+ describe("Dualsense HID", () => {
4
+ it("should map axis values betwen -1 and 1", () => {
5
+ expect(mapAxis(255)).toBeCloseTo(1);
6
+ expect(mapAxis(255 / 2)).toBeCloseTo(0);
7
+ expect(mapAxis(255 / 4)).toBeCloseTo(-0.5);
8
+ expect(mapAxis(255 / 8)).toBeCloseTo(-0.75);
9
+ expect(mapAxis(0)).toBeCloseTo(-1);
10
+ });
11
+
12
+ it("should map trigger values betwen 0 and 1", () => {
13
+ expect(mapTrigger(255)).toBeCloseTo(1);
14
+ expect(mapTrigger(255 / 2)).toBeCloseTo(0.5);
15
+ expect(mapTrigger(255 / 4)).toBeCloseTo(0.25);
16
+ expect(mapTrigger(255 / 8)).toBeCloseTo(0.125);
17
+ expect(mapTrigger(0)).toBeCloseTo(0);
18
+ });
19
+ });
@@ -35,6 +35,16 @@ export type DualsenseHIDState = {
35
35
  [InputId.TouchpadY2]: number;
36
36
  };
37
37
 
38
+ // Maps a HID input from 0...255, to -1...1
39
+ export function mapAxis(value: number): number {
40
+ return (2 / 255) * Math.max(0, Math.min(255, value)) - 1;
41
+ }
42
+
43
+ // Maps a HID input from 0...255, to 0...1
44
+ export function mapTrigger(value: number): number {
45
+ return (1 / 255) * Math.max(0, Math.min(255, value));
46
+ }
47
+
38
48
  export class DualsenseHID extends EventEmitter {
39
49
  public state: DualsenseHIDState = {
40
50
  [InputId.LeftAnalogX]: 0,
@@ -85,12 +95,12 @@ export class DualsenseHID extends EventEmitter {
85
95
  const misc2: number = states[10];
86
96
 
87
97
  Object.assign(this.state, {
88
- [InputId.LeftAnalogX]: states[1] - 127,
89
- [InputId.LeftAnalogY]: states[2] - 127,
90
- [InputId.RightAnalogX]: states[3] - 127,
91
- [InputId.RightAnalogY]: states[4] - 127,
92
- [InputId.LeftTrigger]: states[5],
93
- [InputId.RightTrigger]: states[6],
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]),
94
104
  [InputId.Triangle]: (buttonState & (1 << 7)) != 0,
95
105
  [InputId.Circle]: (buttonState & (1 << 6)) != 0,
96
106
  [InputId.Cross]: (buttonState & (1 << 5)) != 0,
package/src/input.ts CHANGED
@@ -31,12 +31,15 @@ export const InputSet = Symbol("InputSet");
31
31
  export const InputName = Symbol("InputName");
32
32
  export const InputIcon = Symbol("InputIcon");
33
33
 
34
- export type InputEvent = "change" | "input";
34
+ export type InputEvent = "change" | "input" | "press" | "release";
35
35
 
36
36
  export declare interface Input<Type> {
37
37
  on(
38
38
  event: InputEvent,
39
- listener: (input: Input<Type>, changed: Input<unknown>) => void
39
+ listener: (
40
+ input: Input<Type>,
41
+ changed: Input<unknown>
42
+ ) => unknown | Promise<unknown>
40
43
  ): this;
41
44
  emit(
42
45
  event: InputEvent,
@@ -211,6 +214,11 @@ export abstract class Input<Type>
211
214
  this.state = state;
212
215
  this.lastChange = Date.now();
213
216
  this.emit("change", this, this);
217
+ if (typeof state === "boolean") {
218
+ state
219
+ ? this.emit("press", this, this)
220
+ : this.emit("release", this, this);
221
+ }
214
222
  }
215
223
 
216
224
  this.emit("input", this, this);