dualsense-ts 1.1.12 → 2.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.
package/dist/dualsense.js CHANGED
@@ -96,7 +96,7 @@ class Dualsense extends input_1.Input {
96
96
  this.dpad.down[input_1.InputSet](this.hid.state["Down" /* Down */]);
97
97
  this.dpad.right[input_1.InputSet](this.hid.state["Right" /* Right */]);
98
98
  this.dpad.left[input_1.InputSet](this.hid.state["Left" /* Left */]);
99
- this.touchpad.button[input_1.InputSet](this.hid.state["TouchpadButton" /* TouchpadButton */]);
99
+ this.touchpad.button[input_1.InputSet](this.hid.state["TouchButton" /* TouchButton */]);
100
100
  this.left.analog.x[input_1.InputSet](this.hid.state["LX" /* LeftAnalogX */]);
101
101
  this.left.analog.y[input_1.InputSet](this.hid.state["LY" /* LeftAnalogY */]);
102
102
  this.right.analog.x[input_1.InputSet](this.hid.state["RX" /* RightAnalogX */]);
@@ -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":";;;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,iCAAqB,CAAC,CAAC;QACpE,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 +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"}
@@ -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,19 +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
+ }
47
+ export declare function mapAxis(value: number): number;
48
+ export declare function mapTrigger(value: number): number;
35
49
  export declare class DualsenseHID extends EventEmitter {
36
50
  state: DualsenseHIDState;
37
51
  private device;
52
+ private wireless;
38
53
  static readonly vendorId: number;
39
54
  static readonly productId: number;
40
55
  constructor();
56
+ /**
57
+ * Unpacks a Dualsense HID report.
58
+ */
41
59
  private process;
42
60
  private handleError;
43
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;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":"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"}
@@ -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 of 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 of 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();
@@ -17,6 +27,7 @@ class DualsenseHID extends events_1.EventEmitter {
17
27
  ["Circle" /* Circle */]: false,
18
28
  ["Cross" /* Cross */]: false,
19
29
  ["Square" /* Square */]: false,
30
+ ["Dpad" /* Dpad */]: 0,
20
31
  ["Up" /* Up */]: false,
21
32
  ["Down" /* Down */]: false,
22
33
  ["Left" /* Left */]: false,
@@ -30,48 +41,85 @@ class DualsenseHID extends events_1.EventEmitter {
30
41
  ["R1" /* RightBumper */]: false,
31
42
  ["L1" /* LeftBumper */]: false,
32
43
  ["Playstation" /* Playstation */]: false,
33
- ["TouchpadButton" /* TouchpadButton */]: false,
44
+ ["TouchButton" /* TouchButton */]: false,
34
45
  ["Mute" /* Mute */]: false,
35
- ["TouchpadX1" /* TouchpadX1 */]: 0,
36
- ["TouchpadY1" /* TouchpadY1 */]: 0,
37
- ["TouchpadX2" /* TouchpadX2 */]: 0,
38
- ["TouchpadY2" /* TouchpadY2 */]: 0,
46
+ ["Status" /* Status */]: false,
47
+ ["TouchX0" /* TouchX0 */]: 0,
48
+ ["TouchY0" /* TouchY0 */]: 0,
49
+ ["TouchContact0" /* TouchContact0 */]: false,
50
+ ["TouchId0" /* TouchId0 */]: 0,
51
+ ["TouchX1" /* TouchX1 */]: 0,
52
+ ["TouchY1" /* TouchY1 */]: 0,
53
+ ["TouchContact1" /* TouchContact1 */]: false,
54
+ ["TouchId1" /* TouchId1 */]: 0,
55
+ ["GyroX" /* GyroX */]: 0,
56
+ ["GyroY" /* GyroY */]: 0,
57
+ ["GyroZ" /* GyroZ */]: 0,
58
+ ["AccelX" /* AccelX */]: 0,
59
+ ["AccelY" /* AccelY */]: 0,
60
+ ["AccelZ" /* AccelZ */]: 0,
39
61
  };
62
+ this.wireless = false;
40
63
  this.device = this.connect();
41
64
  }
65
+ /**
66
+ * Unpacks a Dualsense HID report.
67
+ */
42
68
  process(buffer) {
43
- const states = [...buffer];
44
- const buttonState = states[8];
45
- const misc = states[9];
46
- const misc2 = states[10];
47
- 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],
54
- ["Triangle" /* Triangle */]: (buttonState & (1 << 7)) != 0,
55
- ["Circle" /* Circle */]: (buttonState & (1 << 6)) != 0,
56
- ["Cross" /* Cross */]: (buttonState & (1 << 5)) != 0,
57
- ["Square" /* Square */]: (buttonState & (1 << 4)) != 0,
58
- ["Up" /* Up */]: [0, 1, 7].includes(buttonState & 0x0f),
59
- ["Down" /* Down */]: [3, 4, 5].includes(buttonState & 0x0f),
60
- ["Left" /* Left */]: [5, 6, 7].includes(buttonState & 0x0f),
61
- ["Right" /* Right */]: [1, 2, 3].includes(buttonState & 0x0f),
62
- ["R3" /* RightAnalogButton */]: (misc & (1 << 7)) != 0,
63
- ["L3" /* LeftAnalogButton */]: (misc & (1 << 6)) != 0,
64
- ["Options" /* Options */]: (misc & (1 << 5)) != 0,
65
- ["Create" /* Create */]: (misc & (1 << 4)) != 0,
66
- ["R2Button" /* RightTriggerButton */]: (misc & (1 << 3)) != 0,
67
- ["L2Button" /* LeftTriggerButton */]: (misc & (1 << 2)) != 0,
68
- ["R1" /* RightBumper */]: (misc & (1 << 1)) != 0,
69
- ["L1" /* LeftBumper */]: (misc & (1 << 0)) != 0,
70
- ["Playstation" /* Playstation */]: (misc2 & (1 << 0)) != 0,
71
- ["TouchpadButton" /* TouchpadButton */]: (misc2 & 0x02) != 0,
72
- ["Mute" /* Mute */]: (misc2 & 0x04) != 0,
73
- });
74
- 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" /* LeftAnalogX */] = mapAxis(report.readUint8(0));
73
+ state["LY" /* LeftAnalogY */] = -mapAxis(report.readUint8(1));
74
+ state["RX" /* RightAnalogX */] = mapAxis(report.readUint8(2));
75
+ state["RY" /* RightAnalogY */] = -mapAxis(report.readUint8(3));
76
+ state["L2" /* LeftTrigger */] = mapTrigger(report.readUint8(4));
77
+ state["R2" /* RightTrigger */] = mapTrigger(report.readUint8(5));
78
+ // 6 is a sequence byte
79
+ const mainButtons = report.readUint8(7);
80
+ state["Triangle" /* Triangle */] = (mainButtons & 128) > 0;
81
+ state["Circle" /* Circle */] = (mainButtons & 64) > 0;
82
+ state["Cross" /* Cross */] = (mainButtons & 32) > 0;
83
+ state["Square" /* Square */] = (mainButtons & 16) > 0;
84
+ state["Dpad" /* Dpad */] = (mainButtons << 4) >> 4;
85
+ state["Up" /* Up */] = state["Dpad" /* Dpad */] < 2 || state["Dpad" /* Dpad */] === 7;
86
+ state["Down" /* Down */] = state["Dpad" /* Dpad */] > 2 && state["Dpad" /* Dpad */] < 6;
87
+ state["Left" /* Left */] = state["Dpad" /* Dpad */] > 4 && state["Dpad" /* Dpad */] < 8;
88
+ state["Right" /* Right */] = state["Dpad" /* Dpad */] > 0 && state["Dpad" /* Dpad */] < 4;
89
+ const miscButtons = report.readUint8(8);
90
+ state["L2Button" /* LeftTriggerButton */] = (miscButtons & 4) > 0;
91
+ state["R2Button" /* RightTriggerButton */] = (miscButtons & 8) > 0;
92
+ state["L1" /* LeftBumper */] = (miscButtons & 1) > 0;
93
+ state["R1" /* RightBumper */] = (miscButtons & 2) > 0;
94
+ state["Create" /* Create */] = (miscButtons & 16) > 0;
95
+ state["Options" /* Options */] = (miscButtons & 32) > 0;
96
+ state["L3" /* LeftAnalogButton */] = (miscButtons & 64) > 0;
97
+ state["R3" /* RightAnalogButton */] = (miscButtons & 128) > 0;
98
+ const lastButtons = report.readUint8(9);
99
+ state["Playstation" /* Playstation */] = (lastButtons & 1) > 0;
100
+ state["TouchButton" /* TouchButton */] = (lastButtons & 2) > 0;
101
+ state["Mute" /* Mute */] = (lastButtons & 4) > 0;
102
+ // The other 5 bits are unused
103
+ // 5 reserved bytes
104
+ state["GyroX" /* GyroX */] = report.readUint16LE(15);
105
+ state["GyroY" /* GyroY */] = report.readUint16LE(17);
106
+ state["GyroZ" /* GyroZ */] = report.readUint16LE(19);
107
+ state["AccelX" /* AccelX */] = report.readUint16LE(21);
108
+ state["AccelY" /* AccelY */] = report.readUint16LE(23);
109
+ state["AccelZ" /* AccelZ */] = report.readUint16LE(25);
110
+ // 4 bytes for sensor timestamp (32LE)
111
+ // 1 reserved byte
112
+ state["TouchId0" /* TouchId0 */] = report.readUint8(32) & 0x7f;
113
+ state["TouchContact0" /* TouchContact0 */] = (report.readUint8(32) & 0x80) === 0;
114
+ state["TouchX0" /* TouchX0 */] = (report.readUint16LE(33) << 20) >> 20;
115
+ state["TouchY0" /* TouchY0 */] = report.readUint16LE(34) >> 4;
116
+ state["TouchId1" /* TouchId1 */] = report.readUint8(36) & 0x7f;
117
+ state["TouchContact1" /* TouchContact1 */] = (report.readUint8(36) & 0x80) === 0;
118
+ state["TouchX1" /* TouchX1 */] = (report.readUint16LE(37) << 20) >> 20;
119
+ state["TouchY1" /* TouchY1 */] = report.readUint16LE(38) >> 4;
120
+ // 12 reserved bytes
121
+ state["Status" /* Status */] = (report.readUint8(53) & 4) > 0;
122
+ this.emit("input", state);
75
123
  }
76
124
  handleError(error) {
77
125
  console.error(error);
@@ -93,9 +141,11 @@ class DualsenseHID extends events_1.EventEmitter {
93
141
  connect() {
94
142
  this.disconnect();
95
143
  const controllers = (0, node_hid_1.devices)(DualsenseHID.vendorId, DualsenseHID.productId);
96
- if (!controllers[0]?.path) {
144
+ if (controllers.length === 0 || !controllers[0].path) {
97
145
  throw new Error(`No controllers (${(0, node_hid_1.devices)().length} other devices)`);
98
146
  }
147
+ if (controllers[0].interface === -1)
148
+ this.wireless = true;
99
149
  const controller = new node_hid_1.HID(controllers[0].path);
100
150
  controller.on("data", this.process.bind(this));
101
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
@@ -18,7 +18,7 @@ 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
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;
@@ -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.12",
3
+ "version": "2.0.0",
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]);
@@ -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
+ });
@@ -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,13 +28,34 @@ 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
+ }
49
+
50
+ // Maps a HID input of 0...255 to -1...1
51
+ export function mapAxis(value: number): number {
52
+ return (2 / 255) * Math.max(0, Math.min(255, value)) - 1;
53
+ }
54
+
55
+ // Maps a HID input of 0...255 to 0...1
56
+ export function mapTrigger(value: number): number {
57
+ return (1 / 255) * Math.max(0, Math.min(255, value));
58
+ }
37
59
 
38
60
  export class DualsenseHID extends EventEmitter {
39
61
  public state: DualsenseHIDState = {
@@ -47,6 +69,7 @@ export class DualsenseHID extends EventEmitter {
47
69
  [InputId.Circle]: false,
48
70
  [InputId.Cross]: false,
49
71
  [InputId.Square]: false,
72
+ [InputId.Dpad]: 0,
50
73
  [InputId.Up]: false,
51
74
  [InputId.Down]: false,
52
75
  [InputId.Left]: false,
@@ -60,15 +83,27 @@ export class DualsenseHID extends EventEmitter {
60
83
  [InputId.RightBumper]: false,
61
84
  [InputId.LeftBumper]: false,
62
85
  [InputId.Playstation]: false,
63
- [InputId.TouchpadButton]: false,
86
+ [InputId.TouchButton]: false,
64
87
  [InputId.Mute]: false,
65
- [InputId.TouchpadX1]: 0,
66
- [InputId.TouchpadY1]: 0,
67
- [InputId.TouchpadX2]: 0,
68
- [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,
69
103
  };
70
104
 
71
105
  private device: HID;
106
+ private wireless: boolean = false;
72
107
 
73
108
  static readonly vendorId: number = 1356;
74
109
  static readonly productId: number = 3302;
@@ -78,41 +113,66 @@ export class DualsenseHID extends EventEmitter {
78
113
  this.device = this.connect();
79
114
  }
80
115
 
116
+ /**
117
+ * Unpacks a Dualsense HID report.
118
+ */
81
119
  private process(buffer: Buffer): void {
82
- const states = [...buffer];
83
- const buttonState: number = states[8];
84
- const misc: number = states[9];
85
- const misc2: number = states[10];
86
-
87
- 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],
94
- [InputId.Triangle]: (buttonState & (1 << 7)) != 0,
95
- [InputId.Circle]: (buttonState & (1 << 6)) != 0,
96
- [InputId.Cross]: (buttonState & (1 << 5)) != 0,
97
- [InputId.Square]: (buttonState & (1 << 4)) != 0,
98
- [InputId.Up]: [0, 1, 7].includes(buttonState & 0x0f),
99
- [InputId.Down]: [3, 4, 5].includes(buttonState & 0x0f),
100
- [InputId.Left]: [5, 6, 7].includes(buttonState & 0x0f),
101
- [InputId.Right]: [1, 2, 3].includes(buttonState & 0x0f),
102
- [InputId.RightAnalogButton]: (misc & (1 << 7)) != 0,
103
- [InputId.LeftAnalogButton]: (misc & (1 << 6)) != 0,
104
- [InputId.Options]: (misc & (1 << 5)) != 0,
105
- [InputId.Create]: (misc & (1 << 4)) != 0,
106
- [InputId.RightTriggerButton]: (misc & (1 << 3)) != 0,
107
- [InputId.LeftTriggerButton]: (misc & (1 << 2)) != 0,
108
- [InputId.RightBumper]: (misc & (1 << 1)) != 0,
109
- [InputId.LeftBumper]: (misc & (1 << 0)) != 0,
110
- [InputId.Playstation]: (misc2 & (1 << 0)) != 0,
111
- [InputId.TouchpadButton]: (misc2 & 0x02) != 0,
112
- [InputId.Mute]: (misc2 & 0x04) != 0,
113
- });
114
-
115
- 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);
116
176
  }
117
177
 
118
178
  private handleError(error: unknown): void {
@@ -137,10 +197,12 @@ export class DualsenseHID extends EventEmitter {
137
197
  this.disconnect();
138
198
 
139
199
  const controllers = devices(DualsenseHID.vendorId, DualsenseHID.productId);
140
- if (!controllers[0]?.path) {
200
+ if (controllers.length === 0 || !controllers[0].path) {
141
201
  throw new Error(`No controllers (${devices().length} other devices)`);
142
202
  }
143
203
 
204
+ if (controllers[0].interface === -1) this.wireless = true;
205
+
144
206
  const controller = new HID(controllers[0].path);
145
207
  controller.on("data", this.process.bind(this));
146
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
@@ -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>) => unknown | Promise<unknown>
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);