yjx-sdk-mouse 0.1.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 (66) hide show
  1. package/README.md +287 -0
  2. package/dist/constants.d.ts +79 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +100 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/controllers/button.d.ts +15 -0
  7. package/dist/controllers/button.d.ts.map +1 -0
  8. package/dist/controllers/button.js +40 -0
  9. package/dist/controllers/button.js.map +1 -0
  10. package/dist/controllers/device.d.ts +19 -0
  11. package/dist/controllers/device.d.ts.map +1 -0
  12. package/dist/controllers/device.js +111 -0
  13. package/dist/controllers/device.js.map +1 -0
  14. package/dist/controllers/dpi.d.ts +15 -0
  15. package/dist/controllers/dpi.d.ts.map +1 -0
  16. package/dist/controllers/dpi.js +40 -0
  17. package/dist/controllers/dpi.js.map +1 -0
  18. package/dist/controllers/macro.d.ts +18 -0
  19. package/dist/controllers/macro.d.ts.map +1 -0
  20. package/dist/controllers/macro.js +31 -0
  21. package/dist/controllers/macro.js.map +1 -0
  22. package/dist/controllers/other.d.ts +17 -0
  23. package/dist/controllers/other.d.ts.map +1 -0
  24. package/dist/controllers/other.js +29 -0
  25. package/dist/controllers/other.js.map +1 -0
  26. package/dist/controllers/performance.d.ts +10 -0
  27. package/dist/controllers/performance.d.ts.map +1 -0
  28. package/dist/controllers/performance.js +28 -0
  29. package/dist/controllers/performance.js.map +1 -0
  30. package/dist/device/index.d.ts +57 -0
  31. package/dist/device/index.d.ts.map +1 -0
  32. package/dist/device/index.js +341 -0
  33. package/dist/device/index.js.map +1 -0
  34. package/dist/index.d.ts +46 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +102 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/protocol/command-presets.d.ts +11 -0
  39. package/dist/protocol/command-presets.d.ts.map +1 -0
  40. package/dist/protocol/command-presets.js +89 -0
  41. package/dist/protocol/command-presets.js.map +1 -0
  42. package/dist/protocol/key.d.ts +20 -0
  43. package/dist/protocol/key.d.ts.map +1 -0
  44. package/dist/protocol/key.js +197 -0
  45. package/dist/protocol/key.js.map +1 -0
  46. package/dist/protocol/keyboard-presets.d.ts +6 -0
  47. package/dist/protocol/keyboard-presets.d.ts.map +1 -0
  48. package/dist/protocol/keyboard-presets.js +211 -0
  49. package/dist/protocol/keyboard-presets.js.map +1 -0
  50. package/dist/protocol/macro.d.ts +23 -0
  51. package/dist/protocol/macro.d.ts.map +1 -0
  52. package/dist/protocol/macro.js +144 -0
  53. package/dist/protocol/macro.js.map +1 -0
  54. package/dist/protocol/packet.d.ts +88 -0
  55. package/dist/protocol/packet.d.ts.map +1 -0
  56. package/dist/protocol/packet.js +294 -0
  57. package/dist/protocol/packet.js.map +1 -0
  58. package/dist/types.d.ts +127 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/webhid.d.ts +51 -0
  63. package/dist/webhid.d.ts.map +1 -0
  64. package/dist/webhid.js +2 -0
  65. package/dist/webhid.js.map +1 -0
  66. package/package.json +38 -0
@@ -0,0 +1,294 @@
1
+ import { Command, HANDSHAKE_PAYLOAD, MEMORY_FLAGS, PACKET_SIZE, PAYLOAD_SIZE, PollRateFromIndex, PollRateToIndex, READ_ADDRESS, REPORT_ID, WRITE_ADDRESS, } from '../constants.js';
2
+ export function createPacket(command, payload = []) {
3
+ const packet = new Uint8Array(PACKET_SIZE);
4
+ packet[0] = REPORT_ID;
5
+ packet[1] = command;
6
+ packet.set(payload, 2);
7
+ return packet;
8
+ }
9
+ export function getReportId(packet) {
10
+ return packet[0] ?? REPORT_ID;
11
+ }
12
+ export function getPayload(packet) {
13
+ return packet.subarray(1, PACKET_SIZE);
14
+ }
15
+ export function createHandshakePacket() {
16
+ return createPacket(Command.Handshake, [...HANDSHAKE_PAYLOAD]);
17
+ }
18
+ export function createPingPacket() {
19
+ return createPacket(Command.Ping);
20
+ }
21
+ /**
22
+ * 原厂 bytesToString:默认仅保留可打印 ASCII(32–126)。
23
+ * r(bytes) → printableOnly=true;r(bytes, false) → 保留全部字节。
24
+ */
25
+ function bytesToReportChars(bytes, printableOnly = true) {
26
+ return bytes
27
+ .map((byte) => {
28
+ if (byte < 0 || byte > 255 || !Number.isInteger(byte)) {
29
+ return null;
30
+ }
31
+ if (printableOnly && (byte < 32 || byte > 126)) {
32
+ return null;
33
+ }
34
+ return String.fromCharCode(byte);
35
+ })
36
+ .filter((char) => char !== null);
37
+ }
38
+ /**
39
+ * 解析 Ping(0x04) 上报中的固件版本。
40
+ * 原厂:r(o.slice(2)).slice(-5).join(''),r() 单参数时仅保留可打印字符。
41
+ */
42
+ export function parsePingVersionReport(data) {
43
+ const view = normalizeInputReport(REPORT_ID, data);
44
+ if (view[0] !== Command.Ping) {
45
+ return null;
46
+ }
47
+ const version = bytesToReportChars(Array.from(view.slice(2)))
48
+ .slice(-5)
49
+ .join('');
50
+ return /^\d+\.\d+\.\d+$/.test(version) ? version : null;
51
+ }
52
+ export function createReadPacket(address, offset, command = Command.ReadBlock) {
53
+ return createPacket(command, [
54
+ address & 0xff,
55
+ (address >> 8) & 0xff,
56
+ offset,
57
+ ...MEMORY_FLAGS,
58
+ ]);
59
+ }
60
+ export function createWritePacket(address, offset, payload) {
61
+ return createPacket(Command.WriteBlock, [
62
+ address & 0xff,
63
+ (address >> 8) & 0xff,
64
+ offset,
65
+ ...MEMORY_FLAGS,
66
+ ...payload,
67
+ ]);
68
+ }
69
+ export function readDeviceInfoPacket() {
70
+ return createReadPacket(READ_ADDRESS, 0x2e, Command.ReadBlock);
71
+ }
72
+ export function readConfigPacket() {
73
+ return createReadPacket(READ_ADDRESS, 0x2c, Command.ReadShort);
74
+ }
75
+ export function readProfilePacket() {
76
+ return createReadPacket(READ_ADDRESS, 0x2e, Command.ReadRetry);
77
+ }
78
+ /** @deprecated */
79
+ export const readProfileRetryPacket = readProfilePacket;
80
+ export function writeProfilePacket(payload) {
81
+ return createWritePacket(WRITE_ADDRESS, 0x2f, payload);
82
+ }
83
+ export function isValidResponse(reportId, data) {
84
+ if (data.length < 1) {
85
+ return false;
86
+ }
87
+ if (reportId === REPORT_ID) {
88
+ return true;
89
+ }
90
+ // 部分设备/抓包层在 reportId=0 时 payload 仍带 0xF0 前缀
91
+ return reportId === 0 && data[0] === REPORT_ID;
92
+ }
93
+ /**
94
+ * 统一 Web HID 输入报告格式。
95
+ * Bus Hound 可见 `F0 0F AE ...` 共 64 字节;浏览器里 reportId 可能与首字节分离或合并。
96
+ */
97
+ export function normalizeInputReport(_reportId, data) {
98
+ if (data.length >= 2 && data[0] === REPORT_ID) {
99
+ return data.subarray(1);
100
+ }
101
+ return data;
102
+ }
103
+ export function getResponseCommand(data) {
104
+ const normalized = normalizeInputReport(REPORT_ID, data);
105
+ return normalized[0] ?? -1;
106
+ }
107
+ /**
108
+ * 解析 0xFA 状态上报(原厂 statu 回调)
109
+ * 抓包:F0 FA 00 23 0A 00 00 00 10 05 04 → 档位 byte[9]=5,回报率 byte[10]=4
110
+ */
111
+ export function parseStatusReport(data) {
112
+ const view = normalizeInputReport(REPORT_ID, data);
113
+ if (view[0] !== Command.StatusReport) {
114
+ return null;
115
+ }
116
+ let dpiByte = view[8] ?? 1;
117
+ let rateByte = view[9] ?? 1;
118
+ // byte[8] 常为 0x10 头字段;真实档位在 [9]、回报率在 [10]
119
+ if (dpiByte > 6 && (view[9] ?? 0) > 0 && (view[9] ?? 0) <= 6) {
120
+ dpiByte = view[9] ?? 1;
121
+ rateByte = view[10] ?? 1;
122
+ }
123
+ if (dpiByte === 0xd0) {
124
+ return null;
125
+ }
126
+ return {
127
+ dpiIndex: Math.max(0, dpiByte - 1),
128
+ pollRateIndex: Math.max(0, rateByte - 1),
129
+ };
130
+ }
131
+ export function toHex(data, max = PACKET_SIZE) {
132
+ const bytes = Array.from(data).slice(0, max);
133
+ return bytes.map((b) => b.toString(16).padStart(2, '0').toUpperCase()).join(' ');
134
+ }
135
+ function readU16(data, offset) {
136
+ return (data[offset] ?? 0) | ((data[offset + 1] ?? 0) << 8);
137
+ }
138
+ export function validateDpiValue(value) {
139
+ if (!Number.isFinite(value) || value < 50) {
140
+ return 50;
141
+ }
142
+ if (value > 50000) {
143
+ return 50000;
144
+ }
145
+ return Math.round(value);
146
+ }
147
+ const DEFAULT_DPI_LEVELS = [50, 800, 1200, 1600, 2400, 3200];
148
+ /** AJ159 V2 SE 出厂默认配置(对齐原厂 mouse_info_aj159v2se.json) */
149
+ const FACTORY_DPI_LEVELS = [800, 1600, 2400, 3200, 5000, 12000];
150
+ export function createFactoryDefaultMouseConfig() {
151
+ return {
152
+ lightMode: 0,
153
+ pollRateIndex: 3,
154
+ dpiCount: 6,
155
+ currentIndex: 2,
156
+ dpiLevels: [...FACTORY_DPI_LEVELS],
157
+ scrollFlag: 0,
158
+ lodValue: 1,
159
+ sensorFlag: 53,
160
+ keyRespond: 8,
161
+ sleepLight: 10,
162
+ highspeedMode: 0,
163
+ statusFlags: 0x10,
164
+ };
165
+ }
166
+ export function parseMouseConfig(data) {
167
+ const view = normalizeInputReport(REPORT_ID, data);
168
+ const dpiCount = view[10] ?? 6;
169
+ const dpiLevels = Array.from({ length: 6 }, (_, index) => validateDpiValue(readU16(view, 12 + index * 2)));
170
+ return {
171
+ lightMode: view[8] ?? 0,
172
+ pollRateIndex: Math.max(0, (view[9] ?? 1) - 1),
173
+ dpiCount: dpiCount > 0 ? dpiCount : 6,
174
+ currentIndex: Math.max(0, (view[11] ?? 1) - 1),
175
+ dpiLevels,
176
+ scrollFlag: view[47] ?? 0,
177
+ lodValue: view[48] ?? 1,
178
+ sensorFlag: view[49] ?? 53,
179
+ keyRespond: view[50] ?? 8,
180
+ sleepLight: view[51] ?? 10,
181
+ highspeedMode: view[52] ?? 0,
182
+ statusFlags: view[53] ?? 0x10,
183
+ };
184
+ }
185
+ /** 构建 0x0F 写配置 payload(对齐原厂 setMouseConfigData,从 packet[8] 起) */
186
+ export function buildMouseConfigWritePayload(config) {
187
+ const payload = new Array(56).fill(0);
188
+ payload[0] = 0x00;
189
+ payload[1] = config.lightMode & 0xff;
190
+ payload[2] = (config.pollRateIndex + 1) & 0xff;
191
+ payload[3] = Math.min(Math.max(config.dpiCount, 1), 6);
192
+ payload[4] = (config.currentIndex + 1) & 0xff;
193
+ for (let index = 0; index < 6; index++) {
194
+ const level = validateDpiValue(config.dpiLevels[index] ?? DEFAULT_DPI_LEVELS[index] ?? 800);
195
+ payload[5 + index * 2] = level & 0xff;
196
+ payload[6 + index * 2] = (level >> 8) & 0xff;
197
+ }
198
+ payload[40] = config.scrollFlag & 0xff;
199
+ payload[41] = config.lodValue & 0xff;
200
+ payload[42] = config.sensorFlag & 0xff;
201
+ payload[43] = config.keyRespond & 0xff;
202
+ payload[44] = config.sleepLight & 0xff;
203
+ payload[45] = config.highspeedMode & 0xff;
204
+ payload[46] = config.statusFlags & 0xff;
205
+ return payload;
206
+ }
207
+ export function mouseConfigToDpiProfile(config) {
208
+ return {
209
+ pollRateIndex: config.pollRateIndex,
210
+ slotCount: config.dpiCount,
211
+ currentIndex: config.currentIndex,
212
+ dpiLevels: config.dpiLevels.slice(0, config.dpiCount),
213
+ };
214
+ }
215
+ export function mouseConfigToPerformanceSettings(config) {
216
+ const wakeupFlag = (config.statusFlags >> 4) & 0x0f;
217
+ return {
218
+ pollRate: PollRateFromIndex[config.pollRateIndex] ?? 1000,
219
+ sleepMinutes: config.sleepLight === 0 ? 10 : config.sleepLight,
220
+ neverSleep: config.sleepLight === 0,
221
+ scrollReverse: config.scrollFlag === 1,
222
+ wakeOnMove: wakeupFlag === 1,
223
+ };
224
+ }
225
+ export function applyPerformanceSettingsToMouseConfig(base, settings) {
226
+ const wakeupFlag = settings.wakeOnMove ? 1 : 0;
227
+ const moveLightFlag = base.statusFlags & 0x0f;
228
+ return {
229
+ ...base,
230
+ pollRateIndex: PollRateToIndex[settings.pollRate] ?? base.pollRateIndex,
231
+ scrollFlag: settings.scrollReverse ? 1 : 0,
232
+ sleepLight: settings.neverSleep
233
+ ? 0
234
+ : Math.max(1, Math.min(100, Math.round(settings.sleepMinutes))),
235
+ statusFlags: (wakeupFlag << 4) | moveLightFlag,
236
+ };
237
+ }
238
+ export function dpiProfileToMouseConfig(profile, base) {
239
+ const pollRate = profile.pollRate;
240
+ const pollRateIndex = PollRateToIndex[pollRate] ?? base?.pollRateIndex ?? 3;
241
+ const levels = [...profile.levels];
242
+ while (levels.length < 6) {
243
+ levels.push(base?.dpiLevels[levels.length] ?? DEFAULT_DPI_LEVELS[levels.length] ?? 800);
244
+ }
245
+ return {
246
+ lightMode: base?.lightMode ?? 0,
247
+ pollRateIndex,
248
+ dpiCount: Math.min(6, Math.max(levels.length, base?.dpiCount ?? 6)),
249
+ currentIndex: profile.currentIndex,
250
+ dpiLevels: levels.map(validateDpiValue),
251
+ scrollFlag: base?.scrollFlag ?? 0,
252
+ lodValue: base?.lodValue ?? 1,
253
+ sensorFlag: base?.sensorFlag ?? 53,
254
+ keyRespond: base?.keyRespond ?? 8,
255
+ sleepLight: base?.sleepLight ?? 10,
256
+ highspeedMode: base?.highspeedMode ?? 0,
257
+ statusFlags: base?.statusFlags ?? 0x10,
258
+ };
259
+ }
260
+ export function parseConfigResponse(data) {
261
+ return mouseConfigToDpiProfile(parseMouseConfig(data));
262
+ }
263
+ export function buildProfilePayload(options) {
264
+ return buildMouseConfigWritePayload({
265
+ lightMode: 0,
266
+ pollRateIndex: options.pollRateIndex,
267
+ dpiCount: Math.min(options.dpiLevels.length, 6) || 6,
268
+ currentIndex: options.currentIndex,
269
+ dpiLevels: options.dpiLevels,
270
+ scrollFlag: 0,
271
+ lodValue: 1,
272
+ sensorFlag: 53,
273
+ keyRespond: 8,
274
+ sleepLight: 10,
275
+ highspeedMode: 0,
276
+ statusFlags: 0x10,
277
+ });
278
+ }
279
+ /** @deprecated 使用 parseConfigResponse */
280
+ export function parseProfilePayload(data) {
281
+ const config = parseConfigResponse(data);
282
+ return {
283
+ pollRateCode: config.pollRateIndex + 1,
284
+ slotCount: config.slotCount,
285
+ currentIndex: config.currentIndex,
286
+ dpiLevels: config.dpiLevels,
287
+ };
288
+ }
289
+ export function toPayloadBuffer(packet) {
290
+ const buffer = new ArrayBuffer(PAYLOAD_SIZE);
291
+ new Uint8Array(buffer).set(getPayload(packet));
292
+ return buffer;
293
+ }
294
+ //# sourceMappingURL=packet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packet.js","sourceRoot":"","sources":["../../src/protocol/packet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ export interface DeviceFilterConfig {
2
+ vendorId: number;
3
+ productId: number;
4
+ usagePage: number;
5
+ usage: number;
6
+ }
7
+ export interface MouseInitOptions {
8
+ configs: DeviceFilterConfig[];
9
+ usagePage?: number;
10
+ usage?: number;
11
+ /** 单条命令默认超时(毫秒) */
12
+ timeout?: number;
13
+ }
14
+ export interface MouseDeviceInfo {
15
+ id: string;
16
+ vendorId: number;
17
+ productId: number;
18
+ productName: string;
19
+ opened: boolean;
20
+ raw: HIDDevice;
21
+ }
22
+ export type UsbChangeType = 'connect' | 'disconnect' | 'isUpgrading_connect' | 'isUpgrading_disconnect';
23
+ export interface UsbChangeEvent {
24
+ type: UsbChangeType;
25
+ device?: HIDDevice;
26
+ reconnect?: boolean;
27
+ }
28
+ export type EventHandler<T = unknown> = (data: T) => void;
29
+ /** 鼠标按键切换 DPI / 回报率时的异步上报(命令 0xFA) */
30
+ export interface MouseStatusEvent {
31
+ /** 当前 DPI 档位(0-based) */
32
+ dpiIndex: number;
33
+ /** 回报率档位索引 */
34
+ pollRateIndex: number;
35
+ /** 回报率 Hz */
36
+ pollRate: 125 | 250 | 500 | 1000;
37
+ }
38
+ export interface DeviceInfoPayload {
39
+ raw: Uint8Array;
40
+ boardId?: number;
41
+ /** 固件版本(2.4G 连接时为接收器固件版本) */
42
+ firmwareVersion?: string;
43
+ /** 接收器固件版本,与 firmwareVersion 相同 */
44
+ receiverFirmwareVersion?: string;
45
+ }
46
+ export interface DpiProfile {
47
+ /** 当前选中档位(0-based) */
48
+ currentIndex: number;
49
+ /** 回报率 Hz */
50
+ pollRate: 125 | 250 | 500 | 1000;
51
+ /** 各档 DPI 值 */
52
+ levels: number[];
53
+ }
54
+ export interface PerformanceSettings {
55
+ pollRate: 125 | 250 | 500 | 1000;
56
+ sleepMinutes: number;
57
+ neverSleep: boolean;
58
+ scrollReverse: boolean;
59
+ wakeOnMove: boolean;
60
+ }
61
+ export interface ButtonKeyCode {
62
+ button: 'left' | 'middle' | 'right' | 'back' | 'forward';
63
+ keyCode: number;
64
+ }
65
+ /** 按键映射槽位(原厂协议 4 字节) */
66
+ export interface MouseKeyMapping {
67
+ index: number;
68
+ type: number;
69
+ code1: number;
70
+ code2: number;
71
+ code3: number;
72
+ }
73
+ export type MouseButtonSlot = 'left' | 'right' | 'middle' | 'back' | 'forward';
74
+ export interface KeyPreset {
75
+ id: string;
76
+ label: string;
77
+ type: number;
78
+ code1: number;
79
+ code2: number;
80
+ code3: number;
81
+ }
82
+ export interface ButtonMapping {
83
+ left: MouseKeyMapping;
84
+ right: MouseKeyMapping;
85
+ middle: MouseKeyMapping;
86
+ back: MouseKeyMapping;
87
+ forward: MouseKeyMapping;
88
+ }
89
+ export type MacroKeyboardActionName = 'keydown' | 'keyup';
90
+ export type MacroMouseActionName = 'mousedown' | 'mouseup';
91
+ /** 键盘宏动作。keyCode 使用 USB HID Keyboard Usage,例如 A = 0x04。 */
92
+ export interface MacroKeyboardAction {
93
+ type: 'keyboard';
94
+ keyCode: number;
95
+ action: MacroKeyboardActionName;
96
+ /** 动作执行后的延迟,单位毫秒;省略或设为 0 时按 2ms 写入。 */
97
+ delay?: number;
98
+ }
99
+ /** 鼠标按键宏动作。 */
100
+ export interface MacroMouseAction {
101
+ type: 'mouse';
102
+ button: MouseButtonSlot;
103
+ action: MacroMouseActionName;
104
+ /** 动作执行后的延迟,单位毫秒;省略或设为 0 时按 2ms 写入。 */
105
+ delay?: number;
106
+ }
107
+ export type MacroAction = MacroKeyboardAction | MacroMouseAction;
108
+ /** 单个宏定义;数组中的位置即宏索引,范围为 0..31。 */
109
+ export interface MouseMacro {
110
+ actions: MacroAction[];
111
+ }
112
+ /**
113
+ * 宏按键触发模式,对应按键映射协议中的 code3。
114
+ * 0/2/3/4 为 AJ159 V2 SE 原厂驱动支持的模式值。
115
+ */
116
+ export type MacroTriggerMode = 0 | 2 | 3 | 4;
117
+ /** 将设备中的宏分配到鼠标按键时使用的选项。 */
118
+ export interface MacroButtonOptions {
119
+ /** 宏索引,范围为 0..31。 */
120
+ macroIndex: number;
121
+ /** 重复次数,对应 code2;默认值为 1。 */
122
+ repeat?: number;
123
+ /** 触发模式,对应 code3;默认值为 0。 */
124
+ triggerMode?: MacroTriggerMode;
125
+ }
126
+ export type MacroProfileIndex = 0 | 1;
127
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ export {};
2
+ declare global {
3
+ interface HIDDeviceFilter {
4
+ vendorId?: number;
5
+ productId?: number;
6
+ usagePage?: number;
7
+ usage?: number;
8
+ }
9
+ interface HIDReportInfo {
10
+ reportId: number;
11
+ reportSize?: number;
12
+ }
13
+ interface HIDCollectionInfo {
14
+ usagePage: number;
15
+ usage: number;
16
+ inputReports?: HIDReportInfo[];
17
+ outputReports?: HIDReportInfo[];
18
+ featureReports?: HIDReportInfo[];
19
+ }
20
+ interface HIDDevice {
21
+ readonly opened: boolean;
22
+ readonly vendorId: number;
23
+ readonly productId: number;
24
+ readonly productName: string;
25
+ readonly collections: HIDCollectionInfo[];
26
+ open(): Promise<void>;
27
+ close(): Promise<void>;
28
+ sendReport(reportId: number, data: BufferSource): Promise<void>;
29
+ addEventListener(type: 'inputreport', listener: (event: HIDInputReportEvent) => void, options?: boolean | AddEventListenerOptions): void;
30
+ removeEventListener(type: 'inputreport', listener: (event: HIDInputReportEvent) => void, options?: boolean | EventListenerOptions): void;
31
+ }
32
+ interface HIDInputReportEvent extends Event {
33
+ readonly data: DataView;
34
+ readonly device: HIDDevice;
35
+ readonly reportId: number;
36
+ }
37
+ interface HID {
38
+ getDevices(): Promise<HIDDevice[]>;
39
+ requestDevice(options: {
40
+ filters: HIDDeviceFilter[];
41
+ }): Promise<HIDDevice[]>;
42
+ addEventListener(type: 'connect' | 'disconnect', listener: (event: HIDConnectionEvent) => void, options?: boolean | AddEventListenerOptions): void;
43
+ }
44
+ interface HIDConnectionEvent extends Event {
45
+ readonly device: HIDDevice;
46
+ }
47
+ interface Navigator {
48
+ readonly hid: HID;
49
+ }
50
+ }
51
+ //# sourceMappingURL=webhid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhid.d.ts","sourceRoot":"","sources":["../src/webhid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC;AAEV,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,UAAU,aAAa;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAED,UAAU,iBAAiB;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;QAC/B,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;QAChC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;KAClC;IAED,UAAU,SAAS;QACjB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC;QAC1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,gBAAgB,CACd,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,EAC9C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,IAAI,CAAC;QACR,mBAAmB,CACjB,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,EAC9C,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACvC,IAAI,CAAC;KACT;IAED,UAAU,mBAAoB,SAAQ,KAAK;QACzC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B;IAED,UAAU,GAAG;QACX,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACnC,aAAa,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,eAAe,EAAE,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,gBAAgB,CACd,IAAI,EAAE,SAAS,GAAG,YAAY,EAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,EAC7C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,IAAI,CAAC;KACT;IAED,UAAU,kBAAmB,SAAQ,KAAK;QACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;KAC5B;IAED,UAAU,SAAS;QACjB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;KACnB;CACF"}
package/dist/webhid.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=webhid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhid.js","sourceRoot":"","sources":["../src/webhid.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "yjx-sdk-mouse",
3
+ "version": "0.1.0",
4
+ "description": "永佳新鼠标 WebHID SDK,支持 DPI、回报率、按键映射和宏配置",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "sideEffects": false,
18
+ "keywords": [
19
+ "webhid",
20
+ "hid",
21
+ "mouse",
22
+ "sdk",
23
+ "dpi",
24
+ "macro"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public",
28
+ "registry": "https://registry.npmjs.org/"
29
+ },
30
+ "scripts": {
31
+ "build": "tsc -p tsconfig.json",
32
+ "dev": "tsc -p tsconfig.json --watch",
33
+ "prepack": "npm run build"
34
+ },
35
+ "devDependencies": {
36
+ "typescript": "^5.8.2"
37
+ }
38
+ }