avke-sdk 1.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/README.md +267 -0
- package/dist/favicon.svg +24 -0
- package/dist/icons.svg +24 -0
- package/dist/index.d.ts +296 -0
- package/dist/keyboard-sdk.es.js +3986 -0
- package/dist/keyboard-sdk.umd.js +1 -0
- package/dist/logo.svg +34 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# AVKE - 爱客游戏外设开发者联盟
|
|
2
|
+
|
|
3
|
+
[](https://github.com/avke/avke-sdk)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
|
|
7
|
+
> 引领游戏外设技术革新的专业SDK平台,为开发者提供企业级的硬件通信解决方案
|
|
8
|
+
|
|
9
|
+
AVKE 项目是由GDE 游戏驱动引擎团队开发和维护。
|
|
10
|
+
|
|
11
|
+
AVKE SDK 是专为游戏外设开发者打造的现代化JavaScript/TypeScript SDK,基于WEBHID技术实现键盘、鼠标等外设的深度硬件控制。无需额外驱动,即可在浏览器环境中实现设备连接、参数配置、灯光控制等高级功能,为游戏生态构建无限可能。
|
|
12
|
+
|
|
13
|
+
## ✨ 核心特性
|
|
14
|
+
|
|
15
|
+
- 🚀 **企业级架构** - 模块化设计,支持键盘和鼠标设备类型区分
|
|
16
|
+
- 🌐 **现代Web技术** - 基于WEBHID标准,突破浏览器硬件访问限制
|
|
17
|
+
- 📱 **跨平台支持** - Windows、macOS、Linux全平台兼容
|
|
18
|
+
- 🔧 **TypeScript优先** - 完整的类型定义和智能提示
|
|
19
|
+
- 📊 **性能监控** - 内置性能追踪和错误处理机制
|
|
20
|
+
- 🧪 **完整测试** - 全面的单元测试和集成测试覆盖
|
|
21
|
+
- 📚 **官网文档** - 体系化的API文档和开发指南
|
|
22
|
+
|
|
23
|
+
## 🛠️ 技术栈
|
|
24
|
+
|
|
25
|
+
- **前端框架**: Vue 3 + TypeScript
|
|
26
|
+
- **构建工具**: Vite
|
|
27
|
+
- **通信协议**: WEBHID
|
|
28
|
+
- **文档系统**: VitePress(已集成到官网开发与构建流程)
|
|
29
|
+
- **测试框架**: 自定义测试运行器
|
|
30
|
+
- **包管理**: npm
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install avke-sdk
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
### Keyboard SDK
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
import { ServiceKeyboard } from 'avke-sdk';
|
|
44
|
+
|
|
45
|
+
const keyboard = new ServiceKeyboard();
|
|
46
|
+
|
|
47
|
+
// Get available devices
|
|
48
|
+
const devices = await keyboard.getDevices();
|
|
49
|
+
console.log('Devices:', devices);
|
|
50
|
+
|
|
51
|
+
// Initialize a device
|
|
52
|
+
const device = await keyboard.init(devices[0].id);
|
|
53
|
+
|
|
54
|
+
// Get device info
|
|
55
|
+
const info = await keyboard.getDevicesInfo();
|
|
56
|
+
console.log('Device Info:', info);
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Mouse SDK
|
|
60
|
+
|
|
61
|
+
```javascript
|
|
62
|
+
import { ServiceMouse } from 'avke-sdk';
|
|
63
|
+
|
|
64
|
+
const mouse = new ServiceMouse();
|
|
65
|
+
|
|
66
|
+
// Get available devices
|
|
67
|
+
const devices = await mouse.getDevices();
|
|
68
|
+
console.log('Devices:', devices);
|
|
69
|
+
|
|
70
|
+
// Initialize a device
|
|
71
|
+
const device = await mouse.init(devices[0].id);
|
|
72
|
+
|
|
73
|
+
// Get DPI setting
|
|
74
|
+
const dpi = await mouse.getDPI();
|
|
75
|
+
console.log('Current DPI:', dpi.value);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 核心功能模块
|
|
79
|
+
|
|
80
|
+
### 🔧 版本管理和兼容性
|
|
81
|
+
|
|
82
|
+
SDK 内置版本管理功能,支持设备固件兼容性检查:
|
|
83
|
+
|
|
84
|
+
```javascript
|
|
85
|
+
import { versionManager } from 'avke-sdk';
|
|
86
|
+
|
|
87
|
+
// 获取SDK版本信息
|
|
88
|
+
const version = versionManager.getVersion();
|
|
89
|
+
console.log('SDK Version:', version.version);
|
|
90
|
+
|
|
91
|
+
// 检查设备兼容性
|
|
92
|
+
const compatibility = versionManager.checkCompatibility('keyboard', '1.0.1.0');
|
|
93
|
+
console.log('Compatible:', compatibility.compatible);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 📊 错误处理和日志系统
|
|
97
|
+
|
|
98
|
+
完整的错误处理和日志记录功能:
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
import { logger } from 'avke-sdk';
|
|
102
|
+
|
|
103
|
+
// 设置日志级别
|
|
104
|
+
logger.setLevel('DEBUG');
|
|
105
|
+
|
|
106
|
+
// 记录不同级别的日志
|
|
107
|
+
logger.info('Operation completed successfully');
|
|
108
|
+
logger.warn('Warning: device not responding');
|
|
109
|
+
logger.error('Error: connection failed');
|
|
110
|
+
|
|
111
|
+
// 获取日志记录
|
|
112
|
+
const logs = logger.getLogs('ERROR');
|
|
113
|
+
console.log('Error logs:', logs);
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 📈 性能监控
|
|
117
|
+
|
|
118
|
+
实时性能监控和统计:
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
import { performanceMonitor } from 'avke-sdk';
|
|
122
|
+
|
|
123
|
+
// 获取性能报告
|
|
124
|
+
const report = performanceMonitor.getReport();
|
|
125
|
+
console.log('Total operations:', report.summary.totalOperations);
|
|
126
|
+
console.log('Active connections:', report.summary.activeConnections);
|
|
127
|
+
|
|
128
|
+
// 按操作类型查看性能
|
|
129
|
+
console.log('Operation metrics:', report.operations);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 测试工具
|
|
133
|
+
|
|
134
|
+
### 运行测试
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# 运行所有测试
|
|
138
|
+
npm test
|
|
139
|
+
|
|
140
|
+
# 在Node.js环境中运行
|
|
141
|
+
npm run test:node
|
|
142
|
+
|
|
143
|
+
# 在浏览器中运行(开发模式)
|
|
144
|
+
npm run test:browser
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 测试框架
|
|
148
|
+
|
|
149
|
+
SDK 包含完整的测试框架,支持:
|
|
150
|
+
|
|
151
|
+
- ✅ 单元测试
|
|
152
|
+
- ✅ 集成测试
|
|
153
|
+
- ✅ 性能测试
|
|
154
|
+
- ✅ 兼容性测试
|
|
155
|
+
- ✅ 错误处理测试
|
|
156
|
+
|
|
157
|
+
## 开发和调试
|
|
158
|
+
|
|
159
|
+
### 开发服务器
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 启动调试工具
|
|
163
|
+
npm run dev
|
|
164
|
+
|
|
165
|
+
# 启动网站开发服务器
|
|
166
|
+
npm run website:dev
|
|
167
|
+
|
|
168
|
+
# 文档调试入口
|
|
169
|
+
# 官网开发模式可直接访问 /docs/
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 构建
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# 构建SDK
|
|
176
|
+
npm run build
|
|
177
|
+
|
|
178
|
+
# 构建调试版本
|
|
179
|
+
npm run build:debug
|
|
180
|
+
|
|
181
|
+
# 构建完整网站
|
|
182
|
+
npm run website:build
|
|
183
|
+
|
|
184
|
+
# 官网构建会自动构建文档并整合到 dist-website/docs
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## 官网
|
|
188
|
+
|
|
189
|
+
完整的项目官网已集成所有功能模块:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# 启动官网开发服务器
|
|
193
|
+
npm run website:dev
|
|
194
|
+
|
|
195
|
+
# 构建完整官网
|
|
196
|
+
npm run website:build
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
官网包含:
|
|
200
|
+
- 🏠 **首页**:产品介绍和特性展示
|
|
201
|
+
- 📦 **SDK**:下载和使用指南
|
|
202
|
+
- 🔧 **调试工具**:在线API测试
|
|
203
|
+
- 📚 **文档中心**:完整的API文档
|
|
204
|
+
|
|
205
|
+
## 国际化支持
|
|
206
|
+
|
|
207
|
+
官网支持中英文切换:
|
|
208
|
+
- 🌐 自动检测浏览器语言
|
|
209
|
+
- 🔄 手动切换语言设置
|
|
210
|
+
- 💾 语言偏好自动保存到本地存储
|
|
211
|
+
|
|
212
|
+
## Development
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Install dependencies
|
|
216
|
+
npm install
|
|
217
|
+
|
|
218
|
+
# Start development server
|
|
219
|
+
npm run dev
|
|
220
|
+
|
|
221
|
+
# Build SDK
|
|
222
|
+
npm run build
|
|
223
|
+
|
|
224
|
+
# Start debug tool
|
|
225
|
+
npm run dev
|
|
226
|
+
|
|
227
|
+
# Website docs are available at /docs/ in website dev mode
|
|
228
|
+
|
|
229
|
+
# Start website
|
|
230
|
+
npm run website:dev
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 部署到 GitHub Pages
|
|
234
|
+
|
|
235
|
+
构建后的 `dist-website` 目录可以直接部署到GitHub Pages,整个官网即可在线访问。
|
|
236
|
+
|
|
237
|
+
## Development
|
|
238
|
+
|
|
239
|
+
### 调试工具
|
|
240
|
+
|
|
241
|
+
项目包含一个内置的网页调试工具,可以在浏览器中直接测试SDK接口。
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# 启动调试服务器
|
|
245
|
+
npm run dev
|
|
246
|
+
|
|
247
|
+
# 访问调试界面进行接口测试
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
调试工具提供:
|
|
251
|
+
- 左侧API方法列表
|
|
252
|
+
- 右侧参数输入和结果显示
|
|
253
|
+
- 实时调用SDK方法并查看返回结果
|
|
254
|
+
|
|
255
|
+
### 构建
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# 构建SDK库(发布用)
|
|
259
|
+
npm run build
|
|
260
|
+
|
|
261
|
+
# 构建调试应用(可选)
|
|
262
|
+
npm run build:debug
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## License
|
|
266
|
+
|
|
267
|
+
MIT
|
package/dist/favicon.svg
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="iconGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#4facfe;stop-opacity:1" />
|
|
5
|
+
<stop offset="100%" style="stop-color:#00f2fe;stop-opacity:1" />
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
|
|
9
|
+
<!-- Background circle -->
|
|
10
|
+
<circle cx="16" cy="16" r="15" fill="url(#iconGrad)"/>
|
|
11
|
+
|
|
12
|
+
<!-- Keyboard keys -->
|
|
13
|
+
<rect x="6" y="10" width="4" height="3" rx="0.5" fill="#fff" opacity="0.9"/>
|
|
14
|
+
<rect x="11" y="10" width="4" height="3" rx="0.5" fill="#fff" opacity="0.9"/>
|
|
15
|
+
<rect x="16" y="10" width="4" height="3" rx="0.5" fill="#fff" opacity="0.9"/>
|
|
16
|
+
<rect x="6" y="14" width="4" height="3" rx="0.5" fill="#fff" opacity="0.9"/>
|
|
17
|
+
<rect x="11" y="14" width="4" height="3" rx="0.5" fill="#fff" opacity="0.9"/>
|
|
18
|
+
<rect x="16" y="14" width="4" height="3" rx="0.5" fill="#fff" opacity="0.9"/>
|
|
19
|
+
|
|
20
|
+
<!-- Mouse -->
|
|
21
|
+
<ellipse cx="21" cy="20" rx="3" ry="4" fill="#fff" opacity="0.8"/>
|
|
22
|
+
<rect x="19" y="18" width="4" height="4" rx="2" fill="#fff" opacity="0.8"/>
|
|
23
|
+
<circle cx="21" cy="16" r="0.8" fill="url(#iconGrad)"/>
|
|
24
|
+
</svg>
|
package/dist/icons.svg
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<symbol id="bluesky-icon" viewBox="0 0 16 17">
|
|
3
|
+
<g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
|
|
4
|
+
<defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
|
|
5
|
+
</symbol>
|
|
6
|
+
<symbol id="discord-icon" viewBox="0 0 20 19">
|
|
7
|
+
<path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
|
|
8
|
+
</symbol>
|
|
9
|
+
<symbol id="documentation-icon" viewBox="0 0 21 20">
|
|
10
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
|
|
11
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
|
|
12
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
|
|
13
|
+
</symbol>
|
|
14
|
+
<symbol id="github-icon" viewBox="0 0 19 19">
|
|
15
|
+
<path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
|
|
16
|
+
</symbol>
|
|
17
|
+
<symbol id="social-icon" viewBox="0 0 20 20">
|
|
18
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
|
|
19
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
|
|
20
|
+
</symbol>
|
|
21
|
+
<symbol id="x-icon" viewBox="0 0 19 19">
|
|
22
|
+
<path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
|
|
23
|
+
</symbol>
|
|
24
|
+
</svg>
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
// Type definitions for AVKE SDK
|
|
2
|
+
|
|
3
|
+
export interface Device {
|
|
4
|
+
id: string;
|
|
5
|
+
usage: number;
|
|
6
|
+
usagePage: number;
|
|
7
|
+
vendorId: number;
|
|
8
|
+
productId: number;
|
|
9
|
+
productName: string;
|
|
10
|
+
data: any;
|
|
11
|
+
type?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface BaseInfo {
|
|
15
|
+
type: number;
|
|
16
|
+
subType: number;
|
|
17
|
+
boardId: number;
|
|
18
|
+
appVersion: string;
|
|
19
|
+
pcbVersion: string;
|
|
20
|
+
runModeVersion: number;
|
|
21
|
+
sn: string;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface ProtocolVersion {
|
|
26
|
+
mainVersion: number;
|
|
27
|
+
subVersion: number;
|
|
28
|
+
hardwareVersion: number;
|
|
29
|
+
softwareVersion: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface ConfigList {
|
|
33
|
+
total: number;
|
|
34
|
+
list: string[];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface Config {
|
|
38
|
+
key: string;
|
|
39
|
+
value: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface SystemType {
|
|
43
|
+
key: string;
|
|
44
|
+
value: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface DPIList {
|
|
48
|
+
list: number[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface DPI {
|
|
52
|
+
value: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface LiftOffDistance {
|
|
56
|
+
value: number;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface ButtonMapping {
|
|
60
|
+
left: string;
|
|
61
|
+
right: string;
|
|
62
|
+
middle: string;
|
|
63
|
+
dpi: string;
|
|
64
|
+
forward: string;
|
|
65
|
+
backward: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface SDKVersion {
|
|
69
|
+
version: string;
|
|
70
|
+
name: string;
|
|
71
|
+
buildDate: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface CompatibilityCheck {
|
|
75
|
+
compatible: boolean;
|
|
76
|
+
reason: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface LogEntry {
|
|
80
|
+
timestamp: string;
|
|
81
|
+
level: string;
|
|
82
|
+
message: string;
|
|
83
|
+
data?: any;
|
|
84
|
+
stack?: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface PerformanceMetrics {
|
|
88
|
+
count: number;
|
|
89
|
+
totalTime: number;
|
|
90
|
+
avgTime: number;
|
|
91
|
+
minTime: number;
|
|
92
|
+
maxTime: number;
|
|
93
|
+
successCount: number;
|
|
94
|
+
errorCount: number;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface ConnectionMetrics {
|
|
98
|
+
connectCount: number;
|
|
99
|
+
disconnectCount: number;
|
|
100
|
+
totalConnectedTime: number;
|
|
101
|
+
lastConnected: string | null;
|
|
102
|
+
lastDisconnected: string | null;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface ErrorMetrics {
|
|
106
|
+
count: number;
|
|
107
|
+
lastError: string | null;
|
|
108
|
+
messages: Array<{
|
|
109
|
+
timestamp: string;
|
|
110
|
+
message: string;
|
|
111
|
+
stack?: string;
|
|
112
|
+
}>;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface PerformanceReport {
|
|
116
|
+
uptime: number;
|
|
117
|
+
operations: Record<string, PerformanceMetrics>;
|
|
118
|
+
connections: Record<string, ConnectionMetrics>;
|
|
119
|
+
errors: Record<string, ErrorMetrics>;
|
|
120
|
+
summary: {
|
|
121
|
+
totalOperations: number;
|
|
122
|
+
totalErrors: number;
|
|
123
|
+
activeConnections: number;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface ServiceOptions {
|
|
128
|
+
autoReconnect?: boolean;
|
|
129
|
+
reconnectInterval?: number;
|
|
130
|
+
timeout?: number;
|
|
131
|
+
logLevel?: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
declare class VersionManager {
|
|
135
|
+
constructor();
|
|
136
|
+
getVersion(): SDKVersion;
|
|
137
|
+
checkCompatibility(deviceType: string, firmwareVersion: string): CompatibilityCheck;
|
|
138
|
+
compareVersions(version1: string, version2: string): number;
|
|
139
|
+
getSupportedDeviceTypes(): string[];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
declare class Logger {
|
|
143
|
+
constructor();
|
|
144
|
+
setLevel(level: string): void;
|
|
145
|
+
debug(message: string, data?: any): void;
|
|
146
|
+
info(message: string, data?: any): void;
|
|
147
|
+
warn(message: string, data?: any): void;
|
|
148
|
+
error(message: string, data?: any): void;
|
|
149
|
+
log(level: string, message: string, data?: any): void;
|
|
150
|
+
getLogs(level?: string | null, limit?: number): LogEntry[];
|
|
151
|
+
clearLogs(): void;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
declare class PerformanceMonitor {
|
|
155
|
+
constructor();
|
|
156
|
+
recordOperation(operationName: string, startTime: number, endTime: number, success?: boolean): void;
|
|
157
|
+
recordConnection(deviceId: string, connected?: boolean): void;
|
|
158
|
+
recordError(errorType: string, error: Error | string): void;
|
|
159
|
+
getReport(): PerformanceReport;
|
|
160
|
+
reset(): void;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
declare class ServiceKeyboard {
|
|
164
|
+
constructor(options?: ServiceOptions);
|
|
165
|
+
versionManager: VersionManager;
|
|
166
|
+
logger: Logger;
|
|
167
|
+
performanceMonitor: PerformanceMonitor;
|
|
168
|
+
config: ServiceOptions;
|
|
169
|
+
getDevices(): Promise<Device[]>;
|
|
170
|
+
init(deviceId: string): Promise<Device | null>;
|
|
171
|
+
getDevicesInfo(): Promise<BaseInfo>;
|
|
172
|
+
getProtocolVersion(): Promise<ProtocolVersion>;
|
|
173
|
+
getConfigList(): Promise<ConfigList>;
|
|
174
|
+
getConfig(): Promise<Config>;
|
|
175
|
+
setConfig(config: string): Promise<void>;
|
|
176
|
+
getConfigName(index: number): Promise<string>;
|
|
177
|
+
setConfigName(index: number, name: string): Promise<void>;
|
|
178
|
+
getRateOfReturnList(): Promise<{ list: string[] }>;
|
|
179
|
+
getRateOfReturn(): Promise<{ key: string }>;
|
|
180
|
+
setRateOfReturn(value: string): Promise<void>;
|
|
181
|
+
getRtPrecision(): Promise<{ min: number }>;
|
|
182
|
+
getPerformance(params: { row: number; col: number }): Promise<{
|
|
183
|
+
row: number;
|
|
184
|
+
col: number;
|
|
185
|
+
mode: number;
|
|
186
|
+
normalPress: number;
|
|
187
|
+
normalRelease: number;
|
|
188
|
+
rtFirstTouch: number;
|
|
189
|
+
rtPress: number;
|
|
190
|
+
rtRelease: number;
|
|
191
|
+
pressDeadStroke: number;
|
|
192
|
+
releaseDeadStroke: number;
|
|
193
|
+
axis?: number;
|
|
194
|
+
axisV2Id?: number;
|
|
195
|
+
axisRangeMax?: number;
|
|
196
|
+
axisCoefficient?: number;
|
|
197
|
+
calibrate: number;
|
|
198
|
+
}>;
|
|
199
|
+
setPerformance(params: {
|
|
200
|
+
row: number;
|
|
201
|
+
col: number;
|
|
202
|
+
mode: number;
|
|
203
|
+
normalPress: number;
|
|
204
|
+
normalRelease: number;
|
|
205
|
+
rtFirstTouch: number;
|
|
206
|
+
rtPress: number;
|
|
207
|
+
rtRelease: number;
|
|
208
|
+
pressDeadStroke: number;
|
|
209
|
+
releaseDeadStroke: number;
|
|
210
|
+
axis?: number;
|
|
211
|
+
axisV2Id?: number;
|
|
212
|
+
axisRangeMax?: number;
|
|
213
|
+
axisCoefficient?: number;
|
|
214
|
+
calibrate: number;
|
|
215
|
+
}): Promise<{
|
|
216
|
+
row: number;
|
|
217
|
+
col: number;
|
|
218
|
+
mode: number;
|
|
219
|
+
normalPress: number;
|
|
220
|
+
normalRelease: number;
|
|
221
|
+
rtFirstTouch: number;
|
|
222
|
+
rtPress: number;
|
|
223
|
+
rtRelease: number;
|
|
224
|
+
pressDeadStroke: number;
|
|
225
|
+
releaseDeadStroke: number;
|
|
226
|
+
axis?: number;
|
|
227
|
+
axisV2Id?: number;
|
|
228
|
+
axisRangeMax?: number;
|
|
229
|
+
axisCoefficient?: number;
|
|
230
|
+
calibrate: number;
|
|
231
|
+
}>;
|
|
232
|
+
getADCSample(params: { row: number }): Promise<{ adc: number; row: number; data: number[] }>;
|
|
233
|
+
getRoute(params: { row: number }): Promise<{ route: number; row: number; data: number[] }>;
|
|
234
|
+
calibrationStart(): Promise<{ status: number; message: string }>;
|
|
235
|
+
calibrationEnd(): Promise<{ status: number; message: string }>;
|
|
236
|
+
getCalibrationStatus(params: { row: number }): Promise<{ calibrate: number; row: number; data: number[] }>;
|
|
237
|
+
getAxisList(): Promise<{ total: number; list: number[] }>;
|
|
238
|
+
getShakeOptimizationSwitch(): Promise<{ enabled: boolean; status: number }>;
|
|
239
|
+
setShakeOptimizationSwitch(enabled: number): Promise<{ enabled: boolean; status: number }>;
|
|
240
|
+
getHigherKey(params: { row: number; col: number }): Promise<{ row: number; col: number; mode: number }>;
|
|
241
|
+
setHigherKeyNONE(params: { row: number; col: number; mode: string; data: { mode: number } }): Promise<{ row: number; col: number; mode: number; data: { mode: number } }>;
|
|
242
|
+
setHigherKeyDKS(params: { row: number; col: number; data: { kcs: number[]; trps: number[]; dbs: number[] } }): Promise<{ row: number; col: number; mode: number; data: { kcs: number[]; trps: number[]; dbs: number[] } }>;
|
|
243
|
+
setHigherKeyMPT(params: { row: number; col: number; data: { kcs: number[]; dbs: number[] } }): Promise<{ row: number; col: number; mode: number; data: { kcs: number[]; dbs: number[] } }>;
|
|
244
|
+
setHigherKeyMT(params: { row: number; col: number; mode?: string; data: { time: number; kcs: number[] } }): Promise<{ row: number; col: number; mode: number; data: { time: number; kcs: number[] } }>;
|
|
245
|
+
setHigherKeyTGL(params: { row: number; col: number; mode?: string; data: { kcs: number; delay: number } }): Promise<{ row: number; col: number; mode: number; data: { kcs: number; delay: number } }>;
|
|
246
|
+
setHigherKeyEND(params: { row: number; col: number; mode?: string; data: { kcs: number[]; delay: number } }): Promise<{ row: number; col: number; mode: number; data: { kcs: number[]; delay: number } }>;
|
|
247
|
+
setHigherKeySOCD(params: { row: number; col: number; row2: number; col2: number; mode: number; delay: number; kcs: number[] }): Promise<{ row: number; col: number; mode: number; data: { row2: number; col2: number; kcs: number[]; delay: number; mode: number } }>;
|
|
248
|
+
setHigherKeyRS(params: { row: number; col: number; mode?: string; data: { row2: number; col2: number; delay: number; kcs: number[] } }): Promise<{ row: number; col: number; mode: number; data: { row2: number; col2: number; delay: number; kcs: number[] } }>;
|
|
249
|
+
getLightingSleepTime(): Promise<number>;
|
|
250
|
+
setLightingSleepTime(time: number): Promise<void>;
|
|
251
|
+
closeDevice(): Promise<void>;
|
|
252
|
+
reconnection(device: Device, deviceId: string): Promise<void>;
|
|
253
|
+
on(eventName: string, callback: Function): void;
|
|
254
|
+
off(eventName: string, callback: Function): void;
|
|
255
|
+
appToBoot(): Promise<void>;
|
|
256
|
+
bootToApp(): Promise<void>;
|
|
257
|
+
upgrade(buffer: ArrayBuffer, callback?: Function, options?: any): Promise<{ success: boolean }>;
|
|
258
|
+
GFSRestore(): Promise<void>;
|
|
259
|
+
getSystemType(): Promise<SystemType>;
|
|
260
|
+
setSystemType(systemType: string): Promise<void>;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
declare class ServiceMouse {
|
|
264
|
+
constructor(options?: ServiceOptions);
|
|
265
|
+
versionManager: VersionManager;
|
|
266
|
+
logger: Logger;
|
|
267
|
+
performanceMonitor: PerformanceMonitor;
|
|
268
|
+
config: ServiceOptions;
|
|
269
|
+
getDevices(): Promise<Device[]>;
|
|
270
|
+
init(deviceId: string): Promise<Device | null>;
|
|
271
|
+
getDevicesInfo(): Promise<BaseInfo>;
|
|
272
|
+
getProtocolVersion(): Promise<ProtocolVersion>;
|
|
273
|
+
getDPIList(): Promise<DPIList>;
|
|
274
|
+
getDPI(): Promise<DPI>;
|
|
275
|
+
setDPI(value: number): Promise<void>;
|
|
276
|
+
getRateOfReturnList(): Promise<{ list: string[] }>;
|
|
277
|
+
getRateOfReturn(): Promise<{ key: string }>;
|
|
278
|
+
setRateOfReturn(value: string): Promise<void>;
|
|
279
|
+
getLiftOffDistance(): Promise<LiftOffDistance>;
|
|
280
|
+
setLiftOffDistance(value: number): Promise<void>;
|
|
281
|
+
getButtonMapping(): Promise<ButtonMapping>;
|
|
282
|
+
setButtonMapping(mapping: ButtonMapping): Promise<void>;
|
|
283
|
+
closeDevice(): Promise<void>;
|
|
284
|
+
reconnection(device: Device, deviceId: string): Promise<void>;
|
|
285
|
+
on(eventName: string, callback: Function): void;
|
|
286
|
+
off(eventName: string, callback: Function): void;
|
|
287
|
+
appToBoot(): Promise<void>;
|
|
288
|
+
bootToApp(): Promise<void>;
|
|
289
|
+
upgrade(buffer: ArrayBuffer, callback?: Function, options?: any): Promise<{ success: boolean }>;
|
|
290
|
+
GFSRestore(): Promise<void>;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export { ServiceKeyboard, ServiceMouse };
|
|
294
|
+
export { VersionManager, Logger, PerformanceMonitor };
|
|
295
|
+
export { versionManager, logger, performanceMonitor };
|
|
296
|
+
export default ServiceKeyboard;
|