@openmouse/protocol 0.1.0 → 0.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.
Files changed (40) hide show
  1. package/CONTRIBUTING.md +31 -4
  2. package/README.md +1 -0
  3. package/dist/drivers/finalmouse/hid.d.ts.map +1 -1
  4. package/dist/drivers/finalmouse/hid.js +1 -2
  5. package/dist/drivers/finalmouse/hid.js.map +1 -1
  6. package/dist/drivers/mouse-types.d.ts +1 -1
  7. package/dist/drivers/mouse-types.d.ts.map +1 -1
  8. package/dist/drivers/redragon/hid.d.ts +56 -0
  9. package/dist/drivers/redragon/hid.d.ts.map +1 -0
  10. package/dist/drivers/redragon/hid.js +185 -0
  11. package/dist/drivers/redragon/hid.js.map +1 -0
  12. package/dist/drivers/registry.d.ts +3 -1
  13. package/dist/drivers/registry.d.ts.map +1 -1
  14. package/dist/drivers/registry.js +4 -0
  15. package/dist/drivers/registry.js.map +1 -1
  16. package/dist/drivers/ryunix/kyu-pro-mx1-hid.d.ts +15 -0
  17. package/dist/drivers/ryunix/kyu-pro-mx1-hid.d.ts.map +1 -0
  18. package/dist/drivers/ryunix/kyu-pro-mx1-hid.js +101 -0
  19. package/dist/drivers/ryunix/kyu-pro-mx1-hid.js.map +1 -0
  20. package/dist/drivers/vendors.d.ts +5 -0
  21. package/dist/drivers/vendors.d.ts.map +1 -1
  22. package/dist/drivers/vendors.js +19 -0
  23. package/dist/drivers/vendors.js.map +1 -1
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/redragon/index.d.ts +93 -0
  29. package/dist/redragon/index.d.ts.map +1 -0
  30. package/dist/redragon/index.js +154 -0
  31. package/dist/redragon/index.js.map +1 -0
  32. package/dist/ryunix/index.d.ts +2 -0
  33. package/dist/ryunix/index.d.ts.map +1 -0
  34. package/dist/ryunix/index.js +2 -0
  35. package/dist/ryunix/index.js.map +1 -0
  36. package/dist/ryunix/kyu-pro-mx1.d.ts +21 -0
  37. package/dist/ryunix/kyu-pro-mx1.d.ts.map +1 -0
  38. package/dist/ryunix/kyu-pro-mx1.js +51 -0
  39. package/dist/ryunix/kyu-pro-mx1.js.map +1 -0
  40. package/package.json +15 -1
@@ -0,0 +1,21 @@
1
+ export declare const RYUNIX_VENDOR_ID = 1267;
2
+ export declare const RYUNIX_WIRED_PRODUCT_ID = 622;
3
+ export declare const RYUNIX_WIRELESS_PRODUCT_ID = 623;
4
+ export declare const RYUNIX_PRODUCT_IDS: ReadonlySet<number>;
5
+ export declare const RYUNIX_USAGE_PAGE = 10;
6
+ export declare const RYUNIX_USAGE = 199;
7
+ export declare const RYUNIX_TELEMETRY_REPORT_ID = 4;
8
+ export declare const RYUNIX_CONFIG_REPORT_ID = 5;
9
+ export type RyunixLedMode = "Off" | "Spectrum" | "Breathing single" | "Static" | "Wave" | "Reactive" | "Cycling";
10
+ export interface KyuProMx1Telemetry {
11
+ active: boolean;
12
+ dpiStage: number;
13
+ pollingRateHz: number;
14
+ batteryPercent: number;
15
+ charging: boolean;
16
+ ledMode: RyunixLedMode | null;
17
+ ledModeCode: number;
18
+ }
19
+ /** Decode the six-byte telemetry body delivered by input report 0x04. */
20
+ export declare function decodeKyuProMx1Telemetry(data: Uint8Array, reportId: number): KyuProMx1Telemetry | null;
21
+ //# sourceMappingURL=kyu-pro-mx1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kyu-pro-mx1.d.ts","sourceRoot":"","sources":["../../src/ryunix/kyu-pro-mx1.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,OAAS,CAAC;AACvC,eAAO,MAAM,uBAAuB,MAAS,CAAC;AAC9C,eAAO,MAAM,0BAA0B,MAAS,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAGjD,CAAC;AAEH,eAAO,MAAM,iBAAiB,KAAO,CAAC;AACtC,eAAO,MAAM,YAAY,MAAO,CAAC;AACjC,eAAO,MAAM,0BAA0B,IAAO,CAAC;AAC/C,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAE5C,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,UAAU,GACV,kBAAkB,GAClB,QAAQ,GACR,MAAM,GACN,UAAU,GACV,SAAS,CAAC;AAoBd,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,yEAAyE;AACzE,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,kBAAkB,GAAG,IAAI,CAuB3B"}
@@ -0,0 +1,51 @@
1
+ export const RYUNIX_VENDOR_ID = 0x04f3;
2
+ export const RYUNIX_WIRED_PRODUCT_ID = 0x026e;
3
+ export const RYUNIX_WIRELESS_PRODUCT_ID = 0x026f;
4
+ export const RYUNIX_PRODUCT_IDS = new Set([
5
+ RYUNIX_WIRED_PRODUCT_ID,
6
+ RYUNIX_WIRELESS_PRODUCT_ID,
7
+ ]);
8
+ export const RYUNIX_USAGE_PAGE = 0x0a;
9
+ export const RYUNIX_USAGE = 0xc7;
10
+ export const RYUNIX_TELEMETRY_REPORT_ID = 0x04;
11
+ export const RYUNIX_CONFIG_REPORT_ID = 0x05;
12
+ const POLLING_RATES = {
13
+ 0x08: 125,
14
+ 0x04: 250,
15
+ 0x02: 500,
16
+ 0x01: 1000,
17
+ };
18
+ const LED_MODES = {
19
+ 0x00: "Off",
20
+ 0x01: "Spectrum",
21
+ 0x02: "Breathing single",
22
+ 0x03: "Static",
23
+ 0x04: "Wave",
24
+ 0x05: "Reactive",
25
+ 0x06: "Cycling",
26
+ 0x07: "Wave",
27
+ };
28
+ /** Decode the six-byte telemetry body delivered by input report 0x04. */
29
+ export function decodeKyuProMx1Telemetry(data, reportId) {
30
+ if (reportId !== RYUNIX_TELEMETRY_REPORT_ID || data.length < 6)
31
+ return null;
32
+ const activeByte = data[0];
33
+ const pollingRateHz = POLLING_RATES[data[2]];
34
+ const batteryPercent = data[3];
35
+ const chargingByte = data[4];
36
+ if ((activeByte !== 0 && activeByte !== 1)
37
+ || pollingRateHz === undefined
38
+ || batteryPercent > 100
39
+ || (chargingByte !== 0 && chargingByte !== 1))
40
+ return null;
41
+ return {
42
+ active: activeByte === 1,
43
+ dpiStage: data[1],
44
+ pollingRateHz,
45
+ batteryPercent,
46
+ charging: chargingByte === 1,
47
+ ledMode: LED_MODES[data[5]] ?? null,
48
+ ledModeCode: data[5],
49
+ };
50
+ }
51
+ //# sourceMappingURL=kyu-pro-mx1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kyu-pro-mx1.js","sourceRoot":"","sources":["../../src/ryunix/kyu-pro-mx1.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAW5C,MAAM,aAAa,GAAqC;IACtD,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,SAAS,GAA4C;IACzD,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,MAAM;CACb,CAAC;AAYF,yEAAyE;AACzE,MAAM,UAAU,wBAAwB,CACtC,IAAgB,EAChB,QAAgB;IAEhB,IAAI,QAAQ,KAAK,0BAA0B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5E,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IACE,CAAC,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC;WACnC,aAAa,KAAK,SAAS;WAC3B,cAAc,GAAG,GAAG;WACpB,CAAC,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IAEd,OAAO;QACL,MAAM,EAAE,UAAU,KAAK,CAAC;QACxB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACjB,aAAa;QACb,cAAc;QACd,QAAQ,EAAE,YAAY,KAAK,CAAC;QAC5B,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;QACnC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;KACrB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,16 @@
1
1
  {
2
2
  "name": "@openmouse/protocol",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Gaming mouse protocol codecs and WebHID drivers used by OpenMouse.",
5
5
  "type": "module",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
+ "release": {
10
+ "branches": [
11
+ "main"
12
+ ]
13
+ },
9
14
  "files": [
10
15
  "dist",
11
16
  "README.md",
@@ -136,6 +141,10 @@
136
141
  "types": "./dist/dareu/index.d.ts",
137
142
  "import": "./dist/dareu/index.js"
138
143
  },
144
+ "./redragon": {
145
+ "types": "./dist/redragon/index.d.ts",
146
+ "import": "./dist/redragon/index.js"
147
+ },
139
148
  "./drivers": {
140
149
  "types": "./dist/drivers/index.d.ts",
141
150
  "import": "./dist/drivers/index.js"
@@ -167,6 +176,10 @@
167
176
  "./hyperx": {
168
177
  "types": "./dist/hyperx/index.d.ts",
169
178
  "import": "./dist/hyperx/index.js"
179
+ },
180
+ "./ryunix": {
181
+ "types": "./dist/ryunix/index.d.ts",
182
+ "import": "./dist/ryunix/index.js"
170
183
  }
171
184
  },
172
185
  "scripts": {
@@ -177,6 +190,7 @@
177
190
  "prepare": "npm run build"
178
191
  },
179
192
  "devDependencies": {
193
+ "semantic-release": "25.0.9",
180
194
  "tsx": "^4.23.11",
181
195
  "typescript": "^5.8.3"
182
196
  },