@openmouse/protocol 0.10.0 → 0.11.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 (93) hide show
  1. package/README.md +2 -1
  2. package/dist/compx/x11-dpi.d.ts +2 -0
  3. package/dist/compx/x11-dpi.d.ts.map +1 -1
  4. package/dist/compx/x11-dpi.js +2 -0
  5. package/dist/compx/x11-dpi.js.map +1 -1
  6. package/dist/delux/index.d.ts +21 -5
  7. package/dist/delux/index.d.ts.map +1 -1
  8. package/dist/delux/index.js +25 -5
  9. package/dist/delux/index.js.map +1 -1
  10. package/dist/drivers/attackshark/hid.d.ts +23 -2
  11. package/dist/drivers/attackshark/hid.d.ts.map +1 -1
  12. package/dist/drivers/attackshark/hid.js +150 -21
  13. package/dist/drivers/attackshark/hid.js.map +1 -1
  14. package/dist/drivers/delux/hid.d.ts +6 -0
  15. package/dist/drivers/delux/hid.d.ts.map +1 -1
  16. package/dist/drivers/delux/hid.js +35 -6
  17. package/dist/drivers/delux/hid.js.map +1 -1
  18. package/dist/drivers/endgame/egg-we-hid.d.ts.map +1 -1
  19. package/dist/drivers/endgame/egg-we-hid.js +7 -1
  20. package/dist/drivers/endgame/egg-we-hid.js.map +1 -1
  21. package/dist/drivers/glorious/classic-hid.d.ts.map +1 -1
  22. package/dist/drivers/glorious/classic-hid.js +2 -0
  23. package/dist/drivers/glorious/classic-hid.js.map +1 -1
  24. package/dist/drivers/glorious/hid.d.ts.map +1 -1
  25. package/dist/drivers/glorious/hid.js +2 -0
  26. package/dist/drivers/glorious/hid.js.map +1 -1
  27. package/dist/drivers/gwolves/hid.d.ts +6 -0
  28. package/dist/drivers/gwolves/hid.d.ts.map +1 -1
  29. package/dist/drivers/gwolves/hid.js +16 -0
  30. package/dist/drivers/gwolves/hid.js.map +1 -1
  31. package/dist/drivers/gwolves/products.d.ts.map +1 -1
  32. package/dist/drivers/gwolves/products.js +9 -52
  33. package/dist/drivers/gwolves/products.js.map +1 -1
  34. package/dist/drivers/keychron/nape-hid.d.ts.map +1 -1
  35. package/dist/drivers/keychron/nape-hid.js +4 -1
  36. package/dist/drivers/keychron/nape-hid.js.map +1 -1
  37. package/dist/drivers/lamzu-atlantis/hid.d.ts +2 -0
  38. package/dist/drivers/lamzu-atlantis/hid.d.ts.map +1 -1
  39. package/dist/drivers/lamzu-atlantis/hid.js +16 -0
  40. package/dist/drivers/lamzu-atlantis/hid.js.map +1 -1
  41. package/dist/drivers/logitech/hidpp.d.ts +6 -4
  42. package/dist/drivers/logitech/hidpp.d.ts.map +1 -1
  43. package/dist/drivers/logitech/hidpp.js +23 -12
  44. package/dist/drivers/logitech/hidpp.js.map +1 -1
  45. package/dist/drivers/logitech/onboard-profiles.d.ts.map +1 -1
  46. package/dist/drivers/logitech/onboard-profiles.js +31 -8
  47. package/dist/drivers/logitech/onboard-profiles.js.map +1 -1
  48. package/dist/drivers/motospeed/hid.d.ts +51 -0
  49. package/dist/drivers/motospeed/hid.d.ts.map +1 -0
  50. package/dist/drivers/motospeed/hid.js +395 -0
  51. package/dist/drivers/motospeed/hid.js.map +1 -0
  52. package/dist/drivers/mouse-types.d.ts +1 -1
  53. package/dist/drivers/mouse-types.d.ts.map +1 -1
  54. package/dist/drivers/pulsar/pulsar-areson-hid.d.ts +13 -0
  55. package/dist/drivers/pulsar/pulsar-areson-hid.d.ts.map +1 -0
  56. package/dist/drivers/pulsar/pulsar-areson-hid.js +59 -0
  57. package/dist/drivers/pulsar/pulsar-areson-hid.js.map +1 -0
  58. package/dist/drivers/pulsar/pulsar-hid.d.ts +13 -1
  59. package/dist/drivers/pulsar/pulsar-hid.d.ts.map +1 -1
  60. package/dist/drivers/pulsar/pulsar-hid.js +22 -3
  61. package/dist/drivers/pulsar/pulsar-hid.js.map +1 -1
  62. package/dist/drivers/registry.d.ts +2 -1
  63. package/dist/drivers/registry.d.ts.map +1 -1
  64. package/dist/drivers/registry.js +9 -1
  65. package/dist/drivers/registry.js.map +1 -1
  66. package/dist/drivers/teevolution/hid.d.ts.map +1 -1
  67. package/dist/drivers/teevolution/hid.js +2 -22
  68. package/dist/drivers/teevolution/hid.js.map +1 -1
  69. package/dist/drivers/vendors.d.ts +4 -2
  70. package/dist/drivers/vendors.d.ts.map +1 -1
  71. package/dist/drivers/vendors.js +21 -1
  72. package/dist/drivers/vendors.js.map +1 -1
  73. package/dist/drivers/vgn/hid.d.ts +9 -0
  74. package/dist/drivers/vgn/hid.d.ts.map +1 -1
  75. package/dist/drivers/vgn/hid.js +21 -3
  76. package/dist/drivers/vgn/hid.js.map +1 -1
  77. package/dist/index.d.ts +1 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +1 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/logitech/wheel.d.ts +9 -0
  82. package/dist/logitech/wheel.d.ts.map +1 -1
  83. package/dist/logitech/wheel.js +6 -0
  84. package/dist/logitech/wheel.js.map +1 -1
  85. package/dist/motospeed/index.d.ts +127 -0
  86. package/dist/motospeed/index.d.ts.map +1 -0
  87. package/dist/motospeed/index.js +282 -0
  88. package/dist/motospeed/index.js.map +1 -0
  89. package/dist/teevolution/index.d.ts +30 -1
  90. package/dist/teevolution/index.d.ts.map +1 -1
  91. package/dist/teevolution/index.js +56 -3
  92. package/dist/teevolution/index.js.map +1 -1
  93. package/package.json +5 -1
@@ -0,0 +1,395 @@
1
+ import { MOTOSPEED_COMMAND_REPORT_ID, MOTOSPEED_INPUT_REPORT_ID, MOTOSPEED_POLLING_RATES, MOTOSPEED_PRODUCTS, MOTOSPEED_SETTINGS_REPORT_ID, MOTOSPEED_USAGE_PAGE, MOTOSPEED_VENDOR_ID, motospeedBuildButtonCommand, motospeedBuildDebounceCommand, motospeedBuildDpiCommand, motospeedBuildGeneralCommand, motospeedBuildLightingCommand, motospeedBuildPollingCommand, motospeedBuildSettingsRequest, motospeedBuildSleepCommand, motospeedDecodeSettings, } from "@openmouse/protocol/motospeed";
2
+ const LIGHTING_MODES = [
3
+ "Off",
4
+ "Static",
5
+ "Breathing single",
6
+ "Spectrum",
7
+ ];
8
+ export class MotospeedHidClient {
9
+ device;
10
+ timeoutMs;
11
+ canDisableSleep = false;
12
+ queue = Promise.resolve();
13
+ cancelRead = null;
14
+ generation = 0;
15
+ lighting = {
16
+ zone: "Mouse",
17
+ modes: LIGHTING_MODES,
18
+ mode: null,
19
+ color: null,
20
+ color2: null,
21
+ colorModes: ["Static", "Breathing single"],
22
+ dualColorModes: [],
23
+ reactiveModes: ["Breathing single", "Spectrum"],
24
+ speeds: Array.from({ length: 255 }, (_, i) => i + 1),
25
+ speed: null,
26
+ brightness: null,
27
+ brightnessLevels: Array.from({ length: 101 }, (_, i) => i),
28
+ writeOnly: true,
29
+ };
30
+ constructor(device, timeoutMs = 2000) {
31
+ this.device = device;
32
+ this.timeoutMs = timeoutMs;
33
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
34
+ throw new RangeError("Timeout must be positive.");
35
+ }
36
+ }
37
+ static isSupported(device) {
38
+ return (device.vendorId === MOTOSPEED_VENDOR_ID &&
39
+ MOTOSPEED_PRODUCTS.some((product) => product.productId === device.productId) &&
40
+ hasControlCollection(device.collections));
41
+ }
42
+ get pollIntervalMs() {
43
+ return 30_000;
44
+ }
45
+ getDpiOptions() {
46
+ return Array.from({ length: 260 }, (_, i) => (i + 1) * 100);
47
+ }
48
+ getSupportedPollingRates() {
49
+ return [...MOTOSPEED_POLLING_RATES];
50
+ }
51
+ getSleepOptions() {
52
+ return Array.from({ length: 60 }, (_, i) => (i + 1) * 60);
53
+ }
54
+ getDebounceMaxMs() {
55
+ return 20;
56
+ }
57
+ async open() {
58
+ if (!MotospeedHidClient.isSupported(this.device)) {
59
+ throw new Error("Unsupported Motospeed X6 control interface.");
60
+ }
61
+ if (!this.device.opened) {
62
+ await this.device.open();
63
+ }
64
+ }
65
+ async close() {
66
+ this.generation++;
67
+ this.cancelRead?.();
68
+ await this.run(async () => {
69
+ if (this.device.opened)
70
+ await this.device.close();
71
+ });
72
+ }
73
+ async startNotifications(_onChange) {
74
+ return false;
75
+ }
76
+ async readSettings() {
77
+ return this.run(async () => {
78
+ await this.open();
79
+ return this.readSettingsDirect();
80
+ });
81
+ }
82
+ async readStatus() {
83
+ // Mostly Motospeed X6-specific values, as other motospeed mice have not been reversed engineered.
84
+ const settings = await this.readSettings();
85
+ const wireless = this.device.productId === 0xffe0;
86
+ return {
87
+ brand: "Motospeed",
88
+ name: "Motospeed X6",
89
+ batteryPercent: settings.batteryPercent,
90
+ batteryState: settings.charging === null
91
+ ? "Unknown"
92
+ : settings.charging
93
+ ? "Charging"
94
+ : "Discharging",
95
+ connectionType: wireless ? "Wireless" : "Wired",
96
+ connectionDetail: wireless ? "8K receiver" : "USB",
97
+ dpi: settings.dpiStages[settings.activeDpiStage],
98
+ dpiStages: settings.dpiStages.slice(0, settings.dpiStageCount),
99
+ activeDpiStage: settings.activeDpiStage,
100
+ pollingRateHz: settings.pollingRateHz,
101
+ supportedPollingRates: this.getSupportedPollingRates(),
102
+ activeProfile: null,
103
+ firmware: [],
104
+ liftOffDistance: settings.liftOffDistance,
105
+ supportedLiftOffDistances: ["Low", "High"],
106
+ motionSync: settings.motionSync,
107
+ angleSnapping: settings.angleSnapping,
108
+ rippleControl: settings.rippleControl,
109
+ invertScroll: settings.invertScroll,
110
+ supportsInvertScroll: true,
111
+ performanceMode: settings.esportsMode,
112
+ debounceMs: settings.debounceMs,
113
+ sleepTimeout: settings.sleepMinutes * 60,
114
+ lighting: structuredClone(this.lighting),
115
+ ui: {
116
+ family: "motospeed",
117
+ defaultDisplayName: "Motospeed X6",
118
+ hideSignalCard: true,
119
+ hideUnsupportedPollingRates: true,
120
+ showAdvancedSection: true,
121
+ dpiStageEditor: {
122
+ maxStages: 5,
123
+ countEditable: true,
124
+ minDpi: 100,
125
+ maxDpi: 26000,
126
+ stepDpi: 100,
127
+ },
128
+ },
129
+ };
130
+ }
131
+ async setDpi(dpi) {
132
+ const confirmed = await this.updateDpi((current) => {
133
+ current.dpiStages[current.activeDpiStage] = dpi;
134
+ });
135
+ return confirmed.dpiStages[confirmed.activeDpiStage];
136
+ }
137
+ async setDpiStageValue(stage, dpi) {
138
+ if (!Number.isInteger(stage) || stage < 0 || stage > 4)
139
+ throw new RangeError("DPI stage must be 0 through 4.");
140
+ const confirmed = await this.updateDpi((current) => {
141
+ current.dpiStages[stage] = dpi;
142
+ });
143
+ return confirmed.dpiStages[stage];
144
+ }
145
+ async setActiveDpiStage(slot) {
146
+ return (await this.updateDpi((current) => {
147
+ current.activeDpiStage = slot;
148
+ })).activeDpiStage;
149
+ }
150
+ async setDpiStageCount(count) {
151
+ if (!Number.isInteger(count) || count < 1 || count > 5)
152
+ throw new RangeError("DPI stage count must be 1 through 5.");
153
+ return (await this.updateDpi((current) => {
154
+ current.dpiStageCount = count;
155
+ current.activeDpiStage = Math.min(current.activeDpiStage, count - 1);
156
+ })).dpiStageCount;
157
+ }
158
+ async setPollingRate(hz) {
159
+ return (await this.writeVerified(motospeedBuildPollingCommand(hz), (s) => s.pollingRateHz === hz)).pollingRateHz;
160
+ }
161
+ async setDebounceTime(ms) {
162
+ return (await this.writeVerified(motospeedBuildDebounceCommand(ms), (s) => s.debounceMs === ms)).debounceMs;
163
+ }
164
+ async setSleepTimeout(seconds) {
165
+ return ((await this.writeVerified(motospeedBuildSleepCommand(seconds / 60), (s) => s.sleepMinutes * 60 === seconds)).sleepMinutes * 60);
166
+ }
167
+ async setLiftOffDistance(value) {
168
+ if (value !== "Low" && value !== "High")
169
+ throw new RangeError("Motospeed lift-off distance must be Low or High.");
170
+ await this.updateGeneral({ liftOffDistance: value });
171
+ return value;
172
+ }
173
+ async setMotionSync(value) {
174
+ await this.updateGeneral({ motionSync: value });
175
+ return value;
176
+ }
177
+ async setAngleSnapping(value) {
178
+ await this.updateGeneral({ angleSnapping: value });
179
+ return value;
180
+ }
181
+ async setRippleControl(value) {
182
+ await this.updateGeneral({ rippleControl: value });
183
+ return value;
184
+ }
185
+ async setInvertScroll(value) {
186
+ await this.updateGeneral({ invertScroll: value });
187
+ return value;
188
+ }
189
+ async setPerformanceMode(value) {
190
+ await this.updateGeneral({ esportsMode: value });
191
+ return value;
192
+ }
193
+ async setButtonMapping(button, mapping) {
194
+ const packet = motospeedBuildButtonCommand(button, mapping);
195
+ await this.run(async () => {
196
+ await this.open();
197
+ await this.send(packet);
198
+ });
199
+ }
200
+ /**
201
+ * Lighting is write-only,
202
+ * there is no way to query the mouse's current lighting state,
203
+ * Hence it returns its own state to record the successful write.
204
+ */
205
+ async setLighting(lighting) {
206
+ const brightness = lighting.brightness ?? 100;
207
+ if (!Number.isFinite(brightness) || brightness < 0 || brightness > 100)
208
+ throw new RangeError("Brightness must be 0 through 100 percent.");
209
+ const common = {
210
+ brightness: Math.round((brightness * 255) / 100),
211
+ speed: lighting.speed ?? 128,
212
+ };
213
+ let effect;
214
+ switch (lighting.mode) {
215
+ case "Off":
216
+ effect = { mode: "off" };
217
+ break;
218
+ case "Spectrum":
219
+ effect = { mode: "rainbow", ...common };
220
+ break;
221
+ case "Static":
222
+ case "Breathing single": {
223
+ const color = lighting.color;
224
+ if (!color || !/^#[0-9a-f]{6}$/i.test(color))
225
+ throw new RangeError("Lighting requires a #rrggbb color.");
226
+ effect = {
227
+ mode: lighting.mode === "Static" ? "static" : "breathing",
228
+ ...common,
229
+ color: [
230
+ parseInt(color.slice(1, 3), 16),
231
+ parseInt(color.slice(3, 5), 16),
232
+ parseInt(color.slice(5, 7), 16),
233
+ ],
234
+ };
235
+ break;
236
+ }
237
+ default:
238
+ throw new RangeError("Unsupported Motospeed lighting mode.");
239
+ }
240
+ const packet = motospeedBuildLightingCommand(effect);
241
+ const mode = lighting.mode;
242
+ const color = lighting.color;
243
+ return this.run(async () => {
244
+ await this.open();
245
+ await this.send(packet);
246
+ this.lighting = {
247
+ ...this.lighting,
248
+ mode,
249
+ color,
250
+ brightness,
251
+ speed: common.speed,
252
+ };
253
+ return structuredClone(this.lighting);
254
+ });
255
+ }
256
+ async updateDpi(change) {
257
+ return this.run(async () => {
258
+ await this.open();
259
+ const wanted = await this.readSettingsDirect();
260
+ change(wanted);
261
+ await this.send(motospeedBuildDpiCommand(wanted));
262
+ return this.confirm((s) => s.activeDpiStage === wanted.activeDpiStage &&
263
+ s.dpiStageCount === wanted.dpiStageCount &&
264
+ s.dpiStages.every((dpi, i) => dpi === wanted.dpiStages[i]));
265
+ });
266
+ }
267
+ async updateGeneral(change) {
268
+ await this.run(async () => {
269
+ await this.open();
270
+ const current = await this.readSettingsDirect();
271
+ const liftOffDistance = change.liftOffDistance ?? current.liftOffDistance;
272
+ if (liftOffDistance === null) {
273
+ throw new Error("Unknown Motospeed LOD value; refusing to overwrite it.");
274
+ }
275
+ if (current.settingsByte & 0x20) {
276
+ // Bit 5 purpose is unknown, but is always consistently 0x20.
277
+ throw new Error("Unknown Motospeed general setting bit is enabled.");
278
+ }
279
+ const wanted = { ...current, ...change, liftOffDistance };
280
+ await this.send(motospeedBuildGeneralCommand(wanted));
281
+ await this.confirm((s) => s.liftOffDistance === wanted.liftOffDistance &&
282
+ s.motionSync === wanted.motionSync &&
283
+ s.angleSnapping === wanted.angleSnapping &&
284
+ s.rippleControl === wanted.rippleControl &&
285
+ s.invertScroll === wanted.invertScroll &&
286
+ s.esportsMode === wanted.esportsMode);
287
+ });
288
+ }
289
+ async writeVerified(packet, matches) {
290
+ return this.run(async () => {
291
+ await this.open();
292
+ await this.send(packet);
293
+ return this.confirm(matches);
294
+ });
295
+ }
296
+ async confirm(matches) {
297
+ const settings = await this.readSettingsDirect();
298
+ if (!matches(settings)) {
299
+ throw new Error("Motospeed X6 did not retain the requested setting.");
300
+ }
301
+ return settings;
302
+ }
303
+ async send(packet) {
304
+ let data = packet.data;
305
+ if (packet.reportId === MOTOSPEED_SETTINGS_REPORT_ID) {
306
+ const length = outputReportLength(this.device.collections, packet.reportId);
307
+ if (length === 60) {
308
+ data = data.slice(0, 60);
309
+ }
310
+ else if (length !== 0) {
311
+ throw new Error(`Unsupported Motospeed settings report payload length ${length}.`);
312
+ }
313
+ }
314
+ await this.device.sendReport(packet.reportId, new Uint8Array(data).buffer);
315
+ }
316
+ readSettingsDirect() {
317
+ return new Promise((resolve, reject) => {
318
+ let settled = false;
319
+ let sent = false;
320
+ let settings;
321
+ const cleanup = () => {
322
+ clearTimeout(timer);
323
+ this.device.removeEventListener("inputreport", listener);
324
+ this.cancelRead = null;
325
+ };
326
+ const fail = (error) => {
327
+ if (settled)
328
+ return;
329
+ settled = true;
330
+ cleanup();
331
+ reject(error);
332
+ };
333
+ const finish = () => {
334
+ if (settled || !sent || settings === undefined)
335
+ return;
336
+ settled = true;
337
+ cleanup();
338
+ resolve(settings);
339
+ };
340
+ const listener = (event) => {
341
+ if (event.device !== this.device ||
342
+ event.reportId !== MOTOSPEED_INPUT_REPORT_ID ||
343
+ event.data.byteLength === 0 ||
344
+ event.data.getUint8(0) !== 0x06) {
345
+ return;
346
+ }
347
+ try {
348
+ settings = motospeedDecodeSettings(event.data, this.device.productId === 0xffe0);
349
+ finish();
350
+ }
351
+ catch (error) {
352
+ fail(error);
353
+ }
354
+ };
355
+ const timer = setTimeout(() => fail(new Error("Timed out waiting for Motospeed X6 settings.")), this.timeoutMs);
356
+ this.cancelRead = () => fail(new Error("Motospeed X6 connection closed."));
357
+ this.device.addEventListener("inputreport", listener);
358
+ void this.send(motospeedBuildSettingsRequest()).then(() => {
359
+ sent = true;
360
+ finish();
361
+ }, fail);
362
+ });
363
+ }
364
+ async run(operation) {
365
+ const generation = this.generation;
366
+ const result = this.queue.then(() => {
367
+ if (generation !== this.generation)
368
+ throw new Error("Motospeed X6 connection closed.");
369
+ return operation();
370
+ });
371
+ this.queue = result.then(() => undefined, () => undefined);
372
+ return result;
373
+ }
374
+ }
375
+ function hasControlCollection(collections) {
376
+ return collections.some((collection) => (collection.usagePage === MOTOSPEED_USAGE_PAGE &&
377
+ collection.inputReports.some((r) => r.reportId === MOTOSPEED_INPUT_REPORT_ID) &&
378
+ collection.outputReports.some((r) => r.reportId === MOTOSPEED_SETTINGS_REPORT_ID) &&
379
+ collection.outputReports.some((r) => r.reportId === MOTOSPEED_COMMAND_REPORT_ID)) ||
380
+ hasControlCollection(collection.children));
381
+ }
382
+ function outputReportLength(collections, reportId) {
383
+ for (const collection of collections) {
384
+ if (collection.usagePage === MOTOSPEED_USAGE_PAGE) {
385
+ const report = collection.outputReports.find((candidate) => candidate.reportId === reportId);
386
+ if (report)
387
+ return (report.items.reduce((bits, item) => bits + item.reportSize * item.reportCount, 0) / 8);
388
+ }
389
+ const nested = outputReportLength(collection.children, reportId);
390
+ if (nested)
391
+ return nested;
392
+ }
393
+ return 0;
394
+ }
395
+ //# sourceMappingURL=hid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hid.js","sourceRoot":"","sources":["../../../src/drivers/motospeed/hid.ts"],"names":[],"mappings":"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"}
@@ -134,7 +134,7 @@ export interface AtkReceiverInfo {
134
134
  pairingSecondsRemaining: number | null;
135
135
  }
136
136
  export interface MouseStatus {
137
- brand: "RAWM" | "Logitech" | "Pulsar" | "Endgame Gear" | "WLMouse" | "G-Wolves" | "Lamzu" | "CRDRAKO" | "Attack Shark" | "Orbital" | "Razer" | "Teevolution" | "ATK" | "VXE" | "VGN" | "VAXEE" | "Finalmouse" | "Keychron" | "moddoMOUSE" | "Ninjutso" | "Zaunkoenig" | "Fantech" | "Wooting" | "WALLHACK" | "SteelSeries" | "Glorious" | "MCHOSE" | "K-snake" | "Lingbao" | "GearHub" | "Corsair" | "Microsoft" | "Dareu" | "Redragon" | "Incott" | "HyperX" | "ASUS" | "Ryunix" | "Delux";
137
+ brand: "RAWM" | "Motospeed" | "Logitech" | "Pulsar" | "Endgame Gear" | "WLMouse" | "G-Wolves" | "Lamzu" | "CRDRAKO" | "Attack Shark" | "Orbital" | "Razer" | "Teevolution" | "ATK" | "VXE" | "VGN" | "VAXEE" | "Finalmouse" | "Keychron" | "moddoMOUSE" | "Ninjutso" | "Zaunkoenig" | "Fantech" | "Wooting" | "WALLHACK" | "SteelSeries" | "Glorious" | "MCHOSE" | "K-snake" | "Lingbao" | "GearHub" | "Corsair" | "Microsoft" | "Dareu" | "Redragon" | "Incott" | "HyperX" | "ASUS" | "Ryunix" | "Delux";
138
138
  name: string;
139
139
  /** Driver-supplied UI policy (optional; keeps control.ts brand-agnostic). */
140
140
  ui?: MouseUiHints;
@@ -1 +1 @@
1
- {"version":3,"file":"mouse-types.d.ts","sourceRoot":"","sources":["../../src/drivers/mouse-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mouse-types.d.ts","sourceRoot":"","sources":["../../src/drivers/mouse-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { MouseStatus } from "../mouse-types.ts";
2
+ import { PulsarHidClient, type PulsarDeviceInfo } from "./pulsar-hid.ts";
3
+ export declare const PULSAR_ARESON_VENDOR_ID = 9639;
4
+ export declare class PulsarAresonHidClient extends PulsarHidClient {
5
+ protected readonly responseReportId = 9;
6
+ static isSupported(device: HIDDevice): boolean;
7
+ readDeviceInfo(): Promise<PulsarDeviceInfo>;
8
+ readStatus(): Promise<MouseStatus>;
9
+ getDpiOptions(): number[];
10
+ protected isVgnReceiver(): boolean;
11
+ protected sendPacket(packet: Uint8Array<ArrayBuffer>): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=pulsar-areson-hid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulsar-areson-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/pulsar/pulsar-areson-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAYzE,eAAO,MAAM,uBAAuB,OAAS,CAAC;AAQ9C,qBAAa,qBAAsB,SAAQ,eAAe;IACxD,mBAA4B,gBAAgB,KAAsB;WAElD,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAWxC,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAM3C,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAYxC,aAAa,IAAI,MAAM,EAAE;cAIf,aAAa,IAAI,OAAO;cAIlB,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAGpF"}
@@ -0,0 +1,59 @@
1
+ import { pulsarVgnDpiOptions } from "@openmouse/protocol/pulsar";
2
+ import { AttackSharkHidClient } from "../attackshark/hid.js";
3
+ import { PulsarHidClient } from "./pulsar-hid.js";
4
+ // The first-generation X2 Wireless and X2 Mini Wireless enumerate under
5
+ // Areson's vendor id with a Compx JM03 controller. They speak the same
6
+ // report-8 commands, checksum and flash map as PulsarHidClient, but the
7
+ // descriptor declares report 8 as a 16-byte feature report (there is no
8
+ // output report) and the mouse answers on input report 9. Sources, both
9
+ // tested on hardware: packerlschupfer/pulsar-mouse-linux PR #10
10
+ // (drivers/x2_areson_*.py, X2 Wireless on these PIDs) and
11
+ // VitaminDB/ardor-mouse (src/transport/hidraw.rs embeds the live descriptor,
12
+ // which matches the X2 Mini's collections exactly). DPI is the flat 50-step
13
+ // encoding (pulsarVgnEncodeDpi). Not yet tested on an X2 Mini.
14
+ export const PULSAR_ARESON_VENDOR_ID = 0x25a7;
15
+ const WIRED_PRODUCT_ID = 0xfa7b;
16
+ const RECEIVER_PRODUCT_ID = 0xfa7c;
17
+ const COMMAND_REPORT_ID = 0x08;
18
+ const RESPONSE_REPORT_ID = 0x09;
19
+ // PAW3370 sensor, 20,000 DPI on Pulsar's spec sheet.
20
+ const DPI_MAX = 20_000;
21
+ export class PulsarAresonHidClient extends PulsarHidClient {
22
+ responseReportId = RESPONSE_REPORT_ID;
23
+ static isSupported(device) {
24
+ return device.vendorId === PULSAR_ARESON_VENDOR_ID
25
+ && [WIRED_PRODUCT_ID, RECEIVER_PRODUCT_ID].includes(device.productId)
26
+ && device.collections.some((collection) => collection.featureReports.some((report) => report.reportId === COMMAND_REPORT_ID))
27
+ && device.collections.some((collection) => collection.inputReports.some((report) => report.reportId === RESPONSE_REPORT_ID))
28
+ // Areson's generic PIDs are shared across OEMs; a GearHub control channel means Attack Shark's.
29
+ && !AttackSharkHidClient.isSupported(device);
30
+ }
31
+ // Neither open driver sends the 0x01 identification challenge, so this
32
+ // firmware may not answer it; the product id already says what we need.
33
+ async readDeviceInfo() {
34
+ await this.open();
35
+ const wired = this.device.productId === WIRED_PRODUCT_ID;
36
+ return { cid: 0, mid: 0, type: wired ? 2 : 0, dongleType: 0xff, connection: wired ? "Wired" : "Wireless", maximumPollingRateHz: 1000 };
37
+ }
38
+ async readStatus() {
39
+ const status = await super.readStatus();
40
+ const productName = this.device.productName || "X2 Wireless";
41
+ return {
42
+ ...status,
43
+ name: /pulsar/i.test(productName) ? productName : `Pulsar ${productName}`,
44
+ connectionDetail: this.device.productId === WIRED_PRODUCT_ID ? "USB · Areson report 8" : "2.4 GHz receiver · Areson report 8",
45
+ // Codes 1 and 2 are 1 mm and 2 mm; the 0.7 mm code 3 does not exist here.
46
+ supportedLiftOffDistances: ["Medium", "High"],
47
+ };
48
+ }
49
+ getDpiOptions() {
50
+ return pulsarVgnDpiOptions().filter((dpi) => dpi <= DPI_MAX);
51
+ }
52
+ isVgnReceiver() {
53
+ return true;
54
+ }
55
+ async sendPacket(packet) {
56
+ await this.device.sendFeatureReport(COMMAND_REPORT_ID, packet);
57
+ }
58
+ }
59
+ //# sourceMappingURL=pulsar-areson-hid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulsar-areson-hid.js","sourceRoot":"","sources":["../../../src/drivers/pulsar/pulsar-areson-hid.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export declare class PulsarHidClient {
18
18
  private responseWaiter;
19
19
  private readonly onInputReport;
20
20
  readonly device: HIDDevice;
21
+ /** Input report the mouse answers on; the Areson-USB X2 answers on 9. */
22
+ protected readonly responseReportId: number;
21
23
  constructor(device: HIDDevice);
22
24
  static isSupported(device: HIDDevice): boolean;
23
25
  open(onReport?: (report: PulsarReport) => void): Promise<void>;
@@ -31,7 +33,7 @@ export declare class PulsarHidClient {
31
33
  * mice (including the X2 CrazyLight). Branch on vendor id, not CID/MID —
32
34
  * those are Pulsar-internal identifiers this receiver family reuses.
33
35
  */
34
- private isVgnReceiver;
36
+ protected isVgnReceiver(): boolean;
35
37
  private encodeDpi;
36
38
  private decodeDpi;
37
39
  setPollingRate(pollingRateHz: number): Promise<number>;
@@ -44,6 +46,15 @@ export declare class PulsarHidClient {
44
46
  setPerformanceMode(enabled: boolean): Promise<boolean>;
45
47
  setDebounceTime(debounceMs: number): Promise<number>;
46
48
  setSleepTimeout(timeout: number): Promise<number>;
49
+ /**
50
+ * The key table sits where Teevolution's does (six 4-byte records from 96),
51
+ * inside the flash range readStatus already reads, so buttonMappings costs
52
+ * no extra reads.
53
+ *
54
+ * ponytail: G-Wolves' web driver writes this exact table on the same
55
+ * reference firmware, but nobody has captured Pulsar Fusion doing it yet.
56
+ */
57
+ setButtonMapping(button: string, action: string): Promise<void>;
47
58
  close(): Promise<void>;
48
59
  private withDeviceControl;
49
60
  private setDeviceOnline;
@@ -55,6 +66,7 @@ export declare class PulsarHidClient {
55
66
  private writeFlash;
56
67
  private query;
57
68
  private exchange;
69
+ protected sendPacket(packet: Uint8Array<ArrayBuffer>): Promise<void>;
58
70
  private createPacket;
59
71
  private decodeVersion;
60
72
  private decodeVersionOptional;
@@ -1 +1 @@
1
- {"version":3,"file":"pulsar-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/pulsar/pulsar-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkCrD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,cAAc,CAIN;IAEhB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAU5B;IAEF,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;gBAEf,MAAM,EAAE,SAAS;IAI7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAWxC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,mBAAmB,IAAI,MAAM;IAcvB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmB3C,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA2CxC,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIX,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IActD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAWtI,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBhD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAItD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOpD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,iBAAiB;YASjB,eAAe;YAef,SAAS;YAiBT,aAAa;YAab,gBAAgB;YAIhB,eAAe;YASf,kBAAkB;YAIlB,UAAU;YAcV,KAAK;YASL,QAAQ;IAkCtB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,cAAc;CAGvB"}
1
+ {"version":3,"file":"pulsar-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/pulsar/pulsar-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuCrD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,cAAc,CAIN;IAEhB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAU5B;IAEF,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAoB;gBAEnD,MAAM,EAAE,SAAS;IAI7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAWxC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,mBAAmB,IAAI,MAAM;IAcvB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmB3C,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA6CxC,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;;OAKG;IACH,SAAS,CAAC,aAAa,IAAI,OAAO;IAIlC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIX,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IActD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAWtI,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBhD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAItD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOpD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBvD;;;;;;;OAOG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,iBAAiB;YASjB,eAAe;YAef,SAAS;YAiBT,aAAa;YAab,gBAAgB;YAIhB,eAAe;YASf,kBAAkB;YAIlB,UAAU;YAcV,KAAK;YASL,QAAQ;cAkCN,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,cAAc;CAGvB"}