@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,215 @@
1
+ /**
2
+ * SteelSeries Rival 650 Wireless configuration protocol — pure encode/decode helpers.
3
+ *
4
+ * Reconstructed from public open-source implementations, not vendor software:
5
+ *
6
+ * - rivalcfg `rivalcfg/devices/rival650.py` — the primary source for every
7
+ * command byte, product id, and default here. Read in full for this
8
+ * cluster; not assumed from any sibling SteelSeries device file.
9
+ * - rivalcfg `rivalcfg/handlers/range.py` — `sensitivity1`/`sensitivity2`:
10
+ * linear range-to-range mapping. `input_range` `[100, 12000, 100]` against
11
+ * `output_range` `[0x00, 0x77, 1]` — 120 steps each side, so the wire byte
12
+ * is simply `(dpi - 100) / 100`, `range_length_byte` defaulting to 1 (not
13
+ * set in the profile).
14
+ * - rivalcfg `rivalcfg/handlers/range_choice.py` — `lift_off_distance`: a
15
+ * *scalar* range-choice (unlike `./rival3-wireless.ts`'s per-preset DPI
16
+ * table use of the *multi*-DPI handler), `input_range` `[1, 8, 1]` matched
17
+ * exactly (every step has its own `output_choices` entry, so no rounding
18
+ * is exercised in practice) against a two-byte little-endian output value
19
+ * (`range_length_byte: 2` — the output values themselves, e.g. `0x7874`,
20
+ * are already 16-bit quantities, not indices).
21
+ * - rivalcfg `rivalcfg/handlers/range.py` again — `sleep_timer`: `input_range`
22
+ * `[1, 20, 1]` (minutes) against `output_range` `[0x003C, 0x04B0, 60]`
23
+ * (seconds, `range_length_byte: 2`) — 60 and 1200 are `1*60` and `20*60`,
24
+ * so the wire value is simply `minutes * 60` seconds, little-endian 2
25
+ * bytes.
26
+ * - rivalcfg `rivalcfg/handlers/buttons/buttons.py` — the fixed-width button
27
+ * field layout, 7 buttons, `button_field_length: 5`. Button 7 has
28
+ * `"id": 0x00` in the source (colliding with `button_disable`'s `0x00`) and
29
+ * defaults to the `dpi` special action — like `./aerox5-wireless.ts`'s
30
+ * `scrollUp`/`scrollDown`, this means Button 7 is a valid remap *source*
31
+ * (it has an `offset`) but not a valid remap *target* (writing its `id`
32
+ * into another button's field would be indistinguishable from disabling
33
+ * that button), so `RivalSixFiftyButtonAction`'s `"button"` variant
34
+ * excludes it.
35
+ * - rivalcfg's `usbhid.py` / `mouse.py` framing — unnumbered HID output
36
+ * reports on the vendor configuration interface (`"endpoint": 0` for both
37
+ * models, unlike `./rival3-wireless.ts`/`./aerox5-wireless.ts`'s
38
+ * `endpoint: 3`).
39
+ *
40
+ * ## Why this is a separate protocol family from every other SteelSeries device here
41
+ *
42
+ * `rival650.py` shares no command byte with `./rival3.ts`, `./aerox3.ts`,
43
+ * `./rival3-wireless.ts`, `./aerox5.ts`, or `./aerox5-wireless.ts`:
44
+ * sensitivity `0x15 0x01`/`0x15 0x02` (two separate single-value commands,
45
+ * not a shared multi-preset table like Rival 3 Wireless's `0x20` or Aerox 5
46
+ * Wireless's `0x2D`), polling `0x17` with `{125:0x04, 250:0x03, 500:0x02,
47
+ * 1000:0x01}` (Rival 3 Wireless also uses command byte `0x17` but a
48
+ * *different* value mapping — do not conflate the two), lift-off distance
49
+ * `0x20 0x01` (a setting neither Rival 3 Wireless nor Aerox 5 Wireless
50
+ * expose), buttons `0x19` (byte-identical to Rival 3 Wireless's buttons
51
+ * command, but a different field layout: 7 buttons here vs. 6 there), sleep
52
+ * timer `0x2B 0x01 0x01 0x00 0x00 0x00` (a 6-byte prefix, longer than any
53
+ * sibling's), battery `0xAA 0x01` (**byte-identical** to
54
+ * `./rival3-wireless.ts`'s battery command and response shape — see below),
55
+ * save `0x09` (one byte, same as Rival 3 Wireless's, different from Rival 3
56
+ * Gen 1's two-byte `0x09 0x00`). No firmware-query command is defined in
57
+ * `rival650.py` at all (unlike Rival 3 Wireless's `0x90 0x00`), so this
58
+ * family has no firmware probe.
59
+ *
60
+ * Product ids: `1038:172B` (wired/USB-cabled mode) and `1038:1726` (2.4 GHz
61
+ * wireless mode), both `"endpoint": 0`. Neither collides with any PID
62
+ * claimed by the Rival 3 / Aerox 3 / Rival 3 Wireless / Aerox 5 / Aerox 5
63
+ * Wireless families already registered in `./devices.ts`. Unlike
64
+ * `./aerox5-wireless.ts`, `rival650.py` uses the **same** command bytes for
65
+ * both PIDs — there is no `_patch_command`-style wireless-flag transform to
66
+ * model here.
67
+ *
68
+ * No corroborating libratbag or OpenRGB source for this exact device/PID was
69
+ * available in this environment (no local libratbag checkout, and OpenRGB's
70
+ * SteelSeries controller files were not reachable this pass) — every command
71
+ * byte above is sourced from rivalcfg alone. This should be treated as a
72
+ * single-source reconstruction until corroborated or hardware-verified.
73
+ *
74
+ * ## Battery / charging read — byte-identical shape to Rival 3 Wireless
75
+ *
76
+ * `rival650.py`'s top-level `battery_level` block is byte-for-byte the same
77
+ * shape as `./rival3-wireless.ts`'s: command `0xAA 0x01`, 3-byte input-report
78
+ * reply, `level = int(data[0])`, `is_charging = bool(data[2])`, `data[1]`
79
+ * unused by either lambda. This module defines its own
80
+ * `steelseriesRival650BatteryQuery` / `steelseriesRival650DecodeBattery`
81
+ * rather than importing Rival 3 Wireless's, so each family's codec stays
82
+ * self-contained (matching `./aerox5-wireless.ts`'s precedent of not sharing
83
+ * command/decode functions across families even when bytes happen to match).
84
+ *
85
+ * DPI presets, polling rate, lift-off distance, buttons, and sleep timer
86
+ * remain write-only: `rival650.py` defines no getter for any of them, same
87
+ * as every other SteelSeries profile in rivalcfg. Settings apply
88
+ * immediately; the save command (`0x09`) persists them to onboard flash.
89
+ * None of this has been verified on physical hardware by this project.
90
+ */
91
+ export declare const RIVAL650_REPORT_ID = 0;
92
+ /** Command prefixes; length varies by command, matching rivalcfg exactly. */
93
+ export declare const RIVAL650_COMMAND: {
94
+ readonly sensitivity1: readonly [21, 1];
95
+ readonly sensitivity2: readonly [21, 2];
96
+ readonly pollingRate: readonly [23];
97
+ readonly liftOffDistance: readonly [32, 1];
98
+ readonly buttonsMapping: readonly [25];
99
+ readonly sleepTimer: readonly [43, 1, 1, 0, 0, 0];
100
+ /** `AA 01` — battery percentage + charging state, 3-byte input-report reply. */
101
+ readonly batteryLevel: readonly [170, 1];
102
+ /** One byte, same as Rival 3 Wireless's, unlike Rival 3 Gen 1's two-byte `09 00`. */
103
+ readonly save: readonly [9];
104
+ };
105
+ export declare const RIVAL650_POLLING_RATES: readonly [125, 250, 500, 1000];
106
+ export declare const RIVAL650_DPI_MIN = 100;
107
+ export declare const RIVAL650_DPI_MAX = 12000;
108
+ export declare const RIVAL650_DPI_STEP = 100;
109
+ export declare const RIVAL650_BATTERY_RESPONSE_LENGTH = 3;
110
+ export declare const RIVAL650_LIFT_OFF_DISTANCE_MIN = 1;
111
+ export declare const RIVAL650_LIFT_OFF_DISTANCE_MAX = 8;
112
+ export declare const RIVAL650_SLEEP_TIMER_MIN_MINUTES = 1;
113
+ export declare const RIVAL650_SLEEP_TIMER_MAX_MINUTES = 20;
114
+ export declare class Rival650ProtocolError extends Error {
115
+ }
116
+ /** DPI values expressible by the linear `range` table, ascending: 100, 200, …, 12000. */
117
+ export declare function steelseriesRival650DpiOptions(): number[];
118
+ /** `15 01 <v>` — sensitivity preset 1, `v = (dpi - 100) / 100` per rivalcfg's `range` table. */
119
+ export declare function steelseriesRival650EncodeSensitivity1(dpi: number): Uint8Array;
120
+ /** `15 02 <v>` — sensitivity preset 2, same encoding as preset 1. */
121
+ export declare function steelseriesRival650EncodeSensitivity2(dpi: number): Uint8Array;
122
+ /** `17 <v>` with 1000→0x01, 500→0x02, 250→0x03, 125→0x04 (different mapping than Rival 3 Wireless's same-byte command). */
123
+ export declare function steelseriesRival650EncodePollingRate(pollingRateHz: number): Uint8Array;
124
+ /** `20 01 <v_lo> <v_hi>` — lift-off distance 1–8 mm, exact per-step output value, little-endian 2 bytes. */
125
+ export declare function steelseriesRival650EncodeLiftOffDistance(millimeters: number): Uint8Array;
126
+ /** `2B 01 01 00 00 00 <v_lo> <v_hi>` — idle minutes before sleep, encoded as `minutes * 60` seconds, little-endian 2 bytes. */
127
+ export declare function steelseriesRival650EncodeSleepTimer(minutes: number): Uint8Array;
128
+ /** `09` — commit the current settings to onboard flash. */
129
+ export declare function steelseriesRival650SaveCommand(): Uint8Array;
130
+ /** `AA 01` — the device answers with a three-byte input report. */
131
+ export declare function steelseriesRival650BatteryQuery(): Uint8Array;
132
+ export interface Rival650Battery {
133
+ /** Battery percentage, `data[0]` verbatim (rivalcfg does not clamp it). */
134
+ level: number;
135
+ /** `bool(data[2])` in rivalcfg — `data[1]` is not used by either lambda. */
136
+ isCharging: boolean;
137
+ }
138
+ /**
139
+ * Decode the three-byte battery response: `data[0]` is the percentage
140
+ * (rivalcfg's `level` lambda, `int(data[0])`), `data[2]` is charging state
141
+ * (rivalcfg's `is_charging` lambda, `bool(data[2])`). `data[1]` is present in
142
+ * the response but unused by either rivalcfg lambda. Byte-identical shape to
143
+ * `./rival3-wireless.ts`'s battery decode.
144
+ */
145
+ export declare function steelseriesRival650DecodeBattery(payload: Uint8Array): Rival650Battery;
146
+ /** `buttons_mapping.buttons` from `rival650.py`, id + byte offset into the packet. */
147
+ export declare const RIVAL650_BUTTONS: {
148
+ readonly button1: {
149
+ readonly id: 1;
150
+ readonly offset: 0;
151
+ };
152
+ readonly button2: {
153
+ readonly id: 2;
154
+ readonly offset: 5;
155
+ };
156
+ readonly button3: {
157
+ readonly id: 3;
158
+ readonly offset: 10;
159
+ };
160
+ readonly button4: {
161
+ readonly id: 4;
162
+ readonly offset: 15;
163
+ };
164
+ readonly button5: {
165
+ readonly id: 5;
166
+ readonly offset: 20;
167
+ };
168
+ readonly button6: {
169
+ readonly id: 6;
170
+ readonly offset: 25;
171
+ };
172
+ /**
173
+ * `"id": 0x00` in the source — collides with `button_disable`, so this
174
+ * button cannot be a valid remap *target* (see module doc comment). It
175
+ * still has its own `offset` and defaults to the `dpi` special action.
176
+ */
177
+ readonly button7: {
178
+ readonly id: 0;
179
+ readonly offset: 30;
180
+ };
181
+ };
182
+ export type Rival650ButtonName = keyof typeof RIVAL650_BUTTONS;
183
+ /**
184
+ * One button's target. `button7`'s `id` (`0x00`) collides with `disabled`,
185
+ * so — like `./aerox5-wireless.ts`'s `scrollUp`/`scrollDown` — it is a valid
186
+ * remap *source* (it has an `offset` and can be assigned any action) but
187
+ * excluded from `"button"` as a remap *target*.
188
+ */
189
+ export type Rival650ButtonAction = {
190
+ type: "button";
191
+ target: Exclude<Rival650ButtonName, "button7">;
192
+ } | {
193
+ type: "disabled";
194
+ } | {
195
+ type: "dpiSwitch";
196
+ } | {
197
+ type: "scrollUp";
198
+ } | {
199
+ type: "scrollDown";
200
+ } | {
201
+ type: "keyboard";
202
+ code: number;
203
+ } | {
204
+ type: "multimedia";
205
+ code: number;
206
+ };
207
+ /**
208
+ * `19` + one 35-byte (`7 buttons × 5-byte field length`) packet, zero-filled
209
+ * except where a mapping is given. Unmapped buttons are left as all-zero
210
+ * fields (rivalcfg instead fills in per-button defaults; this codec leaves
211
+ * that policy to the caller — pass every button explicitly for parity with
212
+ * rivalcfg's default profile).
213
+ */
214
+ export declare function steelseriesRival650EncodeButtonsMapping(mapping: Partial<Record<Rival650ButtonName, Rival650ButtonAction>>): Uint8Array;
215
+ //# sourceMappingURL=rival650.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rival650.d.ts","sourceRoot":"","sources":["../../src/steelseries/rival650.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AAEH,eAAO,MAAM,kBAAkB,IAAO,CAAC;AAEvC,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB;;;;;;;IAO3B,gFAAgF;;IAEhF,qFAAqF;;CAE7E,CAAC;AAEX,eAAO,MAAM,sBAAsB,gCAAiC,CAAC;AASrE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAchD,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,qBAAa,qBAAsB,SAAQ,KAAK;CAAG;AAEnD,yFAAyF;AACzF,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CAMxD;AAWD,gGAAgG;AAChG,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAE7E;AAED,qEAAqE;AACrE,wBAAgB,qCAAqC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAE7E;AAED,2HAA2H;AAC3H,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAMtF;AAED,4GAA4G;AAC5G,wBAAgB,wCAAwC,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAQxF;AAED,+HAA+H;AAC/H,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAY/E;AAED,2DAA2D;AAC3D,wBAAgB,8BAA8B,IAAI,UAAU,CAE3D;AAED,mEAAmE;AACnE,wBAAgB,+BAA+B,IAAI,UAAU,CAE5D;AAED,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,UAAU,GAAG,eAAe,CAKrF;AASD,sFAAsF;AACtF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;IAO3B;;;;OAIG;;;;;CAEkD,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAU/D;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,GACjE,UAAU,CAsDZ"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * SteelSeries Rival 650 Wireless configuration protocol — pure encode/decode helpers.
3
+ *
4
+ * Reconstructed from public open-source implementations, not vendor software:
5
+ *
6
+ * - rivalcfg `rivalcfg/devices/rival650.py` — the primary source for every
7
+ * command byte, product id, and default here. Read in full for this
8
+ * cluster; not assumed from any sibling SteelSeries device file.
9
+ * - rivalcfg `rivalcfg/handlers/range.py` — `sensitivity1`/`sensitivity2`:
10
+ * linear range-to-range mapping. `input_range` `[100, 12000, 100]` against
11
+ * `output_range` `[0x00, 0x77, 1]` — 120 steps each side, so the wire byte
12
+ * is simply `(dpi - 100) / 100`, `range_length_byte` defaulting to 1 (not
13
+ * set in the profile).
14
+ * - rivalcfg `rivalcfg/handlers/range_choice.py` — `lift_off_distance`: a
15
+ * *scalar* range-choice (unlike `./rival3-wireless.ts`'s per-preset DPI
16
+ * table use of the *multi*-DPI handler), `input_range` `[1, 8, 1]` matched
17
+ * exactly (every step has its own `output_choices` entry, so no rounding
18
+ * is exercised in practice) against a two-byte little-endian output value
19
+ * (`range_length_byte: 2` — the output values themselves, e.g. `0x7874`,
20
+ * are already 16-bit quantities, not indices).
21
+ * - rivalcfg `rivalcfg/handlers/range.py` again — `sleep_timer`: `input_range`
22
+ * `[1, 20, 1]` (minutes) against `output_range` `[0x003C, 0x04B0, 60]`
23
+ * (seconds, `range_length_byte: 2`) — 60 and 1200 are `1*60` and `20*60`,
24
+ * so the wire value is simply `minutes * 60` seconds, little-endian 2
25
+ * bytes.
26
+ * - rivalcfg `rivalcfg/handlers/buttons/buttons.py` — the fixed-width button
27
+ * field layout, 7 buttons, `button_field_length: 5`. Button 7 has
28
+ * `"id": 0x00` in the source (colliding with `button_disable`'s `0x00`) and
29
+ * defaults to the `dpi` special action — like `./aerox5-wireless.ts`'s
30
+ * `scrollUp`/`scrollDown`, this means Button 7 is a valid remap *source*
31
+ * (it has an `offset`) but not a valid remap *target* (writing its `id`
32
+ * into another button's field would be indistinguishable from disabling
33
+ * that button), so `RivalSixFiftyButtonAction`'s `"button"` variant
34
+ * excludes it.
35
+ * - rivalcfg's `usbhid.py` / `mouse.py` framing — unnumbered HID output
36
+ * reports on the vendor configuration interface (`"endpoint": 0` for both
37
+ * models, unlike `./rival3-wireless.ts`/`./aerox5-wireless.ts`'s
38
+ * `endpoint: 3`).
39
+ *
40
+ * ## Why this is a separate protocol family from every other SteelSeries device here
41
+ *
42
+ * `rival650.py` shares no command byte with `./rival3.ts`, `./aerox3.ts`,
43
+ * `./rival3-wireless.ts`, `./aerox5.ts`, or `./aerox5-wireless.ts`:
44
+ * sensitivity `0x15 0x01`/`0x15 0x02` (two separate single-value commands,
45
+ * not a shared multi-preset table like Rival 3 Wireless's `0x20` or Aerox 5
46
+ * Wireless's `0x2D`), polling `0x17` with `{125:0x04, 250:0x03, 500:0x02,
47
+ * 1000:0x01}` (Rival 3 Wireless also uses command byte `0x17` but a
48
+ * *different* value mapping — do not conflate the two), lift-off distance
49
+ * `0x20 0x01` (a setting neither Rival 3 Wireless nor Aerox 5 Wireless
50
+ * expose), buttons `0x19` (byte-identical to Rival 3 Wireless's buttons
51
+ * command, but a different field layout: 7 buttons here vs. 6 there), sleep
52
+ * timer `0x2B 0x01 0x01 0x00 0x00 0x00` (a 6-byte prefix, longer than any
53
+ * sibling's), battery `0xAA 0x01` (**byte-identical** to
54
+ * `./rival3-wireless.ts`'s battery command and response shape — see below),
55
+ * save `0x09` (one byte, same as Rival 3 Wireless's, different from Rival 3
56
+ * Gen 1's two-byte `0x09 0x00`). No firmware-query command is defined in
57
+ * `rival650.py` at all (unlike Rival 3 Wireless's `0x90 0x00`), so this
58
+ * family has no firmware probe.
59
+ *
60
+ * Product ids: `1038:172B` (wired/USB-cabled mode) and `1038:1726` (2.4 GHz
61
+ * wireless mode), both `"endpoint": 0`. Neither collides with any PID
62
+ * claimed by the Rival 3 / Aerox 3 / Rival 3 Wireless / Aerox 5 / Aerox 5
63
+ * Wireless families already registered in `./devices.ts`. Unlike
64
+ * `./aerox5-wireless.ts`, `rival650.py` uses the **same** command bytes for
65
+ * both PIDs — there is no `_patch_command`-style wireless-flag transform to
66
+ * model here.
67
+ *
68
+ * No corroborating libratbag or OpenRGB source for this exact device/PID was
69
+ * available in this environment (no local libratbag checkout, and OpenRGB's
70
+ * SteelSeries controller files were not reachable this pass) — every command
71
+ * byte above is sourced from rivalcfg alone. This should be treated as a
72
+ * single-source reconstruction until corroborated or hardware-verified.
73
+ *
74
+ * ## Battery / charging read — byte-identical shape to Rival 3 Wireless
75
+ *
76
+ * `rival650.py`'s top-level `battery_level` block is byte-for-byte the same
77
+ * shape as `./rival3-wireless.ts`'s: command `0xAA 0x01`, 3-byte input-report
78
+ * reply, `level = int(data[0])`, `is_charging = bool(data[2])`, `data[1]`
79
+ * unused by either lambda. This module defines its own
80
+ * `steelseriesRival650BatteryQuery` / `steelseriesRival650DecodeBattery`
81
+ * rather than importing Rival 3 Wireless's, so each family's codec stays
82
+ * self-contained (matching `./aerox5-wireless.ts`'s precedent of not sharing
83
+ * command/decode functions across families even when bytes happen to match).
84
+ *
85
+ * DPI presets, polling rate, lift-off distance, buttons, and sleep timer
86
+ * remain write-only: `rival650.py` defines no getter for any of them, same
87
+ * as every other SteelSeries profile in rivalcfg. Settings apply
88
+ * immediately; the save command (`0x09`) persists them to onboard flash.
89
+ * None of this has been verified on physical hardware by this project.
90
+ */
91
+ export const RIVAL650_REPORT_ID = 0x00;
92
+ /** Command prefixes; length varies by command, matching rivalcfg exactly. */
93
+ export const RIVAL650_COMMAND = {
94
+ sensitivity1: [0x15, 0x01],
95
+ sensitivity2: [0x15, 0x02],
96
+ pollingRate: [0x17],
97
+ liftOffDistance: [0x20, 0x01],
98
+ buttonsMapping: [0x19],
99
+ sleepTimer: [0x2b, 0x01, 0x01, 0x00, 0x00, 0x00],
100
+ /** `AA 01` — battery percentage + charging state, 3-byte input-report reply. */
101
+ batteryLevel: [0xaa, 0x01],
102
+ /** One byte, same as Rival 3 Wireless's, unlike Rival 3 Gen 1's two-byte `09 00`. */
103
+ save: [0x09],
104
+ };
105
+ export const RIVAL650_POLLING_RATES = [125, 250, 500, 1000];
106
+ const POLLING_RATE_TO_BYTE = new Map([
107
+ [1000, 0x01],
108
+ [500, 0x02],
109
+ [250, 0x03],
110
+ [125, 0x04],
111
+ ]);
112
+ export const RIVAL650_DPI_MIN = 100;
113
+ export const RIVAL650_DPI_MAX = 12000;
114
+ export const RIVAL650_DPI_STEP = 100;
115
+ export const RIVAL650_BATTERY_RESPONSE_LENGTH = 3;
116
+ export const RIVAL650_LIFT_OFF_DISTANCE_MIN = 1;
117
+ export const RIVAL650_LIFT_OFF_DISTANCE_MAX = 8;
118
+ /** `lift_off_distance.output_choices` from `rival650.py`, exact per-mm values, no rounding needed. */
119
+ const LIFT_OFF_DISTANCE_TO_VALUE = new Map([
120
+ [1, 0x7874],
121
+ [2, 0x736f],
122
+ [3, 0x6e6a],
123
+ [4, 0x6965],
124
+ [5, 0x6460],
125
+ [6, 0x5f5b],
126
+ [7, 0x5a56],
127
+ [8, 0x5551],
128
+ ]);
129
+ export const RIVAL650_SLEEP_TIMER_MIN_MINUTES = 1;
130
+ export const RIVAL650_SLEEP_TIMER_MAX_MINUTES = 20;
131
+ export class Rival650ProtocolError extends Error {
132
+ }
133
+ /** DPI values expressible by the linear `range` table, ascending: 100, 200, …, 12000. */
134
+ export function steelseriesRival650DpiOptions() {
135
+ const options = [];
136
+ for (let dpi = RIVAL650_DPI_MIN; dpi <= RIVAL650_DPI_MAX; dpi += RIVAL650_DPI_STEP) {
137
+ options.push(dpi);
138
+ }
139
+ return options;
140
+ }
141
+ function encodeDpiByte(dpi) {
142
+ if (!Number.isInteger(dpi) || dpi < RIVAL650_DPI_MIN || dpi > RIVAL650_DPI_MAX || (dpi - RIVAL650_DPI_MIN) % RIVAL650_DPI_STEP !== 0) {
143
+ throw new Rival650ProtocolError(`SteelSeries Rival 650 Wireless DPI must be ${RIVAL650_DPI_MIN}–${RIVAL650_DPI_MAX.toLocaleString()} in ${RIVAL650_DPI_STEP} DPI steps.`);
144
+ }
145
+ return (dpi - RIVAL650_DPI_MIN) / RIVAL650_DPI_STEP;
146
+ }
147
+ /** `15 01 <v>` — sensitivity preset 1, `v = (dpi - 100) / 100` per rivalcfg's `range` table. */
148
+ export function steelseriesRival650EncodeSensitivity1(dpi) {
149
+ return new Uint8Array([...RIVAL650_COMMAND.sensitivity1, encodeDpiByte(dpi)]);
150
+ }
151
+ /** `15 02 <v>` — sensitivity preset 2, same encoding as preset 1. */
152
+ export function steelseriesRival650EncodeSensitivity2(dpi) {
153
+ return new Uint8Array([...RIVAL650_COMMAND.sensitivity2, encodeDpiByte(dpi)]);
154
+ }
155
+ /** `17 <v>` with 1000→0x01, 500→0x02, 250→0x03, 125→0x04 (different mapping than Rival 3 Wireless's same-byte command). */
156
+ export function steelseriesRival650EncodePollingRate(pollingRateHz) {
157
+ const byte = POLLING_RATE_TO_BYTE.get(pollingRateHz);
158
+ if (byte === undefined) {
159
+ throw new Rival650ProtocolError("SteelSeries Rival 650 Wireless supports 125, 250, 500, or 1000 Hz polling.");
160
+ }
161
+ return new Uint8Array([...RIVAL650_COMMAND.pollingRate, byte]);
162
+ }
163
+ /** `20 01 <v_lo> <v_hi>` — lift-off distance 1–8 mm, exact per-step output value, little-endian 2 bytes. */
164
+ export function steelseriesRival650EncodeLiftOffDistance(millimeters) {
165
+ const value = LIFT_OFF_DISTANCE_TO_VALUE.get(millimeters);
166
+ if (value === undefined) {
167
+ throw new Rival650ProtocolError(`SteelSeries Rival 650 Wireless lift-off distance must be an integer ${RIVAL650_LIFT_OFF_DISTANCE_MIN}–${RIVAL650_LIFT_OFF_DISTANCE_MAX}.`);
168
+ }
169
+ return new Uint8Array([...RIVAL650_COMMAND.liftOffDistance, value & 0xff, (value >> 8) & 0xff]);
170
+ }
171
+ /** `2B 01 01 00 00 00 <v_lo> <v_hi>` — idle minutes before sleep, encoded as `minutes * 60` seconds, little-endian 2 bytes. */
172
+ export function steelseriesRival650EncodeSleepTimer(minutes) {
173
+ if (!Number.isInteger(minutes) ||
174
+ minutes < RIVAL650_SLEEP_TIMER_MIN_MINUTES ||
175
+ minutes > RIVAL650_SLEEP_TIMER_MAX_MINUTES) {
176
+ throw new Rival650ProtocolError(`SteelSeries Rival 650 Wireless sleep timer must be an integer ${RIVAL650_SLEEP_TIMER_MIN_MINUTES}–${RIVAL650_SLEEP_TIMER_MAX_MINUTES} minutes.`);
177
+ }
178
+ const seconds = minutes * 60;
179
+ return new Uint8Array([...RIVAL650_COMMAND.sleepTimer, seconds & 0xff, (seconds >> 8) & 0xff]);
180
+ }
181
+ /** `09` — commit the current settings to onboard flash. */
182
+ export function steelseriesRival650SaveCommand() {
183
+ return new Uint8Array(RIVAL650_COMMAND.save);
184
+ }
185
+ /** `AA 01` — the device answers with a three-byte input report. */
186
+ export function steelseriesRival650BatteryQuery() {
187
+ return new Uint8Array(RIVAL650_COMMAND.batteryLevel);
188
+ }
189
+ /**
190
+ * Decode the three-byte battery response: `data[0]` is the percentage
191
+ * (rivalcfg's `level` lambda, `int(data[0])`), `data[2]` is charging state
192
+ * (rivalcfg's `is_charging` lambda, `bool(data[2])`). `data[1]` is present in
193
+ * the response but unused by either rivalcfg lambda. Byte-identical shape to
194
+ * `./rival3-wireless.ts`'s battery decode.
195
+ */
196
+ export function steelseriesRival650DecodeBattery(payload) {
197
+ if (payload.length < RIVAL650_BATTERY_RESPONSE_LENGTH) {
198
+ throw new Rival650ProtocolError("SteelSeries Rival 650 Wireless battery response is shorter than three bytes.");
199
+ }
200
+ return { level: payload[0], isCharging: payload[2] !== 0 };
201
+ }
202
+ /** `buttons_mapping.buttons` from `rival650.py`, id + byte offset into the packet. */
203
+ export const RIVAL650_BUTTONS = {
204
+ button1: { id: 0x01, offset: 0x00 },
205
+ button2: { id: 0x02, offset: 0x05 },
206
+ button3: { id: 0x03, offset: 0x0a },
207
+ button4: { id: 0x04, offset: 0x0f },
208
+ button5: { id: 0x05, offset: 0x14 },
209
+ button6: { id: 0x06, offset: 0x19 },
210
+ /**
211
+ * `"id": 0x00` in the source — collides with `button_disable`, so this
212
+ * button cannot be a valid remap *target* (see module doc comment). It
213
+ * still has its own `offset` and defaults to the `dpi` special action.
214
+ */
215
+ button7: { id: 0x00, offset: 0x1e },
216
+ };
217
+ const RIVAL650_BUTTON_FIELD_LENGTH = 5;
218
+ const RIVAL650_BUTTON_DISABLE = 0x00;
219
+ const RIVAL650_BUTTON_DPI_SWITCH = 0x30;
220
+ const RIVAL650_BUTTON_SCROLL_UP = 0x31;
221
+ const RIVAL650_BUTTON_SCROLL_DOWN = 0x32;
222
+ const RIVAL650_BUTTON_KEYBOARD = 0x51;
223
+ const RIVAL650_BUTTON_MULTIMEDIA = 0x61;
224
+ /**
225
+ * `19` + one 35-byte (`7 buttons × 5-byte field length`) packet, zero-filled
226
+ * except where a mapping is given. Unmapped buttons are left as all-zero
227
+ * fields (rivalcfg instead fills in per-button defaults; this codec leaves
228
+ * that policy to the caller — pass every button explicitly for parity with
229
+ * rivalcfg's default profile).
230
+ */
231
+ export function steelseriesRival650EncodeButtonsMapping(mapping) {
232
+ const names = Object.keys(RIVAL650_BUTTONS);
233
+ const packet = new Array(names.length * RIVAL650_BUTTON_FIELD_LENGTH).fill(0x00);
234
+ for (const [name, action] of Object.entries(mapping)) {
235
+ const slot = RIVAL650_BUTTONS[name];
236
+ if (!slot) {
237
+ throw new Rival650ProtocolError(`Unknown SteelSeries Rival 650 Wireless button "${name}".`);
238
+ }
239
+ const { offset } = slot;
240
+ switch (action.type) {
241
+ case "button": {
242
+ packet[offset] = RIVAL650_BUTTONS[action.target].id;
243
+ break;
244
+ }
245
+ case "disabled": {
246
+ packet[offset] = RIVAL650_BUTTON_DISABLE;
247
+ break;
248
+ }
249
+ case "dpiSwitch": {
250
+ packet[offset] = RIVAL650_BUTTON_DPI_SWITCH;
251
+ break;
252
+ }
253
+ case "scrollUp": {
254
+ packet[offset] = RIVAL650_BUTTON_SCROLL_UP;
255
+ break;
256
+ }
257
+ case "scrollDown": {
258
+ packet[offset] = RIVAL650_BUTTON_SCROLL_DOWN;
259
+ break;
260
+ }
261
+ case "keyboard": {
262
+ if (!Number.isInteger(action.code) || action.code < 0 || action.code > 255) {
263
+ throw new Rival650ProtocolError("Keyboard scan codes must be integers 0–255.");
264
+ }
265
+ packet[offset] = RIVAL650_BUTTON_KEYBOARD;
266
+ packet[offset + 1] = action.code;
267
+ break;
268
+ }
269
+ case "multimedia": {
270
+ if (!Number.isInteger(action.code) || action.code < 0 || action.code > 255) {
271
+ throw new Rival650ProtocolError("Multimedia key codes must be integers 0–255.");
272
+ }
273
+ packet[offset] = RIVAL650_BUTTON_MULTIMEDIA;
274
+ packet[offset + 1] = action.code;
275
+ break;
276
+ }
277
+ default: {
278
+ throw new Rival650ProtocolError("Unsupported SteelSeries Rival 650 Wireless button action.");
279
+ }
280
+ }
281
+ }
282
+ return new Uint8Array([...RIVAL650_COMMAND.buttonsMapping, ...packet]);
283
+ }
284
+ //# sourceMappingURL=rival650.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rival650.js","sourceRoot":"","sources":["../../src/steelseries/rival650.ts"],"names":[],"mappings":"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"}