@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,167 @@
1
+ # Contributing to Mouse Protocol
2
+
3
+ Thank you for helping make gaming mouse hardware more open. This repository
4
+ contains the protocol and WebHID driver layers used by OpenMouse: packet
5
+ layouts, commands, checksums, encoders, decoders, protocol value types, device
6
+ catalogs, discovery filters, and hardware-facing clients.
7
+
8
+ ## Before you start
9
+
10
+ For a new device or a substantial protocol change, open an issue or draft pull
11
+ request early. Include the mouse model, USB vendor and product IDs, connection
12
+ type, and what you have verified on real hardware. Early discussion helps avoid
13
+ duplicating reverse-engineering work and establishes where the transport and
14
+ protocol boundaries belong.
15
+
16
+ Only contribute material that you have permission to share. Do not commit
17
+ vendor binaries, proprietary source code, account information, device serial
18
+ numbers, or captures containing personal data.
19
+
20
+ ## Development setup
21
+
22
+ Requirements:
23
+
24
+ - Node.js 20 or newer
25
+ - npm
26
+
27
+ Clone the repository and run:
28
+
29
+ ```sh
30
+ npm install
31
+ npm run check
32
+ ```
33
+
34
+ `npm run check` performs a strict TypeScript build and verifies the contents of
35
+ the npm package. Generated `dist/` files are not committed.
36
+
37
+ ## What belongs here
38
+
39
+ The codec layer under the brand folders in `src/` must work without knowing how
40
+ bytes are transported. Good examples include:
41
+
42
+ - report IDs, packet sizes, commands, status values, and offsets;
43
+ - checksums and packet framing;
44
+ - pure encoders and decoders;
45
+ - conversions between wire values and protocol-level values;
46
+ - product IDs and capabilities that determine which commands are valid.
47
+
48
+ The WebHID driver layer under `src/drivers/` owns:
49
+
50
+ - WebHID discovery and permissions;
51
+ - opening devices and sending or receiving reports;
52
+ - retries, delays, queues, connection recovery, and read-back verification;
53
+ - conversion from wire values into shared `MouseStatus` values;
54
+ - the supported-device registry and browser request filters.
55
+
56
+ Keep rendering, DOM access, application state, notifications, and saved UI
57
+ preferences in the consuming application. A driver may provide declarative UI
58
+ hints, but it must not render or query application elements.
59
+
60
+ Protocol functions should be deterministic wherever possible. Prefer functions
61
+ that accept bytes or plain values and return a new `Uint8Array`, object, or
62
+ primitive. Do not mutate caller-owned buffers unless the API explicitly says it
63
+ does so.
64
+
65
+ ## Adding or changing a protocol
66
+
67
+ 1. Add or update a focused module under the brand's `src/<brand>/` folder. Put
68
+ genuinely shared wire framing under a protocol-family folder such as
69
+ `src/compx/`, then re-export it through each applicable brand entry point.
70
+ 2. Export new public APIs from a package subpath in `package.json`.
71
+ 3. Add the module namespace to `src/index.ts` when it should be available from
72
+ the package root.
73
+ 4. Keep exported names vendor-specific when a generic name could collide. For
74
+ example, prefer `razerSetDpiCommand` over `setDpiCommand`.
75
+ 5. Build the package and integrate the packed API into OpenMouse.
76
+
77
+ Use `.js` extensions for relative imports in TypeScript source. The package uses
78
+ NodeNext module resolution and publishes ECMAScript modules.
79
+
80
+ Treat existing exports as a public API. Avoid renaming or changing their
81
+ meaning without explaining the migration and updating all known consumers.
82
+
83
+ For a WebHID driver, add the implementation under
84
+ `src/drivers/<brand>/`, register it in `src/drivers/registry.ts`, and update
85
+ `src/drivers/vendors.ts` when the browser picker needs a new filter. Drivers
86
+ should use the public codec entry point for their brand rather than duplicating
87
+ packet logic.
88
+
89
+ ## Evidence and hardware verification
90
+
91
+ Protocol changes should state where the information came from. Useful evidence
92
+ includes public documentation, links to compatible open-source drivers,
93
+ sanitized USB captures, and before/after observations from vendor software.
94
+ Clearly separate observed facts from hypotheses.
95
+
96
+ When a catalog has a `verified` field, set it to `true` only after that exact
97
+ product ID and connection path have been exercised on hardware. Recognizing a
98
+ USB ID or sharing a protocol family is not sufficient.
99
+
100
+ For write commands:
101
+
102
+ - begin with read-only discovery when possible;
103
+ - preserve unknown bytes during read-modify-write operations;
104
+ - validate ranges and packet lengths before encoding;
105
+ - verify writes by reading the value back;
106
+ - document whether a setting is volatile or stored in device memory;
107
+ - avoid speculative commands that could alter firmware or calibration data.
108
+
109
+ ## Testing with OpenMouse
110
+
111
+ Codec and driver tests live beside their driver modules under `src/drivers/`.
112
+ Add or update focused tests for known captured packets, invalid or truncated
113
+ replies, supported value boundaries, encode/decode round trips, discovery
114
+ filters, and read-back behavior.
115
+
116
+ To verify the consuming application, check out the `openmouse` and
117
+ `mouse-protocol` repositories as siblings, then install your local build into
118
+ OpenMouse without changing its manifest:
119
+
120
+ ```sh
121
+ cd mouse-protocol
122
+ npm run build
123
+
124
+ cd ../openmouse
125
+ npm install --no-save --package-lock=false ../mouse-protocol
126
+ npm run check
127
+ ```
128
+
129
+ Before submitting a driver pull request, run both the package check and the
130
+ OpenMouse check against your local package. A new product entry must also keep
131
+ the driver registry overlap tests passing.
132
+
133
+ ## Pull requests
134
+
135
+ Keep a pull request focused on one protocol family or closely related change.
136
+ In its description, include:
137
+
138
+ - the device models, product IDs, firmware versions, and connection paths;
139
+ - what was tested on physical hardware;
140
+ - the evidence or public references supporting the packet format;
141
+ - any unknown fields or assumptions that remain;
142
+ - the matching OpenMouse pull request when application changes are required.
143
+
144
+ Commit subjects on `main` are release inputs and must follow Conventional
145
+ Commits. When a pull request is squash-merged, its title becomes that subject.
146
+ Use `fix:` for a patch release, `feat:` for a minor release, and `!` or a
147
+ `BREAKING CHANGE:` footer for an incompatible API change. Documentation, test,
148
+ and maintenance-only changes do not publish a package release.
149
+
150
+ Before requesting review, confirm that:
151
+
152
+ - `npm run check` passes in this repository;
153
+ - OpenMouse builds and its full test suite passes with the local package;
154
+ - every new module is exported through the intended package subpath;
155
+ - no generated files, captures with identifiers, or unrelated changes are
156
+ included.
157
+
158
+ Small, evidence-backed improvements are welcome even when a protocol is not yet
159
+ fully understood. Documenting an unknown accurately is better than assigning it
160
+ a guessed meaning.
161
+
162
+ ## Releases
163
+
164
+ Release Please collects releasable commits into a version pull request. Merging
165
+ that pull request creates the matching GitHub release and publishes the exact
166
+ commit as `@openmouse/protocol`. Do not edit package versions or create release
167
+ tags by hand.
package/README.md ADDED
@@ -0,0 +1,89 @@
1
+ # `@openmouse/protocol`
2
+
3
+ Transport-independent gaming mouse protocol codecs used by OpenMouse.
4
+
5
+ The package owns packet layouts, command constants, checksums, encoders,
6
+ decoders, protocol-specific value types, device catalogs, and the WebHID
7
+ drivers used by OpenMouse. Pure codec entry points do not depend on WebHID, so
8
+ browser, Node.js, and TypeScript projects can use them independently from the
9
+ optional driver layer.
10
+
11
+ ```ts
12
+ import { buildFinalmouseReport } from "@openmouse/protocol/finalmouse";
13
+ import { encodeRazerRequest } from "@openmouse/protocol/razer";
14
+ import { RAZER_PRODUCTS } from "@openmouse/protocol/razer-devices";
15
+
16
+ import {
17
+ createSupportedClient,
18
+ SUPPORTED_HID_FILTERS,
19
+ } from "@openmouse/protocol/drivers";
20
+ ```
21
+
22
+ ## Development
23
+
24
+ ```sh
25
+ npm install
26
+ npm run check
27
+ ```
28
+
29
+ The `prepare` script builds `dist` automatically when this package is installed
30
+ directly from Git. Codec sources are grouped by brand under `src/`; WebHID
31
+ drivers, discovery filters, the driver registry, and shared status types live
32
+ under `src/drivers/`. OpenMouse retains application orchestration and UI code.
33
+
34
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for protocol boundaries, hardware
35
+ evidence requirements, local OpenMouse integration, and the pull-request
36
+ checklist.
37
+
38
+ ## Protocol entry points
39
+
40
+ | Brand | Import |
41
+ | --- | --- |
42
+ | ATK | `@openmouse/protocol/atk` |
43
+ | Corsair | `@openmouse/protocol/corsair` |
44
+ | Dareu | `@openmouse/protocol/dareu` |
45
+ | Endgame Gear OP1/XM2 8K | `@openmouse/protocol/endgame-gear-op1` |
46
+ | Endgame Gear wireless | `@openmouse/protocol/endgame-gear-we` |
47
+ | Fantech | `@openmouse/protocol/fantech` |
48
+ | Finalmouse | `@openmouse/protocol/finalmouse` |
49
+ | G-Wolves | `@openmouse/protocol/gwolves` |
50
+ | GearHub (Attack Shark / Lingbao) | `@openmouse/protocol/gearhub` |
51
+ | Glorious | `@openmouse/protocol/glorious` |
52
+ | Glorious classic (Model O/D/I) | `@openmouse/protocol/glorious-classic` |
53
+ | HyperX | `@openmouse/protocol/hyperx` |
54
+ | Incott | `@openmouse/protocol/incott` |
55
+ | K-snake | `@openmouse/protocol/ksnake` |
56
+ | Keychron | `@openmouse/protocol/keychron` |
57
+ | Lamzu / CRDRAKO / Attack Shark | `@openmouse/protocol/lamzu` |
58
+ | Logitech | `@openmouse/protocol/logitech` |
59
+ | MCHOSE | `@openmouse/protocol/mchose` |
60
+ | Microsoft | `@openmouse/protocol/microsoft` |
61
+ | moddoMOUSE | `@openmouse/protocol/moddo` |
62
+ | Ninjutso | `@openmouse/protocol/ninjutso` |
63
+ | Orbital | `@openmouse/protocol/orbital` |
64
+ | RAWM | `@openmouse/protocol/rawm` |
65
+ | Pulsar | `@openmouse/protocol/pulsar` |
66
+ | Razer legacy/current | `@openmouse/protocol/razer` |
67
+ | Razer V4 | `@openmouse/protocol/razer-v4` |
68
+ | SteelSeries Rival 3 (Gen 1) | `@openmouse/protocol/steelseries` |
69
+ | Teevolution | `@openmouse/protocol/teevolution` |
70
+ | VGN | `@openmouse/protocol/vgn` |
71
+ | WALLHACK | `@openmouse/protocol/wallhack` |
72
+ | WLMouse | `@openmouse/protocol/wlmouse` |
73
+ | Wooting | `@openmouse/protocol/wooting` |
74
+ | Zaunkoenig | `@openmouse/protocol/zaunkoenig` |
75
+
76
+ An exported protocol means OpenMouse implements that wire format. It does not
77
+ claim every mouse from that brand works. When a catalog provides a `verified`
78
+ field, use it to distinguish hardware-tested support from USB recognition.
79
+
80
+ The Ninjutso catalog and packet layouts are derived from the JavaScript shipped
81
+ by the official NinjaForce WebHID panel. They have automated transport and
82
+ codec coverage, but are not marked as hardware-verified until tested on the
83
+ corresponding Sora V2/V3 and TEN-family devices.
84
+
85
+ The SteelSeries Rival 3 Gen 1 codec and driver are derived from the public
86
+ rivalcfg project, corroborated against libratbag and OpenRGB. The device is
87
+ write-only — only the firmware version can be read back — and no entry is
88
+ marked hardware-verified yet. See
89
+ [docs/steelseries-testing.md](docs/steelseries-testing.md).
@@ -0,0 +1,52 @@
1
+ export declare const ASUS_VENDOR_ID = 2821;
2
+ export declare const ROG_GLADIUS_II_PRODUCT_ID = 6213;
3
+ export declare const ASUS_GLADIUS_II_USAGE_PAGE = 65281;
4
+ export declare const ASUS_GLADIUS_II_USAGE = 1;
5
+ export declare const ASUS_REPORT_ID = 0;
6
+ export declare const ASUS_REPORT_SIZE = 64;
7
+ export declare const GLADIUS_II_MIN_DPI = 100;
8
+ export declare const GLADIUS_II_MAX_DPI = 12000;
9
+ export declare const GLADIUS_II_DPI_STEP = 100;
10
+ export declare const GLADIUS_II_PROFILE_COUNT = 3;
11
+ export declare const GLADIUS_II_POLLING_RATES: readonly [125, 250, 500, 1000];
12
+ export declare const GLADIUS_II_DEBOUNCE_MS: readonly [12, 16, 20, 24, 28, 32];
13
+ export type GladiusIILiftOffDistance = "Low" | "High";
14
+ export interface GladiusIISettings {
15
+ dpiStages: [number, number];
16
+ pollingRateHz: number;
17
+ debounceMs: number | null;
18
+ angleSnapping: boolean;
19
+ }
20
+ export interface GladiusIIProfile {
21
+ onboardProfile: number;
22
+ activeDpiStage: number;
23
+ }
24
+ export interface GladiusIIRawLightingZone {
25
+ zone: number;
26
+ mode: number;
27
+ brightness: number;
28
+ red: number;
29
+ green: number;
30
+ blue: number;
31
+ direction: number;
32
+ randomColor: boolean;
33
+ speed: number;
34
+ }
35
+ export declare function decodeGladiusIISettings(data: Uint8Array): GladiusIISettings;
36
+ export declare function decodeGladiusIIProfile(data: Uint8Array): GladiusIIProfile;
37
+ export declare function decodeGladiusIILiftOffDistance(data: Uint8Array): GladiusIILiftOffDistance;
38
+ export declare function decodeGladiusIILighting(data: Uint8Array): GladiusIIRawLightingZone[];
39
+ export declare function gladiusIIReadSettingsRequest(): Uint8Array;
40
+ export declare function gladiusIIReadProfileRequest(): Uint8Array;
41
+ export declare function gladiusIIReadLiftOffRequest(): Uint8Array;
42
+ export declare function gladiusIIReadLightingRequest(): Uint8Array;
43
+ export declare function gladiusIISetDpiRequest(stage: number, dpi: number): Uint8Array;
44
+ export declare function gladiusIISetActiveDpiStageRequest(stage: number): Uint8Array;
45
+ export declare function gladiusIISetPollingRateRequest(pollingRateHz: number): Uint8Array;
46
+ export declare function gladiusIISetProfileRequest(profile: number): Uint8Array;
47
+ export declare function gladiusIISetAngleSnappingRequest(enabled: boolean): Uint8Array;
48
+ export declare function gladiusIISetDebounceRequest(milliseconds: number): Uint8Array;
49
+ export declare function gladiusIISetLiftOffRequest(value: GladiusIILiftOffDistance): Uint8Array;
50
+ export declare function gladiusIISetLightingRequest(zone: number, mode: number, brightness: number, red: number, green: number, blue: number, direction?: number, randomColor?: number, speed?: number): Uint8Array;
51
+ export declare function gladiusIISaveRequest(): Uint8Array;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/asus/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,OAAS,CAAC;AAErC,eAAO,MAAM,yBAAyB,OAAS,CAAC;AAEhD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,qBAAqB,IAAS,CAAC;AAE5C,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,eAAO,MAAM,wBAAwB,gCAK3B,CAAC;AAEX,eAAO,MAAM,sBAAsB,mCAOzB,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAChC,KAAK,GACL,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAgED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,GACf,iBAAiB,CAsDnB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,GACf,gBAAgB,CAmClB;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,UAAU,GACf,wBAAwB,CA0B1B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,GACf,wBAAwB,EAAE,CAwC5B;AAMD,wBAAgB,4BAA4B,IAAI,UAAU,CAMzD;AAED,wBAAgB,2BAA2B,IAAI,UAAU,CAKxD;AAED,wBAAgB,2BAA2B,IAAI,UAAU,CAKxD;AAED,wBAAgB,4BAA4B,IAAI,UAAU,CAMzD;AAMD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,UAAU,CAqCZ;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,GACZ,UAAU,CAkBZ;AAMD,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GACpB,UAAU,CAoBZ;AAMD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GACd,UAAU,CAiBZ;AAMD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,OAAO,GACf,UAAU,CAQZ;AAMD,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,GACnB,UAAU,CAsBZ;AAMD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,wBAAwB,GAC9B,UAAU,CAcZ;AAMD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,SAAI,EACb,WAAW,SAAI,EACf,KAAK,SAAI,GACR,UAAU,CAkCZ;AAMD,wBAAgB,oBAAoB,IAAI,UAAU,CAKjD"}
@@ -0,0 +1,248 @@
1
+ export const ASUS_VENDOR_ID = 0x0b05;
2
+ export const ROG_GLADIUS_II_PRODUCT_ID = 0x1845;
3
+ export const ASUS_GLADIUS_II_USAGE_PAGE = 0xff01;
4
+ export const ASUS_GLADIUS_II_USAGE = 0x0001;
5
+ export const ASUS_REPORT_ID = 0;
6
+ export const ASUS_REPORT_SIZE = 64;
7
+ export const GLADIUS_II_MIN_DPI = 100;
8
+ export const GLADIUS_II_MAX_DPI = 12000;
9
+ export const GLADIUS_II_DPI_STEP = 100;
10
+ export const GLADIUS_II_PROFILE_COUNT = 3;
11
+ export const GLADIUS_II_POLLING_RATES = [
12
+ 125,
13
+ 250,
14
+ 500,
15
+ 1000,
16
+ ];
17
+ export const GLADIUS_II_DEBOUNCE_MS = [
18
+ 12,
19
+ 16,
20
+ 20,
21
+ 24,
22
+ 28,
23
+ 32,
24
+ ];
25
+ function requirePrefix(data, expected, name) {
26
+ if (data.length < expected.length) {
27
+ throw new Error(`${name} reply is too short.`);
28
+ }
29
+ for (let i = 0; i < expected.length; i++) {
30
+ if (data[i] !== expected[i]) {
31
+ throw new Error(`${name} reply has unexpected byte ${i}: ` +
32
+ `0x${data[i]
33
+ ?.toString(16)
34
+ .padStart(2, "0")}`);
35
+ }
36
+ }
37
+ }
38
+ function readUint16LE(data, offset) {
39
+ return (data[offset] |
40
+ (data[offset + 1] << 8));
41
+ }
42
+ function decodeDpiWord(value) {
43
+ return ((value + 1) *
44
+ GLADIUS_II_DPI_STEP);
45
+ }
46
+ function request(...bytes) {
47
+ const data = new Uint8Array(ASUS_REPORT_SIZE);
48
+ data.set(bytes);
49
+ return data;
50
+ }
51
+ /* ---------------------------------
52
+ * READ DECODERS
53
+ * --------------------------------- */
54
+ export function decodeGladiusIISettings(data) {
55
+ requirePrefix(data, [0x12, 0x04, 0x00], "Gladius II settings");
56
+ if (data.length < 13) {
57
+ throw new Error("Gladius II settings reply is incomplete.");
58
+ }
59
+ const dpi1 = decodeDpiWord(readUint16LE(data, 4));
60
+ const dpi2 = decodeDpiWord(readUint16LE(data, 6));
61
+ const pollingRaw = data[8];
62
+ const pollingRateHz = GLADIUS_II_POLLING_RATES[pollingRaw];
63
+ if (pollingRateHz === undefined) {
64
+ throw new Error(`Unknown Gladius II polling value 0x${pollingRaw
65
+ .toString(16)
66
+ .padStart(2, "0")}.`);
67
+ }
68
+ const debounceRaw = data[10];
69
+ const debounceMs = debounceRaw >= 0x02 &&
70
+ debounceRaw <= 0x07
71
+ ? debounceRaw * 4 + 4
72
+ : null;
73
+ return {
74
+ dpiStages: [dpi1, dpi2],
75
+ pollingRateHz,
76
+ debounceMs,
77
+ angleSnapping: data[12] === 0x01,
78
+ };
79
+ }
80
+ export function decodeGladiusIIProfile(data) {
81
+ requirePrefix(data, [0x12, 0x00, 0x00], "Gladius II profile");
82
+ if (data.length < 12) {
83
+ throw new Error("Gladius II profile reply is incomplete.");
84
+ }
85
+ const onboardProfileRaw = data[10];
86
+ const dpiStageRaw = data[11];
87
+ if (dpiStageRaw < 1 ||
88
+ dpiStageRaw > 2) {
89
+ throw new Error(`Invalid Gladius II DPI stage ${dpiStageRaw}.`);
90
+ }
91
+ return {
92
+ onboardProfile: onboardProfileRaw + 1,
93
+ activeDpiStage: dpiStageRaw - 1,
94
+ };
95
+ }
96
+ export function decodeGladiusIILiftOffDistance(data) {
97
+ requirePrefix(data, [0x12, 0x06], "Gladius II lift-off");
98
+ if (data.length < 8) {
99
+ throw new Error("Gladius II lift-off reply is incomplete.");
100
+ }
101
+ const raw = data[7];
102
+ if (raw === 0) {
103
+ return "Low";
104
+ }
105
+ if (raw === 1) {
106
+ return "High";
107
+ }
108
+ throw new Error(`Unknown Gladius II lift-off value ${raw}.`);
109
+ }
110
+ export function decodeGladiusIILighting(data) {
111
+ requirePrefix(data, [0x12, 0x03, 0x00], "Gladius II lighting");
112
+ if (data.length < 23) {
113
+ throw new Error("Gladius II lighting reply is incomplete.");
114
+ }
115
+ const direction = data[20];
116
+ const randomColor = data[21] === 0x01;
117
+ const speed = data[22];
118
+ const zones = [];
119
+ for (let zone = 0; zone < 3; zone++) {
120
+ const offset = 4 + zone * 5;
121
+ zones.push({
122
+ zone,
123
+ mode: data[offset],
124
+ brightness: data[offset + 1],
125
+ red: data[offset + 2],
126
+ green: data[offset + 3],
127
+ blue: data[offset + 4],
128
+ direction,
129
+ randomColor,
130
+ speed,
131
+ });
132
+ }
133
+ return zones;
134
+ }
135
+ /* ---------------------------------
136
+ * READ REQUESTS
137
+ * --------------------------------- */
138
+ export function gladiusIIReadSettingsRequest() {
139
+ return request(0x12, 0x04, 0x00);
140
+ }
141
+ export function gladiusIIReadProfileRequest() {
142
+ return request(0x12, 0x00);
143
+ }
144
+ export function gladiusIIReadLiftOffRequest() {
145
+ return request(0x12, 0x06);
146
+ }
147
+ export function gladiusIIReadLightingRequest() {
148
+ return request(0x12, 0x03, 0x00);
149
+ }
150
+ /* ---------------------------------
151
+ * DPI
152
+ * --------------------------------- */
153
+ export function gladiusIISetDpiRequest(stage, dpi) {
154
+ if (!Number.isInteger(stage) ||
155
+ stage < 0 ||
156
+ stage > 1) {
157
+ throw new Error("Gladius II DPI stage must be 0 or 1.");
158
+ }
159
+ if (!Number.isInteger(dpi) ||
160
+ dpi < GLADIUS_II_MIN_DPI ||
161
+ dpi > GLADIUS_II_MAX_DPI ||
162
+ dpi %
163
+ GLADIUS_II_DPI_STEP !==
164
+ 0) {
165
+ throw new Error(`Gladius II DPI must be ${GLADIUS_II_MIN_DPI}-${GLADIUS_II_MAX_DPI} in ${GLADIUS_II_DPI_STEP}-DPI steps.`);
166
+ }
167
+ const encoded = (dpi -
168
+ GLADIUS_II_DPI_STEP) /
169
+ GLADIUS_II_DPI_STEP;
170
+ return request(0x51, 0x31, stage, 0x00, encoded & 0xff, (encoded >> 8) & 0xff);
171
+ }
172
+ export function gladiusIISetActiveDpiStageRequest(stage) {
173
+ if (!Number.isInteger(stage) ||
174
+ stage < 0 ||
175
+ stage > 1) {
176
+ throw new Error("Gladius II DPI stage must be 0 or 1.");
177
+ }
178
+ return request(0x51, 0x31, 0x09, 0x00, stage + 1);
179
+ }
180
+ /* ---------------------------------
181
+ * POLLING
182
+ * --------------------------------- */
183
+ export function gladiusIISetPollingRateRequest(pollingRateHz) {
184
+ const rateIndex = GLADIUS_II_POLLING_RATES.findIndex((rate) => rate === pollingRateHz);
185
+ if (rateIndex === -1) {
186
+ throw new Error(`Unsupported Gladius II polling rate: ${pollingRateHz} Hz.`);
187
+ }
188
+ return request(0x51, 0x31, 0x02, 0x00, rateIndex);
189
+ }
190
+ /* ---------------------------------
191
+ * ONBOARD PROFILE
192
+ * --------------------------------- */
193
+ export function gladiusIISetProfileRequest(profile) {
194
+ if (!Number.isInteger(profile) ||
195
+ profile < 1 ||
196
+ profile >
197
+ GLADIUS_II_PROFILE_COUNT) {
198
+ throw new Error(`Gladius II profile must be 1-${GLADIUS_II_PROFILE_COUNT}.`);
199
+ }
200
+ return request(0x50, 0x02, profile - 1);
201
+ }
202
+ /* ---------------------------------
203
+ * ANGLE SNAPPING
204
+ * --------------------------------- */
205
+ export function gladiusIISetAngleSnappingRequest(enabled) {
206
+ return request(0x51, 0x31, 0x04, 0x00, enabled ? 0x01 : 0x00);
207
+ }
208
+ /* ---------------------------------
209
+ * DEBOUNCE
210
+ * --------------------------------- */
211
+ export function gladiusIISetDebounceRequest(milliseconds) {
212
+ if (!GLADIUS_II_DEBOUNCE_MS.some((value) => value === milliseconds)) {
213
+ throw new Error(`Gladius II debounce must be one of: ${GLADIUS_II_DEBOUNCE_MS.join(", ")} ms.`);
214
+ }
215
+ const raw = milliseconds / 4 - 1;
216
+ return request(0x51, 0x31, 0x03, 0x00, raw);
217
+ }
218
+ /* ---------------------------------
219
+ * LIFT-OFF DISTANCE
220
+ * --------------------------------- */
221
+ export function gladiusIISetLiftOffRequest(value) {
222
+ const raw = value === "High"
223
+ ? 1
224
+ : 0;
225
+ return request(0x51, 0x35, 0xff, 0x00, 0xff, raw);
226
+ }
227
+ /* ---------------------------------
228
+ * RGB
229
+ * --------------------------------- */
230
+ export function gladiusIISetLightingRequest(zone, mode, brightness, red, green, blue, direction = 0, randomColor = 0, speed = 0) {
231
+ if (!Number.isInteger(zone) ||
232
+ zone < 0 ||
233
+ zone > 2) {
234
+ throw new Error("Gladius II RGB zone must be 0, 1, or 2.");
235
+ }
236
+ if (brightness < 0 ||
237
+ brightness > 4) {
238
+ throw new Error("Gladius II RGB brightness must be 0-4.");
239
+ }
240
+ return request(0x51, 0x28, zone, 0x00, mode, brightness, red, green, blue, direction, randomColor, speed);
241
+ }
242
+ /* ---------------------------------
243
+ * SAVE
244
+ * --------------------------------- */
245
+ export function gladiusIISaveRequest() {
246
+ return request(0x50, 0x03);
247
+ }
248
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/asus/index.ts"],"names":[],"mappings":"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"}