@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,513 @@
1
+ import type { MouseStatus } from "../mouse-types.ts";
2
+ import { type IncottDpiAxis, type IncottFireKey, type IncottMacro } from "../../incott/index.ts";
3
+ type LiftOffLevel = "Low" | "Medium" | "High";
4
+ /**
5
+ * The slice of HIDDevice this layer needs for feature-report exchanges, so
6
+ * tests can supply a fake instead of a real WebHID device. A real HIDDevice
7
+ * satisfies this structurally.
8
+ */
9
+ export interface FeatureTransport {
10
+ sendFeatureReport(reportId: number, data: BufferSource): Promise<void>;
11
+ receiveFeatureReport(reportId: number): Promise<DataView>;
12
+ /**
13
+ * OUTPUT report, used only by the macro upload — every other command in
14
+ * this protocol is an 8-byte FEATURE report. Optional because most
15
+ * transports (and the test fakes that predate macros) have no reason to
16
+ * implement it; `uploadMacro` reports a clear error when it is absent.
17
+ */
18
+ sendReport?(reportId: number, data: BufferSource): Promise<void>;
19
+ }
20
+ export interface IncottTransactionOptions {
21
+ /** Delay between sending a request and reading the response. */
22
+ settleMs?: number;
23
+ /** How many reads to attempt before giving up. */
24
+ attempts?: number;
25
+ sleep?: (ms: number) => Promise<void>;
26
+ }
27
+ /**
28
+ * Serializes feature-report request/response pairs for the Incott protocol.
29
+ *
30
+ * The device exposes a single shared response buffer, so overlapping requests
31
+ * and leftover frames both produce values that belong to a different query —
32
+ * probing the same query three times in separate runs returned three
33
+ * different payloads on real hardware. Every request therefore runs alone,
34
+ * discards whatever was already latched, and accepts a frame only when its
35
+ * command and sub-command echo the request. Ported intact from IncottHub
36
+ * (`src/drivers/incott/transaction.ts`), including the stale-frame regression
37
+ * this exists to prevent — the prior-art Go implementation (IncottHIDApp)
38
+ * matches on the command byte alone and is fooled by exactly this.
39
+ */
40
+ export declare class IncottTransactionQueue {
41
+ private readonly transport;
42
+ private readonly settleMs;
43
+ private readonly attempts;
44
+ private readonly sleep;
45
+ private tail;
46
+ constructor(transport: FeatureTransport, options?: IncottTransactionOptions);
47
+ /**
48
+ * Sends one request and returns the matching response frame, or null when
49
+ * no matching frame arrives. Never rejects: a device that stops answering
50
+ * yields null so the caller can render an em dash instead of a stale value.
51
+ */
52
+ request(payload: Uint8Array, cmd: number, sub: number | null, axis?: number | null): Promise<Uint8Array | null>;
53
+ /**
54
+ * Sends a write, which the device does not answer. Queued alongside
55
+ * requests so ordering holds, but it never reads: waiting for a response
56
+ * that will never arrive would spend the entire attempt budget per write.
57
+ */
58
+ send(payload: Uint8Array): Promise<void>;
59
+ /**
60
+ * Sends a 32-byte OUTPUT report, the macro upload's data path. Queued with
61
+ * everything else so it cannot interleave with the 8-byte header that
62
+ * announces it, and followed by a settle delay because the vendor waits
63
+ * 80 ms between the two halves of each chunk.
64
+ */
65
+ sendOutput(reportId: number, payload: Uint8Array): Promise<void>;
66
+ private exchange;
67
+ private read;
68
+ }
69
+ /**
70
+ * Sends the identity query (`09 8f 00`) directly against a transport and
71
+ * checks for a well-formed reply — byte 0 the report id (`0x09`), byte 1 the
72
+ * echoed command (`0x8f`). Never throws: a transport whose `sendFeatureReport`
73
+ * rejects, or that answers with something else entirely, both resolve to
74
+ * `false` (via `IncottTransactionQueue`'s own catch-and-return-null path),
75
+ * exactly like a device that is not there.
76
+ *
77
+ * WHY THIS EXISTS (BUG, hardware-verified 2026-09-08): wired, the mouse
78
+ * exposes TWO top-level collections on usage page `0xFF05` on the same
79
+ * interface — identical as far as vendor/product id and usage page go — but
80
+ * only one of them actually answers feature reports. The other rejects every
81
+ * one at the OS level (`HidD_SetFeature: (0x00000001) Incorrect function` on
82
+ * Windows). Usage page alone cannot tell them apart; only sending something
83
+ * and checking for a real reply can. See `incottSelectCollection` for the
84
+ * ordered probe-and-pick algorithm this backs, and the comment on
85
+ * `IncottHidClient.open()` for why a WebHID-based client can only apply this
86
+ * to the single collection it was handed, not choose between two.
87
+ */
88
+ export declare function incottProbeCollection(transport: FeatureTransport, options?: IncottTransactionOptions): Promise<boolean>;
89
+ /**
90
+ * Picks the first candidate transport whose collection actually answers the
91
+ * identity probe, trying candidates in the given order and moving on to the
92
+ * next one when a candidate throws, never replies, or replies with garbage.
93
+ * Returns `null` when no candidate answers.
94
+ *
95
+ * Candidates must be pre-ordered by the CALLER, most likely first — this
96
+ * function only probes in the order it is given, it does not itself inspect
97
+ * usage pages. This is the general form of the wired dead-collection fix
98
+ * (see `incottProbeCollection`): a transport layer that genuinely has more
99
+ * than one candidate to try (for example a Node-hid-based tool with access
100
+ * to every top-level collection's own path) can use this directly. WebHID
101
+ * cannot: it hands `IncottHidClient` exactly one `HIDDevice` per collection,
102
+ * already chosen by the browser's picker/filters before this driver ever
103
+ * sees it, so `IncottHidClient.open()` uses `incottProbeCollection` on
104
+ * itself instead of calling this with more than one candidate.
105
+ */
106
+ export declare function incottSelectCollection<T extends FeatureTransport>(candidates: readonly T[], options?: IncottTransactionOptions): Promise<T | null>;
107
+ /**
108
+ * WebHID client for the Incott protocol (vendor 0x093A, products 0x522C /
109
+ * 0x622C). Ported from IncottHub, adapted to mouse-protocol's driver
110
+ * interface: the client owns `device`, `open()` and `close()` directly
111
+ * instead of taking an externally-managed transport, matching every other
112
+ * driver in this registry.
113
+ *
114
+ * FOUR bugs fixed 2026-09-08 from an owner's hardware probes in BOTH wireless
115
+ * and wired modes (see `docs/incott-testing.md`):
116
+ *
117
+ * 1. WIRED MODE WAS COMPLETELY BROKEN. The wired mouse exposes two
118
+ * identical-looking `0xFF05` collections; only one answers feature
119
+ * reports, and usage page alone cannot tell them apart. See `open()`'s
120
+ * identity probe and `incottProbeCollection`/`incottSelectCollection`.
121
+ * 2. `0x622C` means the connection is WIRED, not "charging" — charging is
122
+ * a consequence of being plugged in, not what the id encodes. See
123
+ * `incottIsWiredProduct` (renamed from `incottIsChargingProduct`) and
124
+ * `MouseStatus.connectionType` below.
125
+ * 3. The polling-rate ceiling depends on the connection: the full
126
+ * 125-8000 Hz ladder is wireless-only, and the mouse only reaches
127
+ * 1000 Hz over the cable — see `INCOTT_POLLING_STEPS_HZ_WIRED`.
128
+ * 4. The real model name ("Esports G23V2Pro") is only in the WIRED product
129
+ * string; wireless reports a generic name with no model in it at all.
130
+ * See `incottNormalizeProductName`.
131
+ *
132
+ * Polling rate (0x81) is verified readable on hardware, but `readStatus()`
133
+ * must not throw (see the write-a-driver doc): when it cannot be read after
134
+ * the transaction queue's full retry budget, the client falls back to an
135
+ * identity-only status — real `name`, `brand`, and whatever else was
136
+ * genuinely readable — with `ui.settingsReady: false` and
137
+ * `ui.valuesVerified: false` so the app hides the settings grid instead of
138
+ * rendering fabricated values. `MouseStatus.pollingRateHz` is non-nullable,
139
+ * so the degraded path still assigns it a number; see the comment at that
140
+ * assignment for why that is not a fabricated reading.
141
+ *
142
+ * DPI USED to have no known read-back at all; that changed 2026-09-08. DPI
143
+ * lives in a six-stage table (see `INCOTT_DPI_STAGE_COUNT` in
144
+ * `src/incott/index.ts`) with FOUR independent operations, not one:
145
+ *
146
+ * which stage is active read: `0x83`/`0x06` write: `0x03`/`0x06 <idx>`
147
+ * what a stage holds read: `0x82`/`<stage>` write: `0x02 <stage> <lo> <hi>`
148
+ *
149
+ * `readStatus()` reads which stage is active (`incottDecodeDpiStageIndex`)
150
+ * and every one of the six stages' stored values (`incottDecodeDpiStage`),
151
+ * populating `dpiStages`/`activeDpiStage` for OpenMouse's shared multi-stage
152
+ * DPI editor (`MouseUiHints.dpiStageEditor`) and deriving `dpi` as the active
153
+ * stage's own value — a genuine live read, not a write cache.
154
+ *
155
+ * `setActiveDpiStage()` and `setDpiStageValue()` map onto the select and edit
156
+ * operations above respectively, matching OpenMouse's existing generic
157
+ * contract (`requireClientMethod` in `openmouse/src/device/controller.ts`).
158
+ * `setDpi()` is kept for the plain preset row and is defined as "set the
159
+ * ACTIVE stage's value" — i.e. it is exactly `setDpiStageValue` at whichever
160
+ * stage is currently active — since that is the only meaning left for it now
161
+ * that a real select operation exists.
162
+ *
163
+ * A SECOND DPI BUG, found from an owner report and fixed the same day
164
+ * (2026-09-08): `setDpi()` used to be the *only* way to touch DPI, so the app
165
+ * called it every time the user picked a value from the plain preset row —
166
+ * indistinguishable, from the user's point of view, from "select the stage
167
+ * that already holds this value." It never did that: it read the active
168
+ * stage and overwrote *that* stage's stored value with whatever was picked,
169
+ * one stage at a time destroying the mouse's factory-programmed table.
170
+ * (IncottHIDApp's own `0x03`/`0x06` write — which that project mislabels "set
171
+ * DPI" — is actually the active-stage SELECT and never touches the table;
172
+ * see `INCOTT_CMD_SET_DPI_STAGE` in `src/incott/index.ts`.) Wiring
173
+ * `dpiStages`/`activeDpiStage`/`dpiStageEditor` here gives the app a real
174
+ * select control (`setActiveDpiStage`) so `setDpi` is no longer asked to do a
175
+ * select's job.
176
+ *
177
+ * `valuesVerified` is true once both the polling-rate query and the active
178
+ * stage's DPI read have answered — see `readStatus()`.
179
+ *
180
+ * A FIFTH bug, fixed 2026-09-08: battery used to be read from the `0x8e`
181
+ * feature-report reply, byte 6. Charging a unit through a full cycle (roughly
182
+ * 60% to roughly 97%) while polling that reply showed byte 6 never move at
183
+ * all — a constant, not a live reading, the same failure mode `0x89` byte 8
184
+ * suffered before it (see `INCOTT_CMD_QUERY_BATTERY` in
185
+ * `src/incott/index.ts`). The real battery level lives in an UNSOLICITED
186
+ * INPUT report the mouse emits on report id 0x09 while it is actively being
187
+ * used — see `onInputReport` below and `incottDecodeInputStatus`. The device
188
+ * only emits these while in use, so `readStatus()` reports `batteryPercent:
189
+ * null` / `batteryState: "Unknown"` until the first one arrives; nothing here
190
+ * fabricates a number or falls back to the disproven feature-report bytes.
191
+ * `batteryState`'s charging flag comes from the report's own high bit
192
+ * (`raw > 100`), not from the product id: `incottIsWiredProduct` (0x622C)
193
+ * still means the CONNECTION is wired, which is what `connectionType` below
194
+ * uses, and being wired does imply charging in practice, but the input report
195
+ * is the authoritative source for the charging state, not an inference from
196
+ * the product id.
197
+ *
198
+ * A SIXTH addition, 2026-09-10: performance mode (HP/Corded/LP) is now wired
199
+ * into OpenMouse's shared `powerModes`/`powerMode`/`setPowerMode` contract.
200
+ * The value-to-label mapping was hardware-confirmed by labelling every click
201
+ * in the vendor tool before recording its write — see `getPowerModes`,
202
+ * `setPowerMode`, and `INCOTT_SUB_PERFORMANCE` in `src/incott/index.ts` for
203
+ * the capture and the REVERSED-vs-UI warning (HP=2, Corded=1, LP=0). `readStatus()`
204
+ * populates `powerMode` from a live `0x84`/`0x05` read, leaving it `undefined`
205
+ * (never fabricated) when the collection is dead or the read fails.
206
+ */
207
+ export declare class IncottHidClient {
208
+ readonly device: HIDDevice;
209
+ private readonly queue;
210
+ /**
211
+ * Cached decode of the mouse's unsolicited input report (battery plus a
212
+ * packed DPI-stage/polling-rate snapshot) — see `onInputReport` and the
213
+ * class comment's battery section. `null` until the first report arrives
214
+ * (the mouse only emits them while actively in use), which is exactly when
215
+ * `readStatus()` must report `batteryPercent: null` / `batteryState:
216
+ * "Unknown"` rather than a fabricated value.
217
+ */
218
+ private lastInputStatus;
219
+ /**
220
+ * Whether `open()`'s identity probe got a well-formed reply from the
221
+ * collection WebHID handed this client. `null` until `open()` runs (every
222
+ * unit test that skips `open()` and calls `readStatus()` directly keeps
223
+ * this `null`, so it behaves exactly as before this field existed);
224
+ * `false` means this specific collection is the wired mouse's dead
225
+ * look-alike (see the class comment and `open()`).
226
+ */
227
+ private collectionVerified;
228
+ constructor(device: HIDDevice, options?: IncottTransactionOptions);
229
+ /**
230
+ * Decodes the mouse's unsolicited input report and caches the result for
231
+ * `readStatus()` — see the class comment's battery section and
232
+ * `incottDecodeInputStatus` in `src/incott/index.ts`.
233
+ *
234
+ * BYTE-INDEX CONVENTION: WebHID's `inputreport` event carries `reportId`
235
+ * separately from `data`, and `data` EXCLUDES the report id — unlike this
236
+ * driver's feature-report frames, which include it because
237
+ * `receiveFeatureReport` returns it at byte 0 (see the top-of-file comment
238
+ * in `src/incott/index.ts` for that asymmetry, which this mirrors). So
239
+ * `event.data.getUint8(0)`/`getUint8(1)` are this report's bytes 1/2 in
240
+ * node-hid terms — node-hid's raw buffer includes the report id at index 0,
241
+ * which is how `captures/incott-8k-wireless/input-report-battery.hex` is
242
+ * indexed. Get this backwards and every field reads off by one byte.
243
+ *
244
+ * Filtered to report id `INCOTT_INPUT_REPORT_ID` (0x09): the mouse's other
245
+ * HID collections (mouse/keyboard boot reports, etc.) are not this vendor
246
+ * collection's traffic and must not be mistaken for it.
247
+ */
248
+ private readonly onInputReport;
249
+ /**
250
+ * Usage page alone cannot tell the wired mouse's two look-alike `0xFF05`
251
+ * collections apart (see the class comment and `open()`), so this stays
252
+ * permissive on purpose: it accepts ANY device on a vendor-defined usage
253
+ * page with a matching product id, including the one that turns out to be
254
+ * the dead collection. Rejecting it here would also reject the live one,
255
+ * since WebHID hands this method one collection at a time and both look
256
+ * identical from `vendorId`/`productId`/`usagePage` alone. The actual
257
+ * distinction is made by probing after `open()` — see `open()` and
258
+ * `readStatus()`'s graceful degradation when the probe fails.
259
+ */
260
+ static isSupported(device: HIDDevice): boolean;
261
+ /**
262
+ * WebHID request filters for the vendor collection, one per product id —
263
+ * both the wireless dongle's `0x522C` (`INCOTT_PRODUCT_ID`) and the wired
264
+ * `0x622C` (`INCOTT_PRODUCT_ID_WIRED`), hardware-verified 2026-09-08, so
265
+ * the picker offers the mouse in either mode.
266
+ */
267
+ static get filters(): HIDDeviceFilter[];
268
+ /**
269
+ * The real writable range: 50-45000 DPI in steps of 50 (see `INCOTT_DPI_MIN`
270
+ * in `src/incott/index.ts`), returned densely so the shell's custom-DPI
271
+ * entry (which validates by exact membership, not by snapping to a nearby
272
+ * value) accepts any value in range — the same pattern already used for
273
+ * Razer's Viper V4 Pro (`100-50,000 in 50-DPI increments`) and for
274
+ * Zaunkoenig and Finalmouse. This is deliberately NOT
275
+ * `INCOTT_DPI_DEFAULT_STAGE_PRESETS` (the six round numbers the vendor
276
+ * calls default stage presets) — that list is too sparse for the shell to
277
+ * let a user dial in, say, 12000 DPI, which this mouse genuinely supports.
278
+ */
279
+ getDpiOptions(): number[];
280
+ /** The vendor's six default DPI stage presets — a convenience list, not the writable range. See `INCOTT_DPI_DEFAULT_STAGE_PRESETS`. */
281
+ getDpiDefaultStagePresets(): number[];
282
+ /** Longest debounce the firmware accepts, in milliseconds (verified: section 8 of the IncottHub spec). */
283
+ getDebounceMaxMs(): number;
284
+ /** The firmware accepts any integer 0-30 ms, so every value in range is offered. */
285
+ getDebounceOptions(): number[];
286
+ /** Curated presets within the verified 1-900s sleep-timer range; see INCOTT_SLEEP_OPTIONS. */
287
+ getSleepOptions(): number[];
288
+ /**
289
+ * Opens the device, then PROBES it with the identity query before trusting
290
+ * it for anything else — see `incottProbeCollection`.
291
+ *
292
+ * WIRED-MODE BUG, hardware-verified 2026-09-08: the wired mouse exposes
293
+ * two `0xFF05` collections on the same interface that are indistinguishable
294
+ * by vendor id, product id, or usage page; only one of them answers
295
+ * feature reports at all (the other fails every `HidD_SetFeature` call at
296
+ * the OS level). WebHID hands this client exactly ONE `HIDDevice`, already
297
+ * chosen by the browser's picker/filters before this driver ever sees
298
+ * it — a WebHID `HIDDevice` corresponds to a single collection, so there is
299
+ * no second candidate here for this method to fall back to the way
300
+ * `incottSelectCollection` can for a transport with real alternatives. All
301
+ * `open()` CAN do in the browser is find out, immediately and cheaply,
302
+ * whether the one collection it got is the live one.
303
+ *
304
+ * This never throws on a dead collection — it records the result in
305
+ * `collectionVerified` instead. `readStatus()` checks that flag and skips
306
+ * straight to a fully degraded, `ui.settingsReady: false` status (see
307
+ * there) rather than burning the full retry budget on roughly a dozen
308
+ * queries that a collection already known to be dead cannot answer either.
309
+ *
310
+ * Also attaches `onInputReport` (see the class comment's battery section):
311
+ * the mouse's battery lives only in an unsolicited input report it emits
312
+ * while actively in use, and WebHID delivers those solely as `inputreport`
313
+ * events on the device — there is no way to poll for one, so the listener
314
+ * must be attached here, before the device is ever read, or an in-use
315
+ * report could arrive and be missed before anything is listening.
316
+ */
317
+ open(): Promise<void>;
318
+ close(): Promise<void>;
319
+ readStatus(): Promise<MouseStatus>;
320
+ /**
321
+ * Sets the ACTIVE stage's stored DPI value — the only sane meaning left for
322
+ * a plain "set DPI" call now that a real stage-select operation exists (see
323
+ * `setActiveDpiStage` below and the class comment's account of the bug this
324
+ * used to have). This is exactly `setDpiStageValue(activeStage, dpi)`;
325
+ * confirms the write by reading that stage back, the same pattern every
326
+ * other setter in this client uses. Range/step are validated up front,
327
+ * before any device round-trip, so an invalid value never costs the query
328
+ * needed to find the active stage.
329
+ */
330
+ setDpi(dpi: number): Promise<number>;
331
+ /**
332
+ * Sets both DPI axes on the ACTIVE stage — the shape a generic X/Y control
333
+ * needs, where `setDpiStageAxis` is per-stage and per-axis.
334
+ *
335
+ * Mirrors the vendor's own `setResolution`: one write with the "both" flag
336
+ * when the axes match, two axis-flagged writes when they differ. Named to
337
+ * match the method proposed upstream for a brand-agnostic axis control; if
338
+ * the maintainers settle on a different name this is the one line to
339
+ * rename.
340
+ */
341
+ setAxisDpi(dpiX: number, dpiY: number): Promise<void>;
342
+ /**
343
+ * Uploads one macro into an on-device buffer.
344
+ *
345
+ * Ten 32-byte chunks, each announced by an 8-byte feature report and then
346
+ * carried by a 32-byte OUTPUT report on the same id — the only place this
347
+ * protocol uses an output report at all. Captured from the vendor tool
348
+ * 2026-09-11; see `captures/incott-8k-wireless/macro-upload-2026-09-11.hex`.
349
+ *
350
+ * The device does not acknowledge any of it, so unlike every other setter
351
+ * here there is nothing to verify against: there is no macro read command.
352
+ * Bind a button to `Macro <n>` and press it — that is the only confirmation
353
+ * available.
354
+ */
355
+ uploadMacro(macro: IncottMacro): Promise<void>;
356
+ /** Reads the DPI cycle (stage count + active stage) in one query. */
357
+ private readDpiCycle;
358
+ /**
359
+ * SELECTS which DPI stage is active (`09 03 <count> <idx>`) — distinct from
360
+ * `setDpi`/`setDpiStageValue`, which EDIT a stage's stored value. Confirmed
361
+ * on hardware 2026-09-08 that a select never touches any stage's stored
362
+ * value (see `INCOTT_CMD_SET_DPI_STAGE` in `src/incott/index.ts`), so
363
+ * unlike every value setter in this client this one reads back the active
364
+ * index rather than a DPI value.
365
+ *
366
+ * The stage count is READ FIRST and written back unchanged. It shares the
367
+ * write with the index, so sending a constant here would silently resize a
368
+ * cycle that is not six stages long — see
369
+ * `INCOTT_DPI_STAGE_COUNT_DEFAULT`.
370
+ */
371
+ setActiveDpiStage(stage: number): Promise<number>;
372
+ /**
373
+ * Sets how many stages the DPI cycle rotates through (`09 03 <count>
374
+ * <idx>`). The stored value of every stage is left alone — stages above
375
+ * the new count keep their values and simply stop being visited.
376
+ *
377
+ * The active stage rides along in the same write, so it is clamped into
378
+ * the new cycle rather than left pointing past the end.
379
+ */
380
+ setDpiStageCount(count: number): Promise<number>;
381
+ /**
382
+ * EDITS one stage's stored DPI value directly, by index — unlike `setDpi`,
383
+ * which always targets whichever stage happens to be active right now.
384
+ * This is the write OpenMouse's shared multi-stage DPI editor uses when the
385
+ * user edits a specific stage row rather than the active-stage preset.
386
+ */
387
+ setDpiStageValue(stage: number, dpi: number): Promise<number>;
388
+ setPollingRate(hz: number): Promise<number>;
389
+ setLiftOffDistance(level: LiftOffLevel): Promise<LiftOffLevel>;
390
+ setMotionSync(on: boolean): Promise<boolean>;
391
+ setAngleSnapping(on: boolean): Promise<boolean>;
392
+ setRippleControl(on: boolean): Promise<boolean>;
393
+ setDebounceTime(ms: number): Promise<number>;
394
+ setSleepTimeout(seconds: number): Promise<number>;
395
+ /**
396
+ * Not called generically by the app (no shared receiver-LED control exists
397
+ * yet), kept for protocol parity with IncottHub.
398
+ *
399
+ * NOTE for whoever wires this up: the receiver LED is a property of the
400
+ * 2.4 GHz dongle and is meaningless when `incottIsWiredProduct(device.productId)`
401
+ * is true (checked 2026-09-08) — there is no dongle in that mode. Checked
402
+ * `MouseUiHints` in `src/drivers/mouse-types.ts` for an existing `hide*`
403
+ * flag to gate this with and found none scoped to the receiver LED
404
+ * specifically (the closest, `hideSignalCard`, is about link-quality
405
+ * telemetry, a different control); a new hint was deliberately NOT added to
406
+ * that shared contract for a control this driver does not yet advertise
407
+ * anywhere. Whoever wires a shared receiver-LED control into `MouseStatus`
408
+ * should either add a scoped `hide*` flag there at that time, or simply
409
+ * omit the wiring outright when wired, matching the other wireless-only
410
+ * behavior in this driver (see `INCOTT_POLLING_STEPS_HZ_WIRED`).
411
+ */
412
+ /**
413
+ * Reads all six button bindings, keyed by the physical button name.
414
+ *
415
+ * Returns null unless every button answered: see the call site in
416
+ * `readStatus` for why a partial read is not published. A binding the
417
+ * action table does not know (a keyboard key, a macro) reports its raw code
418
+ * as `Unknown (0x...)` rather than being shown as one of the offered
419
+ * actions — the shared remapper writes back what it displays, so labelling
420
+ * an unknown binding as a known action would rewrite it on the next edit.
421
+ */
422
+ private readButtonMappings;
423
+ /**
424
+ * Reassigns one button, then reads it back and refuses to report success
425
+ * unless the device actually took the value.
426
+ *
427
+ * `button` is a physical name; the wire index it maps to is NOT the same
428
+ * number (Forward and Back are transposed — see
429
+ * `INCOTT_BUTTON_WIRE_INDEX`). This is a standalone command, so it cannot
430
+ * disturb DPI, polling or the other five buttons.
431
+ */
432
+ setButtonMapping(button: string, actionLabel: string): Promise<void>;
433
+ /**
434
+ * Reads the Fire Key (rapid-fire) parameters — how many clicks a button
435
+ * bound to "Rapid fire" sends, and how far apart. Global to the device: the
436
+ * command carries no button index.
437
+ */
438
+ getFireKey(): Promise<IncottFireKey | null>;
439
+ /**
440
+ * Writes the Fire Key parameters and verifies the read-back.
441
+ *
442
+ * Not advertised through `MouseStatus`: the shared contract has no
443
+ * rapid-fire field, so there is no generic control to publish this behind —
444
+ * the same position `setReceiverLed` is in. Kept for protocol parity and
445
+ * for whoever wires a control up.
446
+ */
447
+ setFireKey(times: number, intervalMs: number): Promise<IncottFireKey>;
448
+ setReceiverLed(mode: number): Promise<number>;
449
+ /**
450
+ * Low-level codec method: writes the RAW 0-2 performance-mode value. Kept
451
+ * for protocol parity and as the primitive `setPowerMode` below builds on.
452
+ * Most callers should use `setPowerMode(name)` instead, which validates a
453
+ * name against the hardware-confirmed HP/Corded/LP mapping (see
454
+ * `INCOTT_SUB_PERFORMANCE` in `src/incott/index.ts`) and requires a
455
+ * matching read-back before reporting success.
456
+ *
457
+ * This method is intentionally more lenient than `setPowerMode`: a `null`
458
+ * read-back (the device not answering) does not throw here, since a raw
459
+ * numeric call has no name to validate up front and existing callers/tests
460
+ * rely on this tolerance. See `setPowerMode` for the stricter contract.
461
+ */
462
+ setPerformanceMode(mode: number): Promise<number>;
463
+ /** See `setPerformanceMode`. Returns `null` when `0x84`/`0x05` does not answer. */
464
+ getPerformanceMode(): Promise<number | null>;
465
+ /**
466
+ * The named power/performance modes this mouse offers, in the vendor UI's
467
+ * own left-to-right display order (HP, Corded, LP) — see
468
+ * `INCOTT_PERFORMANCE_MODE_NAMES`. This order is deliberately NOT the wire
469
+ * value order: see `setPowerMode` and `INCOTT_SUB_PERFORMANCE` in
470
+ * `src/incott/index.ts` for the reversal this table exists to get right.
471
+ */
472
+ getPowerModes(): string[];
473
+ /**
474
+ * OpenMouse's shared power/performance-mode contract
475
+ * (`requireClientMethod("setPowerMode", …)` in
476
+ * `openmouse/src/device/controller.ts`) — takes the mode NAME, not the raw
477
+ * wire value. Maps name -> wire through `incottPerformanceModeToWire`
478
+ * (`INCOTT_PERFORMANCE_MODE_TO_WIRE` in `src/incott/index.ts`), the single
479
+ * table the HP=2/Corded=1/LP=0 reversal lives in — hardware-confirmed
480
+ * 2026-09-10 by labelling each click in the vendor tool before recording
481
+ * its write; see `INCOTT_SUB_PERFORMANCE`'s doc comment.
482
+ *
483
+ * Rejects an unknown name BEFORE writing anything (same pattern as
484
+ * `incottValidateDpi`/`setDpi` above), then writes and requires a matching,
485
+ * non-null read-back — unlike the lower-level `setPerformanceMode`, a
486
+ * `null` read-back here is treated as a failure, not tolerated: every
487
+ * setter in this driver verifies its write, and an unverifiable write must
488
+ * report failure rather than claim success.
489
+ */
490
+ setPowerMode(name: string): Promise<void>;
491
+ /** Queries return an all-zero frame on failure, which every decoder rejects. */
492
+ private query;
493
+ /**
494
+ * Reads ONE AXIS of one DPI stage. Separate from `query` because the axis
495
+ * has to be matched in the reply as well as sent: X and Y on the same stage
496
+ * are two requests with an identical command and sub-command, so the second
497
+ * would otherwise accept the first's latched frame.
498
+ */
499
+ private queryDpiAxis;
500
+ /** Reads one axis of one stage, or null when the device does not answer. */
501
+ readDpiStageAxis(stage: number, axis: IncottDpiAxis): Promise<number | null>;
502
+ /**
503
+ * Writes one axis of one stage and verifies it by reading that axis back.
504
+ *
505
+ * Independent X and Y are real on this device — hardware-verified
506
+ * 2026-09-11, see `INCOTT_DPI_AXIS`. Writing `"both"` is what the ordinary
507
+ * `setDpiStageValue` does.
508
+ */
509
+ setDpiStageAxis(stage: number, dpi: number, axis: IncottDpiAxis): Promise<number>;
510
+ private write;
511
+ }
512
+ export {};
513
+ //# sourceMappingURL=hid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/incott/hid.ts"],"names":[],"mappings":"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"}