@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,380 @@
1
+ /**
2
+ * MCHOSE's **second** mouse protocol — the one the A7 V3 generation speaks.
3
+ *
4
+ * Read out of the same M HUB bundle as the A7 V2 codec in `./index.ts`, which
5
+ * carries two complete mouse UIs side by side: an older one driving the V2
6
+ * models and a newer one driving everything in {@link MCHOSE_V3_PRODUCTS}.
7
+ * They share a vendor id and even a usage page, and share nothing else.
8
+ *
9
+ * | | A7 V2 (`./index.ts`) | A7 V3 (this file) |
10
+ * | --- | --- | --- |
11
+ * | transport | feature reports `0x11` / `0x12` | **output report `0x4d`**, replies on the input report |
12
+ * | encoding | every body byte inverted (XOR `0xff`) | plain bytes, XOR checksum |
13
+ * | commands | one byte | **two bytes, little-endian** |
14
+ * | settings | one 64-byte blob (`0x67`) | several focused commands |
15
+ *
16
+ * The framing is a 64-byte frame whose first byte is both the `'M'` magic and
17
+ * the HID report id, so the body that actually goes out over
18
+ * `sendReport(0x4d, body)` is the remaining 63 bytes — which is what every
19
+ * function here encodes and decodes:
20
+ *
21
+ * ```
22
+ * frame[0] = 0x4d report id, not part of the body
23
+ * body[0] = 0x01 protocol version
24
+ * body[1] = flags 1 when a trailing checksum is present
25
+ * body[2] = data length
26
+ * body[3] = command low byte
27
+ * body[4] = command high byte
28
+ * body[5] = business code
29
+ * body[6] = sequence
30
+ * body[7…] = data, then the checksum at body[7 + length]
31
+ * ```
32
+ *
33
+ * The checksum is an XOR of `body[1]` through `body[6 + length]`.
34
+ *
35
+ * The **decoders** are confirmed against a real A7 V3 Ultra+; the framing that
36
+ * carries them is therefore confirmed too, since the mouse answered these
37
+ * frames. The **encoders below them have never been sent to a device.** Every
38
+ * write in this protocol replaces a whole block, so each one takes a structure
39
+ * a caller has just read back rather than a set of changes — see the Writes
40
+ * section and docs/mchose-protocol.md.
41
+ */
42
+ /** Output report the whole V3 command set rides on; also the `'M'` magic. */
43
+ export declare const MCHOSE_V3_REPORT_ID = 77;
44
+ /** Full frame including the report id. The body sent over WebHID is one less. */
45
+ export declare const MCHOSE_V3_FRAME_LENGTH = 64;
46
+ export declare const MCHOSE_V3_BODY_LENGTH: number;
47
+ /**
48
+ * The V3 config channel sits on the **same collection as the V2's** — the
49
+ * vendor's own WebHID filters ask for `0xff01`/`0x0001` for both generations.
50
+ * Spelled out rather than imported from `./index.ts` to keep the two codecs
51
+ * free of a circular import; they are the same numbers because the hardware
52
+ * uses the same numbers, not because one derives from the other.
53
+ */
54
+ export declare const MCHOSE_V3_USAGE_PAGE = 65281;
55
+ export declare const MCHOSE_V3_USAGE = 1;
56
+ /**
57
+ * Command ids, little-endian in the frame. The `0x00xx` block is settings and
58
+ * the `0x09xx` block is device-level; a write is its read plus `0x0100`.
59
+ */
60
+ export declare const MCHOSE_V3_COMMAND: {
61
+ /** Button assignments for one profile: `[profileIndex, 0, buttonCount]`. */
62
+ readonly readButtons: 1;
63
+ /** Profile, DPI/rate indices, sleep, sensor flags, debounce: `[]`. */
64
+ readonly readSettings: 2;
65
+ /** DPI stage table for one axis: `[profileIndex, axis]`. */
66
+ readonly readDpi: 3;
67
+ /** Lift-off index, on models that keep it outside the sensor byte. */
68
+ readonly readLiftOff: 9;
69
+ /** Identity and power: vendor/product id, charge state, battery. */
70
+ readonly readDeviceInfo: 2304;
71
+ /** Firmware version, returned as a hex string the vendor trims. */
72
+ readonly readVersion: 2305;
73
+ /** Macro storage, read 22 bytes at a time. */
74
+ readonly readMacro: 2316;
75
+ readonly writeButtons: 257;
76
+ readonly writeSettings: 258;
77
+ readonly writeDpi: 259;
78
+ /** One stage without rewriting the table: `[profile, stage, axis, dpi u16]`. */
79
+ readonly writeSingleDpi: 260;
80
+ /** Factory reset, whole device or one profile. */
81
+ readonly reset: 261;
82
+ readonly writeLiftOff: 265;
83
+ };
84
+ /**
85
+ * Physical buttons, in the fixed order the button commands walk them. Matches
86
+ * the V2 vocabulary in `./buttons.ts` apart from the vendor's own spelling.
87
+ */
88
+ export declare const MCHOSE_V3_BUTTONS: readonly ["Left", "Right", "Middle", "Forward", "Back", "DPI"];
89
+ export interface MchoseV3FrameOptions {
90
+ /** Defaults to 1, which appends the checksum. */
91
+ flags?: number;
92
+ bizCode?: number;
93
+ sequence?: number;
94
+ }
95
+ /**
96
+ * Build the 63-byte body for `sendReport(MCHOSE_V3_REPORT_ID, body)`.
97
+ *
98
+ * Throws rather than silently truncating: a command whose data does not fit
99
+ * would otherwise go out with a valid checksum over the wrong bytes.
100
+ */
101
+ export declare function mchoseV3Encode(command: number, data?: readonly number[], options?: MchoseV3FrameOptions): Uint8Array<ArrayBuffer>;
102
+ /** Command id carried by a reply body, or null if it is too short to hold one. */
103
+ export declare function mchoseV3ReplyCommand(body: Uint8Array): number | null;
104
+ /**
105
+ * Data slice of a reply, or null when the frame is malformed or answers a
106
+ * different command.
107
+ *
108
+ * The vendor's own reader trusts the command id alone and never checks the
109
+ * checksum. This does check it, but only when the reply claims to carry one:
110
+ * a reply with other flags is accepted on its command id, the way M HUB
111
+ * accepts it.
112
+ */
113
+ export declare function mchoseV3Payload(body: Uint8Array, command: number): Uint8Array | null;
114
+ export interface MchoseV3DeviceInfo {
115
+ vendorId: number;
116
+ /**
117
+ * **Not a model id**, despite looking like one: an A7 V3 Ultra+ reports
118
+ * `0x4026`, which MCHOSE's own table lists against the A5 V3 Ultra+. Use
119
+ * {@link mchoseV3FindProduct}, which prefers the USB product string.
120
+ */
121
+ productId: number;
122
+ /** Onboard profile count. */
123
+ profileCount: number;
124
+ macroSaveType: number;
125
+ shareMacroDataSize: number;
126
+ macroUnitSize: number;
127
+ /** 0 when the mouse is not on the air; the receiver still answers. */
128
+ connectStatus: number;
129
+ chargeStatus: number;
130
+ batteryPercent: number;
131
+ /** Performance mode, mirrored out of the sensor byte's low bits. */
132
+ gameMode: number;
133
+ }
134
+ /** `0x0900` — identity and power. This is how a model is resolved. */
135
+ export declare function mchoseV3DecodeDeviceInfo(data: Uint8Array): MchoseV3DeviceInfo | null;
136
+ /**
137
+ * The firmware's polling table has a slot M HUB never offers, so a stored rate
138
+ * index is not an index into the model's rate list. The vendor maps around it
139
+ * in both directions; these two are those maps.
140
+ *
141
+ * Device slot 1 is the hidden one — it reads back as option 1 but is never
142
+ * written, which is what makes the pair asymmetric.
143
+ */
144
+ export declare function mchoseV3RateIndexToOption(deviceIndex: number): number;
145
+ export declare function mchoseV3OptionToRateIndex(optionIndex: number): number;
146
+ export interface MchoseV3Settings {
147
+ profileIndex: number;
148
+ /** Active DPI stage, shared by both links. */
149
+ dpiIndex: number;
150
+ /** Option indices into the model's rate list, already mapped off the wire. */
151
+ wiredRateIndex: number;
152
+ wirelessRateIndex: number;
153
+ /** Auto-sleep in minutes; 0 disables it. */
154
+ sleep: number;
155
+ sleepMode: number;
156
+ /** Packed flags — see {@link mchoseV3DecodeSensor}. */
157
+ sensor: number;
158
+ /** Signed −30…+30 rotation, two's complement on the wire. */
159
+ angleTuning: number;
160
+ leftDebounceMs: number;
161
+ rightDebounceMs: number;
162
+ /**
163
+ * Everything past the nine fields above, kept verbatim so a write can put it
164
+ * back untouched.
165
+ *
166
+ * M HUB pads this with ten zero bytes, but a real A7 V3 Ultra+ returns ten
167
+ * bytes of `0x08` here — the same value sitting in both debounce fields, so
168
+ * these are most likely the remaining buttons' debounce. Writing the
169
+ * vendor's zeros would quietly set them all to 0. Nothing here knows what
170
+ * they are, which is exactly why they are carried through rather than
171
+ * invented.
172
+ */
173
+ extra: number[];
174
+ }
175
+ /** `0x0002` — the settings the V2 kept in its one big config blob. */
176
+ export declare function mchoseV3DecodeSettings(data: Uint8Array): MchoseV3Settings | null;
177
+ /**
178
+ * Encode the settings block back. Every field is required because the command
179
+ * replaces the whole block — there is no read-modify-write on the device side,
180
+ * so a caller must pass a freshly read {@link MchoseV3Settings} with its edits
181
+ * applied rather than a partial object.
182
+ */
183
+ export declare function mchoseV3EncodeSettings(settings: MchoseV3Settings): number[];
184
+ /**
185
+ * Sensor byte layout — **note that it is not the V2's**. The V2 puts lift-off
186
+ * in bits 0-1 and the performance mode in bits 6-7; this generation swaps
187
+ * them, and adds a glass-surface flag on the top bit. Getting the two mixed up
188
+ * reads a lift-off level as a power mode.
189
+ */
190
+ export declare const MCHOSE_V3_SENSOR_MODE_MASK = 3;
191
+ export declare const MCHOSE_V3_SENSOR_RIPPLE = 4;
192
+ export declare const MCHOSE_V3_SENSOR_LINEAR = 8;
193
+ export declare const MCHOSE_V3_SENSOR_MOTION_SYNC = 16;
194
+ export declare const MCHOSE_V3_SENSOR_LOD_MASK = 96;
195
+ export declare const MCHOSE_V3_SENSOR_LOD_SHIFT = 5;
196
+ export declare const MCHOSE_V3_SENSOR_GLASS = 128;
197
+ export interface MchoseV3Sensor {
198
+ /** Index into the model's lift-off ladder, for models that keep it here. */
199
+ liftOffIndex: number;
200
+ rippleControl: boolean;
201
+ angleSnapping: boolean;
202
+ motionSync: boolean;
203
+ glassMode: boolean;
204
+ /** Index into {@link MCHOSE_V3_MODES}. */
205
+ modeIndex: number;
206
+ }
207
+ export declare function mchoseV3DecodeSensor(sensor: number): MchoseV3Sensor;
208
+ /** Same three-way choice the V2 offers, in the same order. */
209
+ export declare const MCHOSE_V3_MODES: readonly ["Performance", "eSports", "Ultra"];
210
+ export interface MchoseV3Dpi {
211
+ profileIndex: number;
212
+ /** 0 for X, 1 for Y. */
213
+ axis: number;
214
+ /** Stages the mouse cycles through. */
215
+ stageCount: number;
216
+ activeStage: number;
217
+ /** Whether this model stores a separate Y-axis table at all. */
218
+ hasSeparateY: boolean;
219
+ /** Six stages, whatever `stageCount` says is live. */
220
+ stages: number[];
221
+ }
222
+ export declare const MCHOSE_V3_DPI_STAGES = 6;
223
+ /** `0x0003` — one axis of the DPI table. */
224
+ export declare function mchoseV3DecodeDpi(data: Uint8Array): MchoseV3Dpi | null;
225
+ /** `0x0009` — lift-off on the models that moved it out of the sensor byte. */
226
+ export declare function mchoseV3DecodeLiftOff(data: Uint8Array): number | null;
227
+ export interface MchoseV3ButtonAssignment {
228
+ type: number;
229
+ /** Raw value bytes, most significant first. */
230
+ value: number[];
231
+ }
232
+ /**
233
+ * `0x0001` — the button table, which is a variable-width walk rather than a
234
+ * fixed record: each entry's width depends on the type byte in front of it.
235
+ *
236
+ * Returns null if the walk would run past the payload, so a short or stale
237
+ * reply is rejected instead of yielding half a table.
238
+ */
239
+ export declare function mchoseV3DecodeButtons(data: Uint8Array): Record<string, MchoseV3ButtonAssignment> | null;
240
+ export interface MchoseV3Product {
241
+ name: string;
242
+ /** The mouse's own product id, reported by `0x0900`. */
243
+ productId: number;
244
+ dpiMax: number;
245
+ /** Lift-off steps in millimetres, in firmware index order. */
246
+ liftOffDistances: readonly number[];
247
+ maxPollingRate: number;
248
+ /**
249
+ * True when lift-off lives behind `0x0009` instead of the sensor byte. The
250
+ * five-step models need it: three bits of ladder do not fit in the sensor
251
+ * byte's two.
252
+ */
253
+ liftOffCommand: boolean;
254
+ }
255
+ /**
256
+ * Every model on this protocol, from the bundle's own table. The A7 V3 family
257
+ * is what this was written for; the rest share the wire format and the same
258
+ * receivers, so leaving them out would mean resolving one of them to the wrong
259
+ * DPI ceiling rather than not claiming it at all.
260
+ */
261
+ export declare const MCHOSE_V3_PRODUCTS: readonly MchoseV3Product[];
262
+ /**
263
+ * Receivers, shared across the whole generation — which is exactly why a model
264
+ * cannot be resolved from the host-facing product id and `0x0900` has to be
265
+ * asked. `receiver1k` serves the two 1000 Hz models.
266
+ */
267
+ export declare const MCHOSE_V3_LINK_PRODUCT_IDS: {
268
+ readonly receiver: 4116;
269
+ readonly receiver8k: 4120;
270
+ readonly receiver1k: 4118;
271
+ };
272
+ /**
273
+ * Every product id this protocol answers on: the mice over their own cable,
274
+ * plus the receivers. The V2 driver subtracts this set from its own match, so
275
+ * anything added here has to be a V3 device.
276
+ */
277
+ export declare const MCHOSE_V3_PRODUCT_IDS: readonly number[];
278
+ export declare function mchoseV3IsProductId(productId: number): boolean;
279
+ /** Rate lists the firmware exposes, keyed by the model's maximum. */
280
+ export declare const MCHOSE_V3_POLLING_RATES: Readonly<Record<number, readonly number[]>>;
281
+ /**
282
+ * Resolve a model, **preferring the USB product string over the id `0x0900`
283
+ * reports**. An unrecognised device yields null rather than a wrong DPI ceiling.
284
+ *
285
+ * The id ordering is the opposite of the A7 V2's, and deliberately so. On the
286
+ * V2, the id inside the battery reply is decisive because the host-facing id is
287
+ * shared. Here that reasoning does not hold: a capture from a real **A7 V3
288
+ * Ultra+** has `0x0900` reporting `0x4026`, which this table — and MCHOSE's own
289
+ * — lists against the *A5 V3 Ultra+*. Trusting it named the wrong mouse and,
290
+ * through it, handed out a 42,000 DPI ceiling and a three-step lift-off ladder
291
+ * to a 50,000 DPI five-step model.
292
+ *
293
+ * Whatever `0x0900` byte 2 is — a sensor or platform id, shared across shells —
294
+ * it is not a model id. M HUB agrees: every model lookup in the vendor bundle
295
+ * keys off `navigator.device.productName`, never off this field. The id is kept
296
+ * only as a fallback for a device whose product string says nothing useful.
297
+ */
298
+ export declare function mchoseV3FindProduct(mouseProductId: number | null, productName?: string | null): MchoseV3Product | null;
299
+ /** Polling rates available to a model. */
300
+ export declare function mchoseV3PollingRates(product: MchoseV3Product): readonly number[];
301
+ /** Lift-off labels, matching the ladder the model actually has. */
302
+ export declare function mchoseV3LiftOffLabels(product: MchoseV3Product): string[];
303
+ /**
304
+ * Position a lift-off index on the shell's three-stop Low/Medium/High scale.
305
+ *
306
+ * The five-step models do not fit that scale, so this buckets them: the lowest
307
+ * step is Low, the highest is High, everything in between is Medium. The exact
308
+ * millimetre figure is the thing actually worth reporting and it survives in
309
+ * {@link mchoseV3LiftOffLabels}; this is only what the shared status field can
310
+ * carry.
311
+ */
312
+ export declare function mchoseV3LiftOffStop(product: MchoseV3Product, index: number): "Low" | "Medium" | "High" | null;
313
+ /** DPI bounds. The vendor's own slider starts at 200 and steps in 50s. */
314
+ export declare const MCHOSE_V3_DPI_MIN = 200;
315
+ export declare const MCHOSE_V3_DPI_STEP = 50;
316
+ /** The firmware takes 0-20 ms, the same window as the A7 V2's. */
317
+ export declare const MCHOSE_V3_DEBOUNCE_MAX_MS = 20;
318
+ /** Auto-sleep in minutes, where 0 means never. */
319
+ export declare const MCHOSE_V3_SLEEP_MAX_MINUTES = 60;
320
+ export declare const MCHOSE_V3_ANGLE_TUNING_MIN = -30;
321
+ export declare const MCHOSE_V3_ANGLE_TUNING_MAX = 30;
322
+ /**
323
+ * Round a DPI to something the firmware stores exactly, and refuse anything
324
+ * outside the model's range rather than clamping — a silently clamped value
325
+ * reads back as a mismatch and looks like a protocol fault.
326
+ */
327
+ export declare function mchoseV3RoundDpi(dpi: number, product: MchoseV3Product): number;
328
+ /**
329
+ * Validate a settings block before it goes near the wire. The block is written
330
+ * whole, so one bad field would be written alongside eight good ones.
331
+ */
332
+ export declare function mchoseV3CheckSettings(settings: MchoseV3Settings): void;
333
+ /**
334
+ * Rewrite the sensor byte, changing only the named fields and **preserving
335
+ * every bit this codec does not claim**. The A7 V2 taught this the hard way:
336
+ * its bit 5 was never explained, and assigning the byte rather than masking it
337
+ * would have cleared whatever it meant.
338
+ */
339
+ export declare function mchoseV3EncodeSensor(current: number, changes: Partial<Omit<MchoseV3Sensor, "liftOffIndex">> & {
340
+ liftOffIndex?: number;
341
+ }): number;
342
+ /**
343
+ * `0x0103` — the whole DPI table for one axis. Six stages go out every time,
344
+ * so the untouched ones must be the values just read back.
345
+ */
346
+ export declare function mchoseV3EncodeDpiTable(dpi: MchoseV3Dpi, product: MchoseV3Product): number[];
347
+ /** `0x0104` — one stage, without rewriting the table around it. */
348
+ export declare function mchoseV3EncodeSingleDpi(profileIndex: number, stage: number, axis: number, dpi: number, product: MchoseV3Product): number[];
349
+ /** `0x0109` — lift-off on the models that keep it outside the sensor byte. */
350
+ export declare function mchoseV3EncodeLiftOff(profileIndex: number, index: number, product: MchoseV3Product): number[];
351
+ /**
352
+ * `0x0101` — the button table, written whole in the same variable-width shape
353
+ * it is read in. Every button goes out, so the ones not being changed must be
354
+ * the assignments just read back.
355
+ */
356
+ export declare function mchoseV3EncodeButtons(profileIndex: number, buttons: Readonly<Record<string, MchoseV3ButtonAssignment>>): number[];
357
+ /** Sleep timeouts the panel offers, in seconds; 0 is "never". */
358
+ export declare const MCHOSE_V3_SLEEP_OPTIONS: readonly number[];
359
+ export * from "./v3-buttons.ts";
360
+ /**
361
+ * A reply the firmware sends to refuse a command outright: command id `0x0000`
362
+ * with the checksum flag clear and `0xff` in the sequence byte. It is not a
363
+ * malformed frame and not noise — an A7 V3 Ultra+ answers `0x0901` with one,
364
+ * about a second after the request, every time.
365
+ *
366
+ * Worth recognising because the alternative is spending the whole retry budget
367
+ * waiting for an answer that has already arrived.
368
+ */
369
+ export declare function mchoseV3IsRejection(body: Uint8Array): boolean;
370
+ /**
371
+ * A one-byte `0xff` payload, which means "ask again" rather than carrying data.
372
+ * A receiver whose mouse is not currently reachable answers `0x0900` with it.
373
+ *
374
+ * M HUB's own retry helper loops while the first payload byte is `0xff`. This
375
+ * is stricter — it requires the payload to be *only* that byte — because a
376
+ * button table legitimately starts with `0xff` when the first button carries no
377
+ * assignment, and the vendor's looser test would reject that as busy.
378
+ */
379
+ export declare function mchoseV3IsBusy(payload: Uint8Array): boolean;
380
+ //# sourceMappingURL=v3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3.d.ts","sourceRoot":"","sources":["../../src/mchose/v3.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,KAAO,CAAC;AAExC,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,qBAAqB,QAA6B,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,eAAe,IAAS,CAAC;AActC;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC5B,4EAA4E;;IAE5E,sEAAsE;;IAEtE,4DAA4D;;IAE5D,sEAAsE;;IAEtE,oEAAoE;;IAEpE,mEAAmE;;IAEnE,8CAA8C;;;;;IAM9C,gFAAgF;;IAEhF,kDAAkD;;;CAG1C,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,iBAAiB,gEAAiE,CAAC;AAShG,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,SAAS,MAAM,EAAO,EAC5B,OAAO,GAAE,oBAAyB,GACjC,UAAU,CAAC,WAAW,CAAC,CAqBzB;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CASpF;AAKD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAcpF;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAiBhF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAoB3E;AAKD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,IAAO,CAAC;AAC/C,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAC5C,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAC5C,eAAO,MAAM,4BAA4B,KAAO,CAAC;AACjD,eAAO,MAAM,yBAAyB,KAAO,CAAC;AAC9C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CASnE;AAED,8DAA8D;AAC9D,eAAO,MAAM,eAAe,8CAA+C,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,YAAY,EAAE,OAAO,CAAC;IACtB,sDAAsD;IACtD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CActE;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAGrE;AAmBD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,GACf,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,IAAI,CAgBjD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAMD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAexD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;;;;CAI7B,CAAC;AAIX;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAG/E,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,eAAe,GAAG,IAAI,CAUxB;AAED,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAEhF;AAED,mEAAmE;AACnE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAExE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,MAAM,GACZ,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAMlC;AAQD,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAQ7C;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAI9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAatE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACjF,MAAM,CAwBR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAkB3F;AAED,mEAAmE;AACnE,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,eAAe,GACvB,MAAM,EAAE,CAIV;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,GACvB,MAAM,EAAE,CAGV;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC,GAC1D,MAAM,EAAE,CAmBV;AAGD,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAAsC,CAAC;AAE5F,cAAc,iBAAiB,CAAC;AAEhC;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAI7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAE3D"}