@openmouse/protocol 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 (547) hide show
  1. package/CONTRIBUTING.md +167 -0
  2. package/README.md +89 -0
  3. package/dist/asus/index.d.ts +52 -0
  4. package/dist/asus/index.d.ts.map +1 -0
  5. package/dist/asus/index.js +248 -0
  6. package/dist/asus/index.js.map +1 -0
  7. package/dist/atk/index.d.ts +200 -0
  8. package/dist/atk/index.d.ts.map +1 -0
  9. package/dist/atk/index.js +480 -0
  10. package/dist/atk/index.js.map +1 -0
  11. package/dist/bitmouse/index.d.ts +284 -0
  12. package/dist/bitmouse/index.d.ts.map +1 -0
  13. package/dist/bitmouse/index.js +396 -0
  14. package/dist/bitmouse/index.js.map +1 -0
  15. package/dist/compx/codec.d.ts +31 -0
  16. package/dist/compx/codec.d.ts.map +1 -0
  17. package/dist/compx/codec.js +50 -0
  18. package/dist/compx/codec.js.map +1 -0
  19. package/dist/corsair/index.d.ts +147 -0
  20. package/dist/corsair/index.d.ts.map +1 -0
  21. package/dist/corsair/index.js +223 -0
  22. package/dist/corsair/index.js.map +1 -0
  23. package/dist/dareu/index.d.ts +136 -0
  24. package/dist/dareu/index.d.ts.map +1 -0
  25. package/dist/dareu/index.js +344 -0
  26. package/dist/dareu/index.js.map +1 -0
  27. package/dist/drivers/asus/hid.d.ts +29 -0
  28. package/dist/drivers/asus/hid.d.ts.map +1 -0
  29. package/dist/drivers/asus/hid.js +419 -0
  30. package/dist/drivers/asus/hid.js.map +1 -0
  31. package/dist/drivers/atk/bitmouse-hid.d.ts +80 -0
  32. package/dist/drivers/atk/bitmouse-hid.d.ts.map +1 -0
  33. package/dist/drivers/atk/bitmouse-hid.js +501 -0
  34. package/dist/drivers/atk/bitmouse-hid.js.map +1 -0
  35. package/dist/drivers/atk/hid.d.ts +163 -0
  36. package/dist/drivers/atk/hid.d.ts.map +1 -0
  37. package/dist/drivers/atk/hid.js +1368 -0
  38. package/dist/drivers/atk/hid.js.map +1 -0
  39. package/dist/drivers/atk/products.d.ts +13 -0
  40. package/dist/drivers/atk/products.d.ts.map +1 -0
  41. package/dist/drivers/atk/products.js +13 -0
  42. package/dist/drivers/atk/products.js.map +1 -0
  43. package/dist/drivers/attackshark/dpi.d.ts +41 -0
  44. package/dist/drivers/attackshark/dpi.d.ts.map +1 -0
  45. package/dist/drivers/attackshark/dpi.js +215 -0
  46. package/dist/drivers/attackshark/dpi.js.map +1 -0
  47. package/dist/drivers/attackshark/hid.d.ts +124 -0
  48. package/dist/drivers/attackshark/hid.d.ts.map +1 -0
  49. package/dist/drivers/attackshark/hid.js +728 -0
  50. package/dist/drivers/attackshark/hid.js.map +1 -0
  51. package/dist/drivers/corsair/hid.d.ts +70 -0
  52. package/dist/drivers/corsair/hid.d.ts.map +1 -0
  53. package/dist/drivers/corsair/hid.js +414 -0
  54. package/dist/drivers/corsair/hid.js.map +1 -0
  55. package/dist/drivers/dareu/hid.d.ts +59 -0
  56. package/dist/drivers/dareu/hid.d.ts.map +1 -0
  57. package/dist/drivers/dareu/hid.js +478 -0
  58. package/dist/drivers/dareu/hid.js.map +1 -0
  59. package/dist/drivers/endgame/egg-op1-hid.d.ts +107 -0
  60. package/dist/drivers/endgame/egg-op1-hid.d.ts.map +1 -0
  61. package/dist/drivers/endgame/egg-op1-hid.js +605 -0
  62. package/dist/drivers/endgame/egg-op1-hid.js.map +1 -0
  63. package/dist/drivers/endgame/egg-we-control.d.ts +42 -0
  64. package/dist/drivers/endgame/egg-we-control.d.ts.map +1 -0
  65. package/dist/drivers/endgame/egg-we-control.js +87 -0
  66. package/dist/drivers/endgame/egg-we-control.js.map +1 -0
  67. package/dist/drivers/endgame/egg-we-hid.d.ts +58 -0
  68. package/dist/drivers/endgame/egg-we-hid.d.ts.map +1 -0
  69. package/dist/drivers/endgame/egg-we-hid.js +514 -0
  70. package/dist/drivers/endgame/egg-we-hid.js.map +1 -0
  71. package/dist/drivers/fantech/hid.d.ts +106 -0
  72. package/dist/drivers/fantech/hid.d.ts.map +1 -0
  73. package/dist/drivers/fantech/hid.js +295 -0
  74. package/dist/drivers/fantech/hid.js.map +1 -0
  75. package/dist/drivers/finalmouse/hid.d.ts +31 -0
  76. package/dist/drivers/finalmouse/hid.d.ts.map +1 -0
  77. package/dist/drivers/finalmouse/hid.js +181 -0
  78. package/dist/drivers/finalmouse/hid.js.map +1 -0
  79. package/dist/drivers/gearhub/hid.d.ts +191 -0
  80. package/dist/drivers/gearhub/hid.d.ts.map +1 -0
  81. package/dist/drivers/gearhub/hid.js +542 -0
  82. package/dist/drivers/gearhub/hid.js.map +1 -0
  83. package/dist/drivers/glorious/classic-hid.d.ts +62 -0
  84. package/dist/drivers/glorious/classic-hid.d.ts.map +1 -0
  85. package/dist/drivers/glorious/classic-hid.js +326 -0
  86. package/dist/drivers/glorious/classic-hid.js.map +1 -0
  87. package/dist/drivers/glorious/hid.d.ts +39 -0
  88. package/dist/drivers/glorious/hid.d.ts.map +1 -0
  89. package/dist/drivers/glorious/hid.js +203 -0
  90. package/dist/drivers/glorious/hid.js.map +1 -0
  91. package/dist/drivers/gwolves/hid.d.ts +27 -0
  92. package/dist/drivers/gwolves/hid.d.ts.map +1 -0
  93. package/dist/drivers/gwolves/hid.js +225 -0
  94. package/dist/drivers/gwolves/hid.js.map +1 -0
  95. package/dist/drivers/gwolves/products.d.ts +17 -0
  96. package/dist/drivers/gwolves/products.d.ts.map +1 -0
  97. package/dist/drivers/gwolves/products.js +58 -0
  98. package/dist/drivers/gwolves/products.js.map +1 -0
  99. package/dist/drivers/hyperx/hid.d.ts +59 -0
  100. package/dist/drivers/hyperx/hid.d.ts.map +1 -0
  101. package/dist/drivers/hyperx/hid.js +229 -0
  102. package/dist/drivers/hyperx/hid.js.map +1 -0
  103. package/dist/drivers/incott/hid.d.ts +513 -0
  104. package/dist/drivers/incott/hid.d.ts.map +1 -0
  105. package/dist/drivers/incott/hid.js +1173 -0
  106. package/dist/drivers/incott/hid.js.map +1 -0
  107. package/dist/drivers/index.d.ts +5 -0
  108. package/dist/drivers/index.d.ts.map +1 -0
  109. package/dist/drivers/index.js +5 -0
  110. package/dist/drivers/index.js.map +1 -0
  111. package/dist/drivers/keychron/m6-hid.d.ts +81 -0
  112. package/dist/drivers/keychron/m6-hid.d.ts.map +1 -0
  113. package/dist/drivers/keychron/m6-hid.js +486 -0
  114. package/dist/drivers/keychron/m6-hid.js.map +1 -0
  115. package/dist/drivers/keychron/nape-hid.d.ts +60 -0
  116. package/dist/drivers/keychron/nape-hid.d.ts.map +1 -0
  117. package/dist/drivers/keychron/nape-hid.js +432 -0
  118. package/dist/drivers/keychron/nape-hid.js.map +1 -0
  119. package/dist/drivers/ksnake/hid.d.ts +74 -0
  120. package/dist/drivers/ksnake/hid.d.ts.map +1 -0
  121. package/dist/drivers/ksnake/hid.js +368 -0
  122. package/dist/drivers/ksnake/hid.js.map +1 -0
  123. package/dist/drivers/lamzu/hid.d.ts +58 -0
  124. package/dist/drivers/lamzu/hid.d.ts.map +1 -0
  125. package/dist/drivers/lamzu/hid.js +414 -0
  126. package/dist/drivers/lamzu/hid.js.map +1 -0
  127. package/dist/drivers/lamzu-atlantis/hid.d.ts +148 -0
  128. package/dist/drivers/lamzu-atlantis/hid.d.ts.map +1 -0
  129. package/dist/drivers/lamzu-atlantis/hid.js +587 -0
  130. package/dist/drivers/lamzu-atlantis/hid.js.map +1 -0
  131. package/dist/drivers/logitech/bolt.d.ts +41 -0
  132. package/dist/drivers/logitech/bolt.d.ts.map +1 -0
  133. package/dist/drivers/logitech/bolt.js +105 -0
  134. package/dist/drivers/logitech/bolt.js.map +1 -0
  135. package/dist/drivers/logitech/hidpp.d.ts +525 -0
  136. package/dist/drivers/logitech/hidpp.d.ts.map +1 -0
  137. package/dist/drivers/logitech/hidpp.js +2774 -0
  138. package/dist/drivers/logitech/hidpp.js.map +1 -0
  139. package/dist/drivers/logitech/mode-status.d.ts +53 -0
  140. package/dist/drivers/logitech/mode-status.d.ts.map +1 -0
  141. package/dist/drivers/logitech/mode-status.js +52 -0
  142. package/dist/drivers/logitech/mode-status.js.map +1 -0
  143. package/dist/drivers/logitech/onboard-profiles.d.ts +298 -0
  144. package/dist/drivers/logitech/onboard-profiles.d.ts.map +1 -0
  145. package/dist/drivers/logitech/onboard-profiles.js +965 -0
  146. package/dist/drivers/logitech/onboard-profiles.js.map +1 -0
  147. package/dist/drivers/logitech/rgb-effects.d.ts +20 -0
  148. package/dist/drivers/logitech/rgb-effects.d.ts.map +1 -0
  149. package/dist/drivers/logitech/rgb-effects.js +93 -0
  150. package/dist/drivers/logitech/rgb-effects.js.map +1 -0
  151. package/dist/drivers/mchose/a5-gen1-hid.d.ts +36 -0
  152. package/dist/drivers/mchose/a5-gen1-hid.d.ts.map +1 -0
  153. package/dist/drivers/mchose/a5-gen1-hid.js +219 -0
  154. package/dist/drivers/mchose/a5-gen1-hid.js.map +1 -0
  155. package/dist/drivers/mchose/dock-hid.d.ts +26 -0
  156. package/dist/drivers/mchose/dock-hid.d.ts.map +1 -0
  157. package/dist/drivers/mchose/dock-hid.js +176 -0
  158. package/dist/drivers/mchose/dock-hid.js.map +1 -0
  159. package/dist/drivers/mchose/hid.d.ts +118 -0
  160. package/dist/drivers/mchose/hid.d.ts.map +1 -0
  161. package/dist/drivers/mchose/hid.js +550 -0
  162. package/dist/drivers/mchose/hid.js.map +1 -0
  163. package/dist/drivers/mchose/v3-hid.d.ts +109 -0
  164. package/dist/drivers/mchose/v3-hid.d.ts.map +1 -0
  165. package/dist/drivers/mchose/v3-hid.js +572 -0
  166. package/dist/drivers/mchose/v3-hid.js.map +1 -0
  167. package/dist/drivers/microsoft/hid.d.ts +25 -0
  168. package/dist/drivers/microsoft/hid.d.ts.map +1 -0
  169. package/dist/drivers/microsoft/hid.js +247 -0
  170. package/dist/drivers/microsoft/hid.js.map +1 -0
  171. package/dist/drivers/moddo/hid.d.ts +31 -0
  172. package/dist/drivers/moddo/hid.d.ts.map +1 -0
  173. package/dist/drivers/moddo/hid.js +154 -0
  174. package/dist/drivers/moddo/hid.js.map +1 -0
  175. package/dist/drivers/mouse-types.d.ts +388 -0
  176. package/dist/drivers/mouse-types.d.ts.map +1 -0
  177. package/dist/drivers/mouse-types.js +2 -0
  178. package/dist/drivers/mouse-types.js.map +1 -0
  179. package/dist/drivers/ninjutso/hid.d.ts +62 -0
  180. package/dist/drivers/ninjutso/hid.d.ts.map +1 -0
  181. package/dist/drivers/ninjutso/hid.js +680 -0
  182. package/dist/drivers/ninjutso/hid.js.map +1 -0
  183. package/dist/drivers/orbital/hid.d.ts +24 -0
  184. package/dist/drivers/orbital/hid.d.ts.map +1 -0
  185. package/dist/drivers/orbital/hid.js +85 -0
  186. package/dist/drivers/orbital/hid.js.map +1 -0
  187. package/dist/drivers/orbital/host-protocol.d.ts +59 -0
  188. package/dist/drivers/orbital/host-protocol.d.ts.map +1 -0
  189. package/dist/drivers/orbital/host-protocol.js +884 -0
  190. package/dist/drivers/orbital/host-protocol.js.map +1 -0
  191. package/dist/drivers/pulsar/pulsar-hid.d.ts +63 -0
  192. package/dist/drivers/pulsar/pulsar-hid.d.ts.map +1 -0
  193. package/dist/drivers/pulsar/pulsar-hid.js +381 -0
  194. package/dist/drivers/pulsar/pulsar-hid.js.map +1 -0
  195. package/dist/drivers/pulsar/pulsar-pro-hid.d.ts +46 -0
  196. package/dist/drivers/pulsar/pulsar-pro-hid.d.ts.map +1 -0
  197. package/dist/drivers/pulsar/pulsar-pro-hid.js +343 -0
  198. package/dist/drivers/pulsar/pulsar-pro-hid.js.map +1 -0
  199. package/dist/drivers/pulsar/pulsar-xs1-hid.d.ts +40 -0
  200. package/dist/drivers/pulsar/pulsar-xs1-hid.d.ts.map +1 -0
  201. package/dist/drivers/pulsar/pulsar-xs1-hid.js +251 -0
  202. package/dist/drivers/pulsar/pulsar-xs1-hid.js.map +1 -0
  203. package/dist/drivers/rawm/hid.d.ts +29 -0
  204. package/dist/drivers/rawm/hid.d.ts.map +1 -0
  205. package/dist/drivers/rawm/hid.js +210 -0
  206. package/dist/drivers/rawm/hid.js.map +1 -0
  207. package/dist/drivers/razer/cobra-hid.d.ts +63 -0
  208. package/dist/drivers/razer/cobra-hid.d.ts.map +1 -0
  209. package/dist/drivers/razer/cobra-hid.js +282 -0
  210. package/dist/drivers/razer/cobra-hid.js.map +1 -0
  211. package/dist/drivers/razer/hid-open.d.ts +13 -0
  212. package/dist/drivers/razer/hid-open.d.ts.map +1 -0
  213. package/dist/drivers/razer/hid-open.js +29 -0
  214. package/dist/drivers/razer/hid-open.js.map +1 -0
  215. package/dist/drivers/razer/hid.d.ts +231 -0
  216. package/dist/drivers/razer/hid.d.ts.map +1 -0
  217. package/dist/drivers/razer/hid.js +772 -0
  218. package/dist/drivers/razer/hid.js.map +1 -0
  219. package/dist/drivers/razer/viper-hid.d.ts +33 -0
  220. package/dist/drivers/razer/viper-hid.d.ts.map +1 -0
  221. package/dist/drivers/razer/viper-hid.js +177 -0
  222. package/dist/drivers/razer/viper-hid.js.map +1 -0
  223. package/dist/drivers/razer/viper-mini-hid.d.ts +58 -0
  224. package/dist/drivers/razer/viper-mini-hid.d.ts.map +1 -0
  225. package/dist/drivers/razer/viper-mini-hid.js +273 -0
  226. package/dist/drivers/razer/viper-mini-hid.js.map +1 -0
  227. package/dist/drivers/razer/viper-v4-pro-hid.d.ts +26 -0
  228. package/dist/drivers/razer/viper-v4-pro-hid.d.ts.map +1 -0
  229. package/dist/drivers/razer/viper-v4-pro-hid.js +154 -0
  230. package/dist/drivers/razer/viper-v4-pro-hid.js.map +1 -0
  231. package/dist/drivers/registry.d.ts +70 -0
  232. package/dist/drivers/registry.d.ts.map +1 -0
  233. package/dist/drivers/registry.js +146 -0
  234. package/dist/drivers/registry.js.map +1 -0
  235. package/dist/drivers/steelseries/aerox3-hid.d.ts +53 -0
  236. package/dist/drivers/steelseries/aerox3-hid.d.ts.map +1 -0
  237. package/dist/drivers/steelseries/aerox3-hid.js +172 -0
  238. package/dist/drivers/steelseries/aerox3-hid.js.map +1 -0
  239. package/dist/drivers/steelseries/aerox5-hid.d.ts +54 -0
  240. package/dist/drivers/steelseries/aerox5-hid.d.ts.map +1 -0
  241. package/dist/drivers/steelseries/aerox5-hid.js +173 -0
  242. package/dist/drivers/steelseries/aerox5-hid.js.map +1 -0
  243. package/dist/drivers/steelseries/aerox5-wireless-hid.d.ts +69 -0
  244. package/dist/drivers/steelseries/aerox5-wireless-hid.d.ts.map +1 -0
  245. package/dist/drivers/steelseries/aerox5-wireless-hid.js +234 -0
  246. package/dist/drivers/steelseries/aerox5-wireless-hid.js.map +1 -0
  247. package/dist/drivers/steelseries/aerox9-wireless-hid.d.ts +70 -0
  248. package/dist/drivers/steelseries/aerox9-wireless-hid.d.ts.map +1 -0
  249. package/dist/drivers/steelseries/aerox9-wireless-hid.js +227 -0
  250. package/dist/drivers/steelseries/aerox9-wireless-hid.js.map +1 -0
  251. package/dist/drivers/steelseries/hid.d.ts +48 -0
  252. package/dist/drivers/steelseries/hid.d.ts.map +1 -0
  253. package/dist/drivers/steelseries/hid.js +157 -0
  254. package/dist/drivers/steelseries/hid.js.map +1 -0
  255. package/dist/drivers/steelseries/prime-mini-wireless-hid.d.ts +62 -0
  256. package/dist/drivers/steelseries/prime-mini-wireless-hid.d.ts.map +1 -0
  257. package/dist/drivers/steelseries/prime-mini-wireless-hid.js +215 -0
  258. package/dist/drivers/steelseries/prime-mini-wireless-hid.js.map +1 -0
  259. package/dist/drivers/steelseries/prime-plus-hid.d.ts +51 -0
  260. package/dist/drivers/steelseries/prime-plus-hid.d.ts.map +1 -0
  261. package/dist/drivers/steelseries/prime-plus-hid.js +150 -0
  262. package/dist/drivers/steelseries/prime-plus-hid.js.map +1 -0
  263. package/dist/drivers/steelseries/rival3-wireless-hid.d.ts +61 -0
  264. package/dist/drivers/steelseries/rival3-wireless-hid.d.ts.map +1 -0
  265. package/dist/drivers/steelseries/rival3-wireless-hid.js +185 -0
  266. package/dist/drivers/steelseries/rival3-wireless-hid.js.map +1 -0
  267. package/dist/drivers/steelseries/rival310-hid.d.ts +59 -0
  268. package/dist/drivers/steelseries/rival310-hid.d.ts.map +1 -0
  269. package/dist/drivers/steelseries/rival310-hid.js +182 -0
  270. package/dist/drivers/steelseries/rival310-hid.js.map +1 -0
  271. package/dist/drivers/steelseries/rival650-hid.d.ts +68 -0
  272. package/dist/drivers/steelseries/rival650-hid.d.ts.map +1 -0
  273. package/dist/drivers/steelseries/rival650-hid.js +209 -0
  274. package/dist/drivers/steelseries/rival650-hid.js.map +1 -0
  275. package/dist/drivers/steelseries/sensei-ten-hid.d.ts +62 -0
  276. package/dist/drivers/steelseries/sensei-ten-hid.d.ts.map +1 -0
  277. package/dist/drivers/steelseries/sensei-ten-hid.js +186 -0
  278. package/dist/drivers/steelseries/sensei-ten-hid.js.map +1 -0
  279. package/dist/drivers/teevolution/hid.d.ts +82 -0
  280. package/dist/drivers/teevolution/hid.d.ts.map +1 -0
  281. package/dist/drivers/teevolution/hid.js +607 -0
  282. package/dist/drivers/teevolution/hid.js.map +1 -0
  283. package/dist/drivers/vendors.d.ts +254 -0
  284. package/dist/drivers/vendors.d.ts.map +1 -0
  285. package/dist/drivers/vendors.js +587 -0
  286. package/dist/drivers/vendors.js.map +1 -0
  287. package/dist/drivers/vgn/hid.d.ts +33 -0
  288. package/dist/drivers/vgn/hid.d.ts.map +1 -0
  289. package/dist/drivers/vgn/hid.js +213 -0
  290. package/dist/drivers/vgn/hid.js.map +1 -0
  291. package/dist/drivers/wallhack/keyboard-hid.d.ts +28 -0
  292. package/dist/drivers/wallhack/keyboard-hid.d.ts.map +1 -0
  293. package/dist/drivers/wallhack/keyboard-hid.js +80 -0
  294. package/dist/drivers/wallhack/keyboard-hid.js.map +1 -0
  295. package/dist/drivers/wallhack/mouse-hid.d.ts +45 -0
  296. package/dist/drivers/wallhack/mouse-hid.d.ts.map +1 -0
  297. package/dist/drivers/wallhack/mouse-hid.js +288 -0
  298. package/dist/drivers/wallhack/mouse-hid.js.map +1 -0
  299. package/dist/drivers/webhid.d.ts +59 -0
  300. package/dist/drivers/webhid.d.ts.map +1 -0
  301. package/dist/drivers/webhid.js +2 -0
  302. package/dist/drivers/webhid.js.map +1 -0
  303. package/dist/drivers/wlmouse/hid.d.ts +81 -0
  304. package/dist/drivers/wlmouse/hid.d.ts.map +1 -0
  305. package/dist/drivers/wlmouse/hid.js +576 -0
  306. package/dist/drivers/wlmouse/hid.js.map +1 -0
  307. package/dist/drivers/wooting/hid.d.ts +86 -0
  308. package/dist/drivers/wooting/hid.d.ts.map +1 -0
  309. package/dist/drivers/wooting/hid.js +320 -0
  310. package/dist/drivers/wooting/hid.js.map +1 -0
  311. package/dist/drivers/zaunkoenig/hid.d.ts +31 -0
  312. package/dist/drivers/zaunkoenig/hid.d.ts.map +1 -0
  313. package/dist/drivers/zaunkoenig/hid.js +162 -0
  314. package/dist/drivers/zaunkoenig/hid.js.map +1 -0
  315. package/dist/endgame-gear/op1.d.ts +165 -0
  316. package/dist/endgame-gear/op1.d.ts.map +1 -0
  317. package/dist/endgame-gear/op1.js +384 -0
  318. package/dist/endgame-gear/op1.js.map +1 -0
  319. package/dist/endgame-gear/wireless.d.ts +93 -0
  320. package/dist/endgame-gear/wireless.d.ts.map +1 -0
  321. package/dist/endgame-gear/wireless.js +242 -0
  322. package/dist/endgame-gear/wireless.js.map +1 -0
  323. package/dist/fantech/index.d.ts +9 -0
  324. package/dist/fantech/index.d.ts.map +1 -0
  325. package/dist/fantech/index.js +11 -0
  326. package/dist/fantech/index.js.map +1 -0
  327. package/dist/finalmouse/index.d.ts +41 -0
  328. package/dist/finalmouse/index.d.ts.map +1 -0
  329. package/dist/finalmouse/index.js +106 -0
  330. package/dist/finalmouse/index.js.map +1 -0
  331. package/dist/gearhub/index.d.ts +210 -0
  332. package/dist/gearhub/index.d.ts.map +1 -0
  333. package/dist/gearhub/index.js +282 -0
  334. package/dist/gearhub/index.js.map +1 -0
  335. package/dist/glorious/index.d.ts +89 -0
  336. package/dist/glorious/index.d.ts.map +1 -0
  337. package/dist/glorious/index.js +236 -0
  338. package/dist/glorious/index.js.map +1 -0
  339. package/dist/glorious-classic/index.d.ts +103 -0
  340. package/dist/glorious-classic/index.d.ts.map +1 -0
  341. package/dist/glorious-classic/index.js +304 -0
  342. package/dist/glorious-classic/index.js.map +1 -0
  343. package/dist/gwolves/index.d.ts +82 -0
  344. package/dist/gwolves/index.d.ts.map +1 -0
  345. package/dist/gwolves/index.js +197 -0
  346. package/dist/gwolves/index.js.map +1 -0
  347. package/dist/hyperx/index.d.ts +181 -0
  348. package/dist/hyperx/index.d.ts.map +1 -0
  349. package/dist/hyperx/index.js +303 -0
  350. package/dist/hyperx/index.js.map +1 -0
  351. package/dist/incott/index.d.ts +1067 -0
  352. package/dist/incott/index.d.ts.map +1 -0
  353. package/dist/incott/index.js +1482 -0
  354. package/dist/incott/index.js.map +1 -0
  355. package/dist/index.d.ts +30 -0
  356. package/dist/index.d.ts.map +1 -0
  357. package/dist/index.js +30 -0
  358. package/dist/index.js.map +1 -0
  359. package/dist/keychron/index.d.ts +194 -0
  360. package/dist/keychron/index.d.ts.map +1 -0
  361. package/dist/keychron/index.js +341 -0
  362. package/dist/keychron/index.js.map +1 -0
  363. package/dist/ksnake/index.d.ts +157 -0
  364. package/dist/ksnake/index.d.ts.map +1 -0
  365. package/dist/ksnake/index.js +314 -0
  366. package/dist/ksnake/index.js.map +1 -0
  367. package/dist/lamzu/atlantis.d.ts +237 -0
  368. package/dist/lamzu/atlantis.d.ts.map +1 -0
  369. package/dist/lamzu/atlantis.js +263 -0
  370. package/dist/lamzu/atlantis.js.map +1 -0
  371. package/dist/lamzu/index.d.ts +60 -0
  372. package/dist/lamzu/index.d.ts.map +1 -0
  373. package/dist/lamzu/index.js +86 -0
  374. package/dist/lamzu/index.js.map +1 -0
  375. package/dist/logitech/controls.d.ts +138 -0
  376. package/dist/logitech/controls.d.ts.map +1 -0
  377. package/dist/logitech/controls.js +184 -0
  378. package/dist/logitech/controls.js.map +1 -0
  379. package/dist/logitech/friendly-name.d.ts +50 -0
  380. package/dist/logitech/friendly-name.d.ts.map +1 -0
  381. package/dist/logitech/friendly-name.js +74 -0
  382. package/dist/logitech/friendly-name.js.map +1 -0
  383. package/dist/logitech/haptics.d.ts +97 -0
  384. package/dist/logitech/haptics.d.ts.map +1 -0
  385. package/dist/logitech/haptics.js +116 -0
  386. package/dist/logitech/haptics.js.map +1 -0
  387. package/dist/logitech/hosts.d.ts +55 -0
  388. package/dist/logitech/hosts.d.ts.map +1 -0
  389. package/dist/logitech/hosts.js +80 -0
  390. package/dist/logitech/hosts.js.map +1 -0
  391. package/dist/logitech/index.d.ts +127 -0
  392. package/dist/logitech/index.d.ts.map +1 -0
  393. package/dist/logitech/index.js +233 -0
  394. package/dist/logitech/index.js.map +1 -0
  395. package/dist/logitech/wheel.d.ts +117 -0
  396. package/dist/logitech/wheel.d.ts.map +1 -0
  397. package/dist/logitech/wheel.js +133 -0
  398. package/dist/logitech/wheel.js.map +1 -0
  399. package/dist/mchose/a5-gen1.d.ts +38 -0
  400. package/dist/mchose/a5-gen1.d.ts.map +1 -0
  401. package/dist/mchose/a5-gen1.js +60 -0
  402. package/dist/mchose/a5-gen1.js.map +1 -0
  403. package/dist/mchose/buttons.d.ts +66 -0
  404. package/dist/mchose/buttons.d.ts.map +1 -0
  405. package/dist/mchose/buttons.js +184 -0
  406. package/dist/mchose/buttons.js.map +1 -0
  407. package/dist/mchose/dock.d.ts +77 -0
  408. package/dist/mchose/dock.d.ts.map +1 -0
  409. package/dist/mchose/dock.js +133 -0
  410. package/dist/mchose/dock.js.map +1 -0
  411. package/dist/mchose/index.d.ts +299 -0
  412. package/dist/mchose/index.d.ts.map +1 -0
  413. package/dist/mchose/index.js +429 -0
  414. package/dist/mchose/index.js.map +1 -0
  415. package/dist/mchose/v3-buttons.d.ts +64 -0
  416. package/dist/mchose/v3-buttons.d.ts.map +1 -0
  417. package/dist/mchose/v3-buttons.js +258 -0
  418. package/dist/mchose/v3-buttons.js.map +1 -0
  419. package/dist/mchose/v3.d.ts +380 -0
  420. package/dist/mchose/v3.d.ts.map +1 -0
  421. package/dist/mchose/v3.js +608 -0
  422. package/dist/mchose/v3.js.map +1 -0
  423. package/dist/microsoft/index.d.ts +19 -0
  424. package/dist/microsoft/index.d.ts.map +1 -0
  425. package/dist/microsoft/index.js +22 -0
  426. package/dist/microsoft/index.js.map +1 -0
  427. package/dist/moddo/index.d.ts +72 -0
  428. package/dist/moddo/index.d.ts.map +1 -0
  429. package/dist/moddo/index.js +147 -0
  430. package/dist/moddo/index.js.map +1 -0
  431. package/dist/ninjutso/index.d.ts +74 -0
  432. package/dist/ninjutso/index.d.ts.map +1 -0
  433. package/dist/ninjutso/index.js +133 -0
  434. package/dist/ninjutso/index.js.map +1 -0
  435. package/dist/orbital/index.d.ts +14 -0
  436. package/dist/orbital/index.d.ts.map +1 -0
  437. package/dist/orbital/index.js +19 -0
  438. package/dist/orbital/index.js.map +1 -0
  439. package/dist/pulsar/index.d.ts +81 -0
  440. package/dist/pulsar/index.d.ts.map +1 -0
  441. package/dist/pulsar/index.js +185 -0
  442. package/dist/pulsar/index.js.map +1 -0
  443. package/dist/rawm/index.d.ts +55 -0
  444. package/dist/rawm/index.d.ts.map +1 -0
  445. package/dist/rawm/index.js +229 -0
  446. package/dist/rawm/index.js.map +1 -0
  447. package/dist/razer/codec.d.ts +504 -0
  448. package/dist/razer/codec.d.ts.map +1 -0
  449. package/dist/razer/codec.js +648 -0
  450. package/dist/razer/codec.js.map +1 -0
  451. package/dist/razer/devices.d.ts +156 -0
  452. package/dist/razer/devices.d.ts.map +1 -0
  453. package/dist/razer/devices.js +540 -0
  454. package/dist/razer/devices.js.map +1 -0
  455. package/dist/razer/index.d.ts +2 -0
  456. package/dist/razer/index.d.ts.map +1 -0
  457. package/dist/razer/index.js +2 -0
  458. package/dist/razer/index.js.map +1 -0
  459. package/dist/razer/v4.d.ts +19 -0
  460. package/dist/razer/v4.d.ts.map +1 -0
  461. package/dist/razer/v4.js +51 -0
  462. package/dist/razer/v4.js.map +1 -0
  463. package/dist/steelseries/aerox3.d.ts +236 -0
  464. package/dist/steelseries/aerox3.d.ts.map +1 -0
  465. package/dist/steelseries/aerox3.js +311 -0
  466. package/dist/steelseries/aerox3.js.map +1 -0
  467. package/dist/steelseries/aerox5-wireless.d.ts +300 -0
  468. package/dist/steelseries/aerox5-wireless.d.ts.map +1 -0
  469. package/dist/steelseries/aerox5-wireless.js +389 -0
  470. package/dist/steelseries/aerox5-wireless.js.map +1 -0
  471. package/dist/steelseries/aerox5.d.ts +228 -0
  472. package/dist/steelseries/aerox5.d.ts.map +1 -0
  473. package/dist/steelseries/aerox5.js +294 -0
  474. package/dist/steelseries/aerox5.js.map +1 -0
  475. package/dist/steelseries/aerox9-wireless.d.ts +213 -0
  476. package/dist/steelseries/aerox9-wireless.d.ts.map +1 -0
  477. package/dist/steelseries/aerox9-wireless.js +305 -0
  478. package/dist/steelseries/aerox9-wireless.js.map +1 -0
  479. package/dist/steelseries/devices.d.ts +82 -0
  480. package/dist/steelseries/devices.d.ts.map +1 -0
  481. package/dist/steelseries/devices.js +310 -0
  482. package/dist/steelseries/devices.js.map +1 -0
  483. package/dist/steelseries/index.d.ts +13 -0
  484. package/dist/steelseries/index.d.ts.map +1 -0
  485. package/dist/steelseries/index.js +13 -0
  486. package/dist/steelseries/index.js.map +1 -0
  487. package/dist/steelseries/prime-mini-wireless.d.ts +253 -0
  488. package/dist/steelseries/prime-mini-wireless.d.ts.map +1 -0
  489. package/dist/steelseries/prime-mini-wireless.js +351 -0
  490. package/dist/steelseries/prime-mini-wireless.js.map +1 -0
  491. package/dist/steelseries/prime-plus.d.ts +179 -0
  492. package/dist/steelseries/prime-plus.d.ts.map +1 -0
  493. package/dist/steelseries/prime-plus.js +275 -0
  494. package/dist/steelseries/prime-plus.js.map +1 -0
  495. package/dist/steelseries/rival3-wireless.d.ts +222 -0
  496. package/dist/steelseries/rival3-wireless.d.ts.map +1 -0
  497. package/dist/steelseries/rival3-wireless.js +308 -0
  498. package/dist/steelseries/rival3-wireless.js.map +1 -0
  499. package/dist/steelseries/rival3.d.ts +99 -0
  500. package/dist/steelseries/rival3.d.ts.map +1 -0
  501. package/dist/steelseries/rival3.js +147 -0
  502. package/dist/steelseries/rival3.js.map +1 -0
  503. package/dist/steelseries/rival310.d.ts +230 -0
  504. package/dist/steelseries/rival310.d.ts.map +1 -0
  505. package/dist/steelseries/rival310.js +322 -0
  506. package/dist/steelseries/rival310.js.map +1 -0
  507. package/dist/steelseries/rival650.d.ts +215 -0
  508. package/dist/steelseries/rival650.d.ts.map +1 -0
  509. package/dist/steelseries/rival650.js +284 -0
  510. package/dist/steelseries/rival650.js.map +1 -0
  511. package/dist/steelseries/sensei-ten.d.ts +283 -0
  512. package/dist/steelseries/sensei-ten.d.ts.map +1 -0
  513. package/dist/steelseries/sensei-ten.js +389 -0
  514. package/dist/steelseries/sensei-ten.js.map +1 -0
  515. package/dist/teevolution/index.d.ts +211 -0
  516. package/dist/teevolution/index.d.ts.map +1 -0
  517. package/dist/teevolution/index.js +458 -0
  518. package/dist/teevolution/index.js.map +1 -0
  519. package/dist/valkyrie/index.d.ts +19 -0
  520. package/dist/valkyrie/index.d.ts.map +1 -0
  521. package/dist/valkyrie/index.js +43 -0
  522. package/dist/valkyrie/index.js.map +1 -0
  523. package/dist/valkyrie/settings.d.ts +28 -0
  524. package/dist/valkyrie/settings.d.ts.map +1 -0
  525. package/dist/valkyrie/settings.js +84 -0
  526. package/dist/valkyrie/settings.js.map +1 -0
  527. package/dist/vgn/index.d.ts +59 -0
  528. package/dist/vgn/index.d.ts.map +1 -0
  529. package/dist/vgn/index.js +165 -0
  530. package/dist/vgn/index.js.map +1 -0
  531. package/dist/wallhack/index.d.ts +165 -0
  532. package/dist/wallhack/index.d.ts.map +1 -0
  533. package/dist/wallhack/index.js +226 -0
  534. package/dist/wallhack/index.js.map +1 -0
  535. package/dist/wlmouse/index.d.ts +4 -0
  536. package/dist/wlmouse/index.d.ts.map +1 -0
  537. package/dist/wlmouse/index.js +7 -0
  538. package/dist/wlmouse/index.js.map +1 -0
  539. package/dist/wooting/index.d.ts +225 -0
  540. package/dist/wooting/index.d.ts.map +1 -0
  541. package/dist/wooting/index.js +296 -0
  542. package/dist/wooting/index.js.map +1 -0
  543. package/dist/zaunkoenig/index.d.ts +49 -0
  544. package/dist/zaunkoenig/index.d.ts.map +1 -0
  545. package/dist/zaunkoenig/index.js +127 -0
  546. package/dist/zaunkoenig/index.js.map +1 -0
  547. package/package.json +193 -0
@@ -0,0 +1,172 @@
1
+ import { AEROX3_POLLING_RATES, AEROX3_REPORT_ID, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, steelseriesAerox3DpiOptions, steelseriesAerox3EncodeButtonsMapping, steelseriesAerox3EncodeDefaultLighting, steelseriesAerox3EncodeDpiPresets, steelseriesAerox3EncodeLedBrightness, steelseriesAerox3EncodePollingRate, steelseriesAerox3EncodeRainbowEffect, steelseriesAerox3EncodeReactiveColor, steelseriesAerox3EncodeZoneColor, steelseriesAerox3SaveCommand, } from "@openmouse/protocol/steelseries";
2
+ /** rivalcfg's `command_approve_delay`, shared across every SteelSeries family. */
3
+ const COMMAND_DELAY_MS = 50;
4
+ /** rivalcfg profile defaults (`aerox3.py`), shown only until this session writes a value. */
5
+ const DEFAULT_DPI = 800;
6
+ const DEFAULT_POLLING_HZ = 1000;
7
+ /**
8
+ * SteelSeries Aerox 3 WebHID control (`1038:1836`).
9
+ *
10
+ * Unlike Rival 3 Gen 1, the Aerox 3 has **no readable value at all** — no
11
+ * firmware query exists in `aerox3.py`, so there is nothing to probe the
12
+ * device with. `readStatus` therefore treats a successful `open()` as the
13
+ * only available connectivity signal and reports the session's last-written
14
+ * values (or rivalcfg's documented defaults before any write) with
15
+ * `valuesVerified: false`, same honesty policy as Rival 3 Gen 1 but with an
16
+ * even smaller readable surface. Every setter follows its write with the
17
+ * save command so the change persists in the mouse's onboard memory,
18
+ * mirroring rivalcfg's CLI default.
19
+ *
20
+ * The config channel is hidapi interface 3, per `aerox3.py`'s `"endpoint": 3`
21
+ * model entry; its WebHID collection shape has not been captured yet, so the
22
+ * picker offers every interface.
23
+ */
24
+ export class SteelSeriesAerox3HidClient {
25
+ device;
26
+ queue = Promise.resolve();
27
+ lastWritten = {
28
+ dpi: null,
29
+ pollingRateHz: null,
30
+ };
31
+ constructor(device) {
32
+ this.device = device;
33
+ }
34
+ static isSupported(device) {
35
+ if (device.vendorId !== STEELSERIES_VENDOR_ID)
36
+ return false;
37
+ const product = STEELSERIES_PRODUCTS.get(device.productId);
38
+ return product?.family === "aerox3";
39
+ }
40
+ get pollIntervalMs() { return 30_000; }
41
+ get supportedPollingRates() { return [...AEROX3_POLLING_RATES]; }
42
+ getDpiOptions() { return steelseriesAerox3DpiOptions(); }
43
+ async open() {
44
+ if (!this.device.opened)
45
+ await this.device.open();
46
+ }
47
+ async close() {
48
+ if (this.device.opened)
49
+ await this.device.close();
50
+ }
51
+ async readStatus() {
52
+ return await this.run(async () => {
53
+ await this.open();
54
+ const name = this.device.productName?.trim() || "SteelSeries Aerox 3";
55
+ return {
56
+ brand: "SteelSeries",
57
+ name,
58
+ ui: {
59
+ family: "steelseries-aerox3",
60
+ settingsReady: true,
61
+ valuesVerified: false,
62
+ hideUnsupportedPollingRates: true,
63
+ hideProcessingCard: true,
64
+ pollingNote: "The Aerox 3 cannot report its current settings; values shown are the last written by this app, or assumed defaults.",
65
+ defaultDisplayName: "SteelSeries Aerox 3",
66
+ },
67
+ batteryPercent: null,
68
+ batteryState: "Unknown",
69
+ dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
70
+ pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
71
+ supportedPollingRates: this.supportedPollingRates,
72
+ activeProfile: null,
73
+ connectionType: "Wired",
74
+ liftOffDistance: null,
75
+ firmware: [],
76
+ };
77
+ });
78
+ }
79
+ /**
80
+ * Replaces the mouse's DPI preset table with a single preset. The device
81
+ * is write-only, so the existing presets cannot be read and preserved —
82
+ * record them before testing.
83
+ */
84
+ async setDpi(dpi) {
85
+ const report = steelseriesAerox3EncodeDpiPresets([dpi], 0);
86
+ await this.run(async () => {
87
+ await this.open();
88
+ await this.write(report);
89
+ await this.delay(COMMAND_DELAY_MS);
90
+ await this.write(steelseriesAerox3SaveCommand());
91
+ this.lastWritten.dpi = dpi;
92
+ });
93
+ return dpi;
94
+ }
95
+ async setPollingRate(pollingRateHz) {
96
+ const report = steelseriesAerox3EncodePollingRate(pollingRateHz);
97
+ await this.run(async () => {
98
+ await this.open();
99
+ await this.write(report);
100
+ await this.delay(COMMAND_DELAY_MS);
101
+ await this.write(steelseriesAerox3SaveCommand());
102
+ this.lastWritten.pollingRateHz = pollingRateHz;
103
+ });
104
+ return pollingRateHz;
105
+ }
106
+ async setZoneColor(zone, r, g, b) {
107
+ const report = steelseriesAerox3EncodeZoneColor(zone, r, g, b);
108
+ await this.run(async () => {
109
+ await this.open();
110
+ await this.write(report);
111
+ await this.delay(COMMAND_DELAY_MS);
112
+ await this.write(steelseriesAerox3SaveCommand());
113
+ });
114
+ }
115
+ async setReactiveColor(color) {
116
+ const report = steelseriesAerox3EncodeReactiveColor(color);
117
+ await this.run(async () => {
118
+ await this.open();
119
+ await this.write(report);
120
+ await this.delay(COMMAND_DELAY_MS);
121
+ await this.write(steelseriesAerox3SaveCommand());
122
+ });
123
+ }
124
+ async setLedBrightness(percent) {
125
+ const report = steelseriesAerox3EncodeLedBrightness(percent);
126
+ await this.run(async () => {
127
+ await this.open();
128
+ await this.write(report);
129
+ await this.delay(COMMAND_DELAY_MS);
130
+ await this.write(steelseriesAerox3SaveCommand());
131
+ });
132
+ }
133
+ async setRainbowEffect(zones) {
134
+ const report = steelseriesAerox3EncodeRainbowEffect(zones);
135
+ await this.run(async () => {
136
+ await this.open();
137
+ await this.write(report);
138
+ await this.delay(COMMAND_DELAY_MS);
139
+ await this.write(steelseriesAerox3SaveCommand());
140
+ });
141
+ }
142
+ async setDefaultLighting(mode) {
143
+ const report = steelseriesAerox3EncodeDefaultLighting(mode);
144
+ await this.run(async () => {
145
+ await this.open();
146
+ await this.write(report);
147
+ await this.delay(COMMAND_DELAY_MS);
148
+ await this.write(steelseriesAerox3SaveCommand());
149
+ });
150
+ }
151
+ async setButtonsMapping(mapping) {
152
+ const report = steelseriesAerox3EncodeButtonsMapping(mapping);
153
+ await this.run(async () => {
154
+ await this.open();
155
+ await this.write(report);
156
+ await this.delay(COMMAND_DELAY_MS);
157
+ await this.write(steelseriesAerox3SaveCommand());
158
+ });
159
+ }
160
+ async write(payload) {
161
+ await this.device.sendReport(AEROX3_REPORT_ID, payload.buffer);
162
+ }
163
+ delay(milliseconds) {
164
+ return new Promise((resolve) => setTimeout(resolve, milliseconds));
165
+ }
166
+ async run(operation) {
167
+ const result = this.queue.then(operation, operation);
168
+ this.queue = result.then(() => undefined, () => undefined);
169
+ return await result;
170
+ }
171
+ }
172
+ //# sourceMappingURL=aerox3-hid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aerox3-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox3-hid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { MouseStatus } from "../mouse-types.js";
2
+ import { type Aerox5ButtonAction, type Aerox5ButtonName, type Aerox5DefaultLighting, type Aerox5RainbowZones, type Aerox5Zone } from "@openmouse/protocol/steelseries";
3
+ /**
4
+ * SteelSeries Aerox 5 WebHID control (`1038:1850`, wired-only — see
5
+ * `SteelSeriesAerox5WirelessHidClient` for the separately-sold Aerox 5
6
+ * Wireless, a different command layout entirely).
7
+ *
8
+ * Like Aerox 3, this device has **no readable value at all** — no firmware
9
+ * query exists in `aerox5.py`, so there is nothing to probe the device
10
+ * with. `readStatus` therefore treats a successful `open()` as the only
11
+ * available connectivity signal and reports the session's last-written
12
+ * values (or rivalcfg's documented defaults before any write) with
13
+ * `valuesVerified: false`. Every setter follows its write with the save
14
+ * command so the change persists in the mouse's onboard memory, mirroring
15
+ * rivalcfg's CLI default.
16
+ *
17
+ * The config channel is hidapi interface 3, per `aerox5.py`'s `"endpoint": 3`
18
+ * model entry; its WebHID collection shape has not been captured yet, so the
19
+ * picker offers every interface.
20
+ */
21
+ export declare class SteelSeriesAerox5HidClient {
22
+ readonly device: HIDDevice;
23
+ private queue;
24
+ private lastWritten;
25
+ constructor(device: HIDDevice);
26
+ static isSupported(device: HIDDevice): boolean;
27
+ get pollIntervalMs(): number;
28
+ get supportedPollingRates(): number[];
29
+ getDpiOptions(): number[];
30
+ open(): Promise<void>;
31
+ close(): Promise<void>;
32
+ readStatus(): Promise<MouseStatus>;
33
+ /**
34
+ * Replaces the mouse's DPI preset table with a single preset. The device
35
+ * is write-only, so the existing presets cannot be read and preserved —
36
+ * record them before testing.
37
+ */
38
+ setDpi(dpi: number): Promise<number>;
39
+ setPollingRate(pollingRateHz: number): Promise<number>;
40
+ setZoneColor(zone: Aerox5Zone, r: number, g: number, b: number): Promise<void>;
41
+ setReactiveColor(color: {
42
+ r: number;
43
+ g: number;
44
+ b: number;
45
+ } | null): Promise<void>;
46
+ setLedBrightness(percent: number): Promise<void>;
47
+ setRainbowEffect(zones: Aerox5RainbowZones): Promise<void>;
48
+ setDefaultLighting(mode: Aerox5DefaultLighting): Promise<void>;
49
+ setButtonsMapping(mapping: Partial<Record<Aerox5ButtonName, Aerox5ButtonAction>>): Promise<void>;
50
+ private write;
51
+ private delay;
52
+ private run;
53
+ }
54
+ //# sourceMappingURL=aerox5-hid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aerox5-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox5-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAeL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AAQzC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,WAAW,CAGjB;gBAEU,MAAM,EAAE,SAAS;IAI7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAM9C,IAAI,cAAc,IAAI,MAAM,CAAmB;IAE/C,IAAI,qBAAqB,IAAI,MAAM,EAAE,CAAsC;IAE3E,aAAa,IAAI,MAAM,EAAE;IAEnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA6BxC;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtD,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9E,gBAAgB,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAUxF,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
@@ -0,0 +1,173 @@
1
+ import { AEROX5_POLLING_RATES, AEROX5_REPORT_ID, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, steelseriesAerox5DpiOptions, steelseriesAerox5EncodeButtonsMapping, steelseriesAerox5EncodeDefaultLighting, steelseriesAerox5EncodeDpiPresets, steelseriesAerox5EncodeLedBrightness, steelseriesAerox5EncodePollingRate, steelseriesAerox5EncodeRainbowEffect, steelseriesAerox5EncodeReactiveColor, steelseriesAerox5EncodeZoneColor, steelseriesAerox5SaveCommand, } from "@openmouse/protocol/steelseries";
2
+ /** rivalcfg's `command_approve_delay`, shared across every SteelSeries family. */
3
+ const COMMAND_DELAY_MS = 50;
4
+ /** rivalcfg profile defaults (`aerox5.py`: "400, 800, 1200, 2400, 3200"). */
5
+ const DEFAULT_DPI = 400;
6
+ const DEFAULT_POLLING_HZ = 1000;
7
+ /**
8
+ * SteelSeries Aerox 5 WebHID control (`1038:1850`, wired-only — see
9
+ * `SteelSeriesAerox5WirelessHidClient` for the separately-sold Aerox 5
10
+ * Wireless, a different command layout entirely).
11
+ *
12
+ * Like Aerox 3, this device has **no readable value at all** — no firmware
13
+ * query exists in `aerox5.py`, so there is nothing to probe the device
14
+ * with. `readStatus` therefore treats a successful `open()` as the only
15
+ * available connectivity signal and reports the session's last-written
16
+ * values (or rivalcfg's documented defaults before any write) with
17
+ * `valuesVerified: false`. Every setter follows its write with the save
18
+ * command so the change persists in the mouse's onboard memory, mirroring
19
+ * rivalcfg's CLI default.
20
+ *
21
+ * The config channel is hidapi interface 3, per `aerox5.py`'s `"endpoint": 3`
22
+ * model entry; its WebHID collection shape has not been captured yet, so the
23
+ * picker offers every interface.
24
+ */
25
+ export class SteelSeriesAerox5HidClient {
26
+ device;
27
+ queue = Promise.resolve();
28
+ lastWritten = {
29
+ dpi: null,
30
+ pollingRateHz: null,
31
+ };
32
+ constructor(device) {
33
+ this.device = device;
34
+ }
35
+ static isSupported(device) {
36
+ if (device.vendorId !== STEELSERIES_VENDOR_ID)
37
+ return false;
38
+ const product = STEELSERIES_PRODUCTS.get(device.productId);
39
+ return product?.family === "aerox5";
40
+ }
41
+ get pollIntervalMs() { return 30_000; }
42
+ get supportedPollingRates() { return [...AEROX5_POLLING_RATES]; }
43
+ getDpiOptions() { return steelseriesAerox5DpiOptions(); }
44
+ async open() {
45
+ if (!this.device.opened)
46
+ await this.device.open();
47
+ }
48
+ async close() {
49
+ if (this.device.opened)
50
+ await this.device.close();
51
+ }
52
+ async readStatus() {
53
+ return await this.run(async () => {
54
+ await this.open();
55
+ const name = this.device.productName?.trim() || "SteelSeries Aerox 5";
56
+ return {
57
+ brand: "SteelSeries",
58
+ name,
59
+ ui: {
60
+ family: "steelseries-aerox5",
61
+ settingsReady: true,
62
+ valuesVerified: false,
63
+ hideUnsupportedPollingRates: true,
64
+ hideProcessingCard: true,
65
+ pollingNote: "The Aerox 5 cannot report its current settings; values shown are the last written by this app, or assumed defaults.",
66
+ defaultDisplayName: "SteelSeries Aerox 5",
67
+ },
68
+ batteryPercent: null,
69
+ batteryState: "Unknown",
70
+ dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
71
+ pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
72
+ supportedPollingRates: this.supportedPollingRates,
73
+ activeProfile: null,
74
+ connectionType: "Wired",
75
+ liftOffDistance: null,
76
+ firmware: [],
77
+ };
78
+ });
79
+ }
80
+ /**
81
+ * Replaces the mouse's DPI preset table with a single preset. The device
82
+ * is write-only, so the existing presets cannot be read and preserved —
83
+ * record them before testing.
84
+ */
85
+ async setDpi(dpi) {
86
+ const report = steelseriesAerox5EncodeDpiPresets([dpi], 0);
87
+ await this.run(async () => {
88
+ await this.open();
89
+ await this.write(report);
90
+ await this.delay(COMMAND_DELAY_MS);
91
+ await this.write(steelseriesAerox5SaveCommand());
92
+ this.lastWritten.dpi = dpi;
93
+ });
94
+ return dpi;
95
+ }
96
+ async setPollingRate(pollingRateHz) {
97
+ const report = steelseriesAerox5EncodePollingRate(pollingRateHz);
98
+ await this.run(async () => {
99
+ await this.open();
100
+ await this.write(report);
101
+ await this.delay(COMMAND_DELAY_MS);
102
+ await this.write(steelseriesAerox5SaveCommand());
103
+ this.lastWritten.pollingRateHz = pollingRateHz;
104
+ });
105
+ return pollingRateHz;
106
+ }
107
+ async setZoneColor(zone, r, g, b) {
108
+ const report = steelseriesAerox5EncodeZoneColor(zone, r, g, b);
109
+ await this.run(async () => {
110
+ await this.open();
111
+ await this.write(report);
112
+ await this.delay(COMMAND_DELAY_MS);
113
+ await this.write(steelseriesAerox5SaveCommand());
114
+ });
115
+ }
116
+ async setReactiveColor(color) {
117
+ const report = steelseriesAerox5EncodeReactiveColor(color);
118
+ await this.run(async () => {
119
+ await this.open();
120
+ await this.write(report);
121
+ await this.delay(COMMAND_DELAY_MS);
122
+ await this.write(steelseriesAerox5SaveCommand());
123
+ });
124
+ }
125
+ async setLedBrightness(percent) {
126
+ const report = steelseriesAerox5EncodeLedBrightness(percent);
127
+ await this.run(async () => {
128
+ await this.open();
129
+ await this.write(report);
130
+ await this.delay(COMMAND_DELAY_MS);
131
+ await this.write(steelseriesAerox5SaveCommand());
132
+ });
133
+ }
134
+ async setRainbowEffect(zones) {
135
+ const report = steelseriesAerox5EncodeRainbowEffect(zones);
136
+ await this.run(async () => {
137
+ await this.open();
138
+ await this.write(report);
139
+ await this.delay(COMMAND_DELAY_MS);
140
+ await this.write(steelseriesAerox5SaveCommand());
141
+ });
142
+ }
143
+ async setDefaultLighting(mode) {
144
+ const report = steelseriesAerox5EncodeDefaultLighting(mode);
145
+ await this.run(async () => {
146
+ await this.open();
147
+ await this.write(report);
148
+ await this.delay(COMMAND_DELAY_MS);
149
+ await this.write(steelseriesAerox5SaveCommand());
150
+ });
151
+ }
152
+ async setButtonsMapping(mapping) {
153
+ const report = steelseriesAerox5EncodeButtonsMapping(mapping);
154
+ await this.run(async () => {
155
+ await this.open();
156
+ await this.write(report);
157
+ await this.delay(COMMAND_DELAY_MS);
158
+ await this.write(steelseriesAerox5SaveCommand());
159
+ });
160
+ }
161
+ async write(payload) {
162
+ await this.device.sendReport(AEROX5_REPORT_ID, payload.buffer);
163
+ }
164
+ delay(milliseconds) {
165
+ return new Promise((resolve) => setTimeout(resolve, milliseconds));
166
+ }
167
+ async run(operation) {
168
+ const result = this.queue.then(operation, operation);
169
+ this.queue = result.then(() => undefined, () => undefined);
170
+ return await result;
171
+ }
172
+ }
173
+ //# sourceMappingURL=aerox5-hid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aerox5-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox5-hid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { MouseStatus } from "../mouse-types.js";
2
+ import { type Aerox5WirelessButtonAction, type Aerox5WirelessButtonName, type Aerox5WirelessDefaultLighting, type Aerox5WirelessZone } from "@openmouse/protocol/steelseries";
3
+ /**
4
+ * SteelSeries Aerox 5 Wireless WebHID control.
5
+ *
6
+ * One physical mouse, two transport-dependent product-id groups, one class:
7
+ * the USB-cabled group (`1038:1854`/`185E`/`1862` — "wired mode" in
8
+ * rivalcfg's naming) and the 2.4 GHz dongle group (`1038:1852`/`185C`/`1860`).
9
+ * Both use the exact same command set; only the wireless flag bit
10
+ * (`applyWirelessFlag` in the protocol module) and, per rivalcfg, a longer
11
+ * expected readback differ. `this.wireless` is fixed from the granted
12
+ * device's product id at construction and threaded through every encode
13
+ * call so a client instance never mixes flagged and unflagged commands.
14
+ *
15
+ * DPI presets, polling rate, zone colors, reactive color, sleep/dim timers,
16
+ * rainbow, default lighting, and buttons are write-only — neither rivalcfg
17
+ * file for this device defines a getter for any of them. Battery level
18
+ * **is** readable (`92`/`D2`, 2-byte reply, different response shape from
19
+ * the Rival 3 Wireless's `AA 01`/3-byte reply — see the protocol module's
20
+ * doc comment) and `readStatus` uses it as the connectivity probe, same
21
+ * role the Rival 3 Wireless's battery probe plays.
22
+ *
23
+ * The config channel is hidapi interface 3, per both rivalcfg files'
24
+ * `"endpoint": 3` model entries; its WebHID collection shape has not been
25
+ * captured yet, so the picker offers every interface and the wrong ones
26
+ * fail the battery probe loudly.
27
+ */
28
+ export declare class SteelSeriesAerox5WirelessHidClient {
29
+ readonly device: HIDDevice;
30
+ private readonly wireless;
31
+ private queue;
32
+ private listenerAttached;
33
+ private readonly inputWaiters;
34
+ private lastWritten;
35
+ private readonly onInputReport;
36
+ constructor(device: HIDDevice);
37
+ static isSupported(device: HIDDevice): boolean;
38
+ get pollIntervalMs(): number;
39
+ get supportedPollingRates(): number[];
40
+ getDpiOptions(): number[];
41
+ open(): Promise<void>;
42
+ close(): Promise<void>;
43
+ readStatus(): Promise<MouseStatus>;
44
+ /**
45
+ * Replaces the mouse's DPI preset table with a single preset. The device
46
+ * does not expose a getter for DPI, so the existing presets cannot be read
47
+ * and preserved — record them in SteelSeries GG before testing.
48
+ */
49
+ setDpi(dpi: number): Promise<number>;
50
+ setPollingRate(pollingRateHz: number): Promise<number>;
51
+ setZoneColor(zone: Aerox5WirelessZone, r: number, g: number, b: number): Promise<void>;
52
+ setReactiveColor(color: {
53
+ r: number;
54
+ g: number;
55
+ b: number;
56
+ } | null): Promise<void>;
57
+ setSleepTimer(minutes: number): Promise<void>;
58
+ setDimTimer(seconds: number): Promise<void>;
59
+ setRainbowEffect(): Promise<void>;
60
+ setDefaultLighting(mode: Aerox5WirelessDefaultLighting): Promise<void>;
61
+ setButtonsMapping(mapping: Partial<Record<Aerox5WirelessButtonName, Aerox5WirelessButtonAction>>): Promise<void>;
62
+ /** `92`/`D2` — battery percentage and charging state. Doubles as the connectivity probe. */
63
+ private probeBattery;
64
+ private awaitResponse;
65
+ private write;
66
+ private delay;
67
+ private run;
68
+ }
69
+ //# sourceMappingURL=aerox5-wireless-hid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aerox5-wireless-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox5-wireless-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAmBL,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,kCAAkC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4C;IACzE,OAAO,CAAC,WAAW,CAGjB;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK5B;gBAEU,MAAM,EAAE,SAAS;IAM7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK9C,IAAI,cAAc,IAAI,MAAM,CAAmB;IAE/C,IAAI,qBAAqB,IAAI,MAAM,EAAE,CAA+C;IAEpF,aAAa,IAAI,MAAM,EAAE;IAEnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA+BxC;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtD,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtF,gBAAgB,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC,kBAAkB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtE,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtH,4FAA4F;YAC9E,YAAY;YAUZ,aAAa;YAeb,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}