@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,314 @@
1
+ /**
2
+ * K-snake X11 configuration protocol, reverse-engineered from the vendor
3
+ * WebHID panel shipped at https://x1a11.yjx2012.com/ (Next.js `app/page` chunk).
4
+ *
5
+ * Transport: WebHID output report (`sendReport(0, 64 bytes starting with
6
+ * 0x55)`) with the reply arriving as a queued `inputreport` — not a feature
7
+ * report. Control collection is usage page 0xFF01, usage 0x10; the vendor
8
+ * picker requests:
9
+ * [{ vendorId: 0xA8A4, productId: 0x2255, usagePage: 0xFF01, usage: 0x10 },
10
+ * { vendorId: 0xA8A5, productId: 0x2255, usagePage: 0xFF01, usage: 0x10 }]
11
+ * 0xA8A4 reports "USB", 0xA8A5 is the 2.4 GHz dongle.
12
+ *
13
+ * This module is transport-independent: it only builds 64-byte report bodies
14
+ * and decodes reply buffers. See `src/drivers/ksnake/hid.ts` for the WebHID
15
+ * exchange queue.
16
+ */
17
+ export const KSNAKE_USB_VENDOR_ID = 0xa8a4;
18
+ export const KSNAKE_DONGLE_VENDOR_ID = 0xa8a5;
19
+ export const KSNAKE_PRODUCT_ID = 0x2255;
20
+ export const KSNAKE_USAGE_PAGE = 0xff01;
21
+ export const KSNAKE_USAGE = 0x10;
22
+ export const KSNAKE_REPORT_ID = 0x00;
23
+ export const KSNAKE_MAGIC = 0x55;
24
+ export const KSNAKE_REPORT_SIZE = 64;
25
+ /** DPI range. Vendor panel slider allows 200–12000 (step 100); the manual's
26
+ * factory steps are 800–12000 and 600 was observed in stage 0 on retail
27
+ * hardware (user-customized via the vendor panel). */
28
+ export const KSNAKE_DPI_MIN = 200;
29
+ export const KSNAKE_DPI_MAX = 12000;
30
+ export function ksnakeIsValidDpi(dpi) {
31
+ return Number.isInteger(dpi) && dpi >= KSNAKE_DPI_MIN && dpi <= KSNAKE_DPI_MAX;
32
+ }
33
+ export const KSNAKE_PRODUCTS = new Map([
34
+ [KSNAKE_PRODUCT_ID, { model: "X11", wireless: true, verified: false }],
35
+ ]);
36
+ const CMD = {
37
+ GET_VERSION: 0x03,
38
+ GET_KEYS: 0x08,
39
+ SET_KEYS: 0x09,
40
+ GET_CONFIG: 0x0e,
41
+ SET_CONFIG: 0x0f,
42
+ SET_LIGHT: 0x21,
43
+ GET_BATTERY: 0x30,
44
+ };
45
+ const GET_CONFIG_TAIL = [0xa5, 0x0b, 0x2f, 0x01, 0x01, 0x00, 0x00, 0x00];
46
+ const SET_CONFIG_HEAD = [0xae, 0x0a, 0x2f, 0x01, 0x01, 0x00, 0x00];
47
+ const GET_BATTERY_TAIL = [0xa5, 0x0b, 0x2e, 0x01, 0x01, 0x00, 0x00, 0x00];
48
+ /**
49
+ * Polling-rate index ↔ Hz.
50
+ * Endpoints confirmed by the X11 user manual: 1000 Hz in 2.4G/wired,
51
+ * 125 Hz in BT. Middle steps (250/500) come from the vendor panel screenshot
52
+ * + PAW3311 spec — keep until a hardware capture says otherwise.
53
+ * Default index 3 = 1000 Hz.
54
+ */
55
+ export const KSNAKE_POLLING_RATES = [125, 250, 500, 1000];
56
+ export function ksnakeEncodePollingRate(hz) {
57
+ const index = KSNAKE_POLLING_RATES.indexOf(hz);
58
+ return index === -1 ? null : index;
59
+ }
60
+ export function ksnakeDecodePollingRate(index) {
61
+ return index >= 0 && index < KSNAKE_POLLING_RATES.length ? KSNAKE_POLLING_RATES[index] : null;
62
+ }
63
+ /**
64
+ * Lift-off mapping. The vendor panel offers two stops (lod_value 1/2,
65
+ * default 1, likely 1mm/2mm on the PAW3311); they map to the Low/High stops.
66
+ * Medium is not offered by the hardware.
67
+ */
68
+ export function ksnakeDecodeLiftOff(value) {
69
+ return value === 2 ? "High" : "Low";
70
+ }
71
+ export function ksnakeEncodeLiftOff(level) {
72
+ if (level === "Low")
73
+ return 1;
74
+ if (level === "High")
75
+ return 2;
76
+ return null;
77
+ }
78
+ export const KSNAKE_DEFAULT_CONFIG = {
79
+ lightMode: 2,
80
+ reportRate: 3,
81
+ dpiIndex: 2,
82
+ // Hardware reports 6 (retail 2.4 GHz dongle, FW 2.1.7).
83
+ dpiCount: 6,
84
+ stages: [800, 1200, 1600, 3200, 5000, 12000],
85
+ scrollFlag: 0,
86
+ lodValue: 1,
87
+ sensorFlag: 53,
88
+ keyRespond: 2,
89
+ sleepLight: 10,
90
+ highspeedMode: 0,
91
+ wakeupFlag: 1,
92
+ moveLightFlag: 1,
93
+ };
94
+ function le16(lo, hi) {
95
+ return ((hi & 0xff) << 8) | (lo & 0xff);
96
+ }
97
+ /** 64-byte output-report body (without the reportId prefix). */
98
+ export function ksnakeGetVersionRequest() {
99
+ const buf = new Uint8Array(KSNAKE_REPORT_SIZE);
100
+ buf[0] = KSNAKE_MAGIC;
101
+ buf[1] = CMD.GET_VERSION;
102
+ return buf;
103
+ }
104
+ /** Vendor reply bytes [23..25] hold ASCII "x.y.z" when present. */
105
+ export function ksnakeDecodeVersion(reply) {
106
+ if (reply.length < 26)
107
+ return null;
108
+ const digit = (b) => (b >= 48 && b <= 57 ? String.fromCharCode(b) : null);
109
+ const major = digit(reply[23]);
110
+ const minor = digit(reply[24]);
111
+ const patch = digit(reply[25]);
112
+ if (major === null || minor === null || patch === null)
113
+ return null;
114
+ return `${major}.${minor}.${patch}`;
115
+ }
116
+ export function ksnakeGetBatteryRequest() {
117
+ const buf = new Uint8Array(KSNAKE_REPORT_SIZE);
118
+ buf[0] = KSNAKE_MAGIC;
119
+ buf[1] = CMD.GET_BATTERY;
120
+ GET_BATTERY_TAIL.forEach((b, i) => {
121
+ buf[2 + i] = b;
122
+ });
123
+ return buf;
124
+ }
125
+ export function ksnakeDecodeBattery(reply) {
126
+ if (reply.length < 10)
127
+ return null;
128
+ return { percent: reply[8] & 0xff, charging: reply[9] & 0xff };
129
+ }
130
+ export function ksnakeGetConfigRequest() {
131
+ const buf = new Uint8Array(KSNAKE_REPORT_SIZE);
132
+ buf[0] = KSNAKE_MAGIC;
133
+ buf[1] = CMD.GET_CONFIG;
134
+ GET_CONFIG_TAIL.forEach((b, i) => {
135
+ buf[2 + i] = b;
136
+ });
137
+ return buf;
138
+ }
139
+ /** Decode a getConfig reply, mirroring the vendor `getMouseConfigInfo()`. */
140
+ export function ksnakeDecodeConfig(reply) {
141
+ if (reply.length < 56)
142
+ return null;
143
+ const blank = reply[13] === 0 && reply[14] === 0 && reply[15] === 0;
144
+ const erased = reply[13] === 255 && reply[14] === 255 && reply[15] === 255;
145
+ if (blank || erased) {
146
+ return { ...KSNAKE_DEFAULT_CONFIG, stages: [...KSNAKE_DEFAULT_CONFIG.stages] };
147
+ }
148
+ return {
149
+ lightMode: reply[9],
150
+ reportRate: reply[10] - 1,
151
+ dpiIndex: reply[12] - 1,
152
+ dpiCount: reply[11],
153
+ stages: [
154
+ le16(reply[13], reply[14]),
155
+ le16(reply[15], reply[16]),
156
+ le16(reply[17], reply[18]),
157
+ le16(reply[19], reply[20]),
158
+ le16(reply[21], reply[22]),
159
+ le16(reply[23], reply[24]),
160
+ ],
161
+ scrollFlag: reply[48],
162
+ lodValue: reply[49],
163
+ sensorFlag: reply[50],
164
+ keyRespond: reply[51],
165
+ sleepLight: reply[52],
166
+ highspeedMode: reply[53],
167
+ // NOTE: the vendor panel itself is asymmetric here — its decode reads
168
+ // wakeup from the LOW nibble (`15 & t[55]`) but its encode writes
169
+ // `wakeup << 4 | move`. This codec mirrors the vendor byte-for-byte, so
170
+ // states round-trip exactly like the vendor panel does.
171
+ wakeupFlag: reply[55] & 15,
172
+ moveLightFlag: (reply[55] >> 4) & 15,
173
+ };
174
+ }
175
+ /** Encode a setConfig request, mirroring vendor `setMouseConfigData()`. */
176
+ export function ksnakeEncodeSetConfig(config) {
177
+ const buf = new Uint8Array(KSNAKE_REPORT_SIZE);
178
+ buf[0] = KSNAKE_MAGIC;
179
+ buf[1] = CMD.SET_CONFIG;
180
+ SET_CONFIG_HEAD.forEach((b, i) => {
181
+ buf[2 + i] = b;
182
+ });
183
+ buf[9] = config.lightMode & 0xff;
184
+ buf[10] = (config.reportRate + 1) & 0xff;
185
+ buf[11] = config.dpiCount & 0xff;
186
+ buf[12] = (config.dpiIndex + 1) & 0xff;
187
+ const stages = [...config.stages];
188
+ while (stages.length < 6)
189
+ stages.push(0);
190
+ for (let i = 0; i < 6; i++) {
191
+ buf[13 + i * 2] = stages[i] & 0xff;
192
+ buf[14 + i * 2] = (stages[i] >> 8) & 0xff;
193
+ }
194
+ buf[48] = config.scrollFlag & 0xff;
195
+ buf[49] = config.lodValue & 0xff;
196
+ buf[50] = config.sensorFlag & 0xff;
197
+ buf[51] = config.keyRespond & 0xff;
198
+ buf[52] = config.sleepLight & 0xff;
199
+ buf[53] = config.highspeedMode & 0xff;
200
+ buf[54] = ((config.wakeupFlag << 4) | (config.moveLightFlag & 15)) & 0xff;
201
+ return buf;
202
+ }
203
+ /** Physical button order for the 6 remappable slots. Labels follow the factory
204
+ * functions; the side button ships as Forward (user-renameable to Macro1). */
205
+ export const KSNAKE_BUTTON_NAMES = ["Left", "Right", "Middle", "Backward", "Forward", "DPI"];
206
+ /** Button function types from the vendor key catalog. */
207
+ export const KSNAKE_KEY_TYPE = {
208
+ mouse: 32,
209
+ special: 33,
210
+ media: 48,
211
+ };
212
+ export function ksnakeIsKnownKeyType(type) {
213
+ return type === KSNAKE_KEY_TYPE.mouse || type === KSNAKE_KEY_TYPE.special || type === KSNAKE_KEY_TYPE.media;
214
+ }
215
+ /** Remappable actions from the vendor key catalog (display label + bytes). */
216
+ export const KSNAKE_BUTTON_ACTIONS = [
217
+ { label: "Left click", type: 32, code1: 1, code2: 0, code3: 0 },
218
+ { label: "Right click", type: 32, code1: 2, code2: 0, code3: 0 },
219
+ { label: "Middle click", type: 32, code1: 4, code2: 0, code3: 0 },
220
+ { label: "Backward", type: 32, code1: 8, code2: 0, code3: 0 },
221
+ { label: "Forward", type: 32, code1: 16, code2: 0, code3: 0 },
222
+ { label: "Disabled", type: 32, code1: 0, code2: 0, code3: 0 },
223
+ { label: "DPI loop", type: 33, code1: 85, code2: 0, code3: 0 },
224
+ { label: "Scroll up", type: 33, code1: 56, code2: 1, code3: 0 },
225
+ { label: "Scroll down", type: 33, code1: 56, code2: 255, code3: 0 },
226
+ { label: "Volume +", type: 48, code1: 233, code2: 0, code3: 0 },
227
+ { label: "Volume −", type: 48, code1: 234, code2: 0, code3: 0 },
228
+ { label: "Mute", type: 48, code1: 226, code2: 0, code3: 0 },
229
+ { label: "Play/Pause", type: 48, code1: 205, code2: 0, code3: 0 },
230
+ { label: "Prev track", type: 48, code1: 182, code2: 0, code3: 0 },
231
+ { label: "Next track", type: 48, code1: 181, code2: 0, code3: 0 },
232
+ ];
233
+ /** Display label for a binding, or null when the catalog cannot name it. */
234
+ export function ksnakeBindingLabel(binding) {
235
+ return KSNAKE_BUTTON_ACTIONS.find((action) => action.type === binding.type &&
236
+ action.code1 === binding.code1 &&
237
+ action.code2 === binding.code2 &&
238
+ action.code3 === binding.code3)?.label ?? null;
239
+ }
240
+ /** Catalog binding for a display label, or null for unknown labels. */
241
+ export function ksnakeFindButtonAction(label) {
242
+ const action = KSNAKE_BUTTON_ACTIONS.find((entry) => entry.label === label);
243
+ return action ? { type: action.type, code1: action.code1, code2: action.code2, code3: action.code3 } : null;
244
+ }
245
+ /**
246
+ * Plausibility gate for decoded key maps. `exchange()` resolves with the next
247
+ * input report, so a stray report from another command can land here; those
248
+ * decode to zeroed/garbage slot types. Real maps always carry nonzero types
249
+ * (32/33/48 catalog, plus opaque refs like macro 112).
250
+ */
251
+ export function ksnakeKeysLookPlausible(keys) {
252
+ return keys.length === 7 && keys.every((key) => key.type !== 0);
253
+ }
254
+ /** GET_KEYS request tail observed in vendor JS: [0x55, 0x08, 0xA5, 0x0B, 0x20]. */
255
+ export function ksnakeGetKeysRequest() {
256
+ const buf = new Uint8Array(KSNAKE_REPORT_SIZE);
257
+ buf[0] = KSNAKE_MAGIC;
258
+ buf[1] = CMD.GET_KEYS;
259
+ buf[2] = 0xa5;
260
+ buf[3] = 0x0b;
261
+ buf[4] = 0x20;
262
+ return buf;
263
+ }
264
+ /**
265
+ * Decode a getKeys reply: 7 slots of 4 bytes at reply[8..35] (the vendor
266
+ * slices 8). Slot 6 is a fixed scroll-up entry; slots 0-5 are remappable.
267
+ * Verified against a retail dongle (factory map decodes to
268
+ * Left/Right/Middle/Backward + DPI loop in order).
269
+ */
270
+ export function ksnakeDecodeKeys(reply) {
271
+ if (reply.length < 36)
272
+ return null;
273
+ const bindings = [];
274
+ for (let i = 0; i < 7; i++) {
275
+ bindings.push({
276
+ type: reply[8 + i * 4],
277
+ code1: reply[9 + i * 4],
278
+ code2: reply[10 + i * 4],
279
+ code3: reply[11 + i * 4],
280
+ });
281
+ }
282
+ return bindings;
283
+ }
284
+ /**
285
+ * Encode a setKeys request, mirroring vendor `setMouseKeys()`: head
286
+ * [0x55, 0x09, 0xA5, 0x22, 0x20], slots 0-5 at body[9..32], fixed tail
287
+ * [33,56,1,0, 33,56,255,0] at body[33..40].
288
+ */
289
+ export function ksnakeEncodeSetKeys(keys) {
290
+ const buf = new Uint8Array(KSNAKE_REPORT_SIZE);
291
+ buf[0] = KSNAKE_MAGIC;
292
+ buf[1] = CMD.SET_KEYS;
293
+ buf[2] = 0xa5;
294
+ buf[3] = 0x22;
295
+ buf[4] = 0x20;
296
+ const slots = [...keys].slice(0, 6);
297
+ while (slots.length < 6)
298
+ slots.push({ type: 32, code1: 0, code2: 0, code3: 0 });
299
+ // Wire offsets, NOT vendor-JS t[] indices: t[0] is the report id, so the
300
+ // request slots at t[9..32] land at data[8..31]. (buf[9..] bricked buttons.)
301
+ for (let n = 0; n < 6; n++) {
302
+ const key = slots[n];
303
+ buf[8 + n * 4] = key.type & 0xff;
304
+ buf[9 + n * 4] = key.code1 & 0xff;
305
+ buf[10 + n * 4] = key.code2 & 0xff;
306
+ buf[11 + n * 4] = key.code3 & 0xff;
307
+ }
308
+ const tail = [33, 56, 1, 0, 33, 56, 255, 0];
309
+ tail.forEach((b, i) => {
310
+ buf[32 + i] = b;
311
+ });
312
+ return buf;
313
+ }
314
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ksnake/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Lamzu's "Atlantis" generation — CompX vendor id 0x3554.
3
+ *
4
+ * These mice do not speak the page/command feature-report protocol in
5
+ * `../compx/codec.ts` that the 0x373e and 0x37b0 Lamzu models use. They speak
6
+ * the *other* CompX stack: report 8, 16-byte interrupt reports, settings in a
7
+ * flash image addressed by byte offset — the same wire protocol this package
8
+ * already implements for the Pulsar 4K receiver and the VGN and Teevolution
9
+ * mice that share vendor id 0x3554. CompX is the ODM for all of them; the
10
+ * user's own device reports `manufacturer: "compx"`.
11
+ *
12
+ * So the framing, command ids, checksum and 50-step DPI encoding are imported
13
+ * from the Pulsar entry point rather than restated here. What this module adds
14
+ * is only what is genuinely Lamzu: the product catalog, the flash fields
15
+ * Lamzu's firmware uses that the Pulsar driver never reads, the lift-off
16
+ * encoding (which differs), and the polling-rate table (which differs).
17
+ *
18
+ * Verified on a Lamzu Atlantis Mini 4K, firmware 1.24, wired 0x3554:0xf50f —
19
+ * see docs/lamzu-atlantis-testing.md. Protocol groundwork: LeadSun/lamzu-cfg
20
+ * (Apache-2.0/MIT), reverse-engineered from an Atlantis Mini Pro.
21
+ */
22
+ export declare const LAMZU_ATLANTIS_VENDOR_ID = 13652;
23
+ /** The one collection that answers: interface 1, usage page 0xff02, usage 2. */
24
+ export declare const LAMZU_ATLANTIS_USAGE_PAGE = 65282;
25
+ export declare const LAMZU_ATLANTIS_USAGE = 2;
26
+ /** Shared CompX report-8 framing, re-stated under Lamzu names for callers. */
27
+ export declare const LAMZU_ATLANTIS_REPORT_ID = 8;
28
+ export declare const LAMZU_ATLANTIS_PACKET_LENGTH = 16;
29
+ export declare const LAMZU_ATLANTIS_PAYLOAD_OFFSET = 5;
30
+ export declare const LAMZU_ATLANTIS_MAX_PAYLOAD = 10;
31
+ /**
32
+ * The commands are CompX's, not Lamzu's, so the whole Pulsar set is aliased
33
+ * here rather than a Lamzu-specific subset. Only six have been exercised on
34
+ * Atlantis hardware: 0x04 battery, 0x07/0x08 flash write/read, 0x0e active
35
+ * profile, 0x0f set active profile, and 0x12 firmware version (returned
36
+ * 0x01 0x24 — v1.24, matching both the USB bcdDevice and the version Lamzu's
37
+ * download page lists for this model). The dongle-only commands (0x15, 0x1d,
38
+ * 0x2b) answer status 1 over the cable; the rest — `encryptionData`,
39
+ * `deviceOnline`, `setDongleRgb` — are inherited names this driver never
40
+ * sends and are unverified on this family.
41
+ */
42
+ export declare const LAMZU_ATLANTIS_COMMAND: {
43
+ readonly encryptionData: 1;
44
+ readonly deviceOnline: 3;
45
+ readonly batteryLevel: 4;
46
+ readonly writeFlashData: 7;
47
+ readonly readFlashData: 8;
48
+ readonly getCurrentConfig: 14;
49
+ readonly readVersionId: 18;
50
+ readonly setDongleRgb: 20;
51
+ readonly getDongleRgb: 21;
52
+ readonly getDongleVersion: 29;
53
+ readonly getRssi: 43;
54
+ };
55
+ /**
56
+ * Switching the active onboard profile. It is the write counterpart of
57
+ * `getCurrentConfig` (0x0e) and is absent from `PULSAR_COMMAND` because the
58
+ * Pulsar driver only reads the profile. Documented by lamzu-cfg as
59
+ * `WriteActiveProfile` and exercised here on an Atlantis Mini 4K.
60
+ */
61
+ export declare const LAMZU_ATLANTIS_WRITE_ACTIVE_PROFILE = 15;
62
+ /**
63
+ * Flash offsets. Everything in `PULSAR_FLASH` matched byte for byte on Lamzu
64
+ * hardware — same firmware family, same layout — so those are inherited rather
65
+ * than re-typed, and only the fields Lamzu's configurator exposes that the
66
+ * Pulsar driver never reads are added here.
67
+ *
68
+ * `sleepTime` deserves a note: the byte is a count of ten-second units, not
69
+ * seconds. Lamzu's configurator showed a 1-minute timeout while address 173
70
+ * held 0x06, and 10 seconds while it held 0x01.
71
+ */
72
+ export declare const LAMZU_ATLANTIS_FLASH: {
73
+ readonly dpiStageCount: 2;
74
+ readonly dpiStageColors: 44;
75
+ readonly buttonActions: 96;
76
+ readonly highPerformance: 185;
77
+ readonly reportRate: 0;
78
+ readonly currentDpi: 4;
79
+ readonly liftOffDistance: 10;
80
+ readonly dpiValues: 12;
81
+ readonly debounceTime: 169;
82
+ readonly motionSync: 171;
83
+ readonly sleepTime: 173;
84
+ readonly angleSnapping: 175;
85
+ readonly rippleControl: 177;
86
+ readonly performanceState: 181;
87
+ readonly performanceTime: 183;
88
+ };
89
+ export declare const LAMZU_ATLANTIS_STAGE_STRIDE = 4;
90
+ export declare const LAMZU_ATLANTIS_MAX_DPI_STAGES = 8;
91
+ /**
92
+ * Onboard profiles, 1-based in Lamzu's UI and 0-based on the wire. Probed on
93
+ * hardware: writing indices 0-3 is accepted and reads back, while 4 and above
94
+ * are rejected with status 1 and leave the mouse on its previous profile.
95
+ */
96
+ export declare const LAMZU_ATLANTIS_PROFILE_COUNT = 4;
97
+ /** PAW3395: 50-26,000 DPI in 50 DPI steps, per Lamzu's own device table. */
98
+ export declare const LAMZU_ATLANTIS_DPI_STEP = 50;
99
+ export declare const LAMZU_ATLANTIS_MIN_DPI = 50;
100
+ export declare const LAMZU_ATLANTIS_MAX_DPI = 26000;
101
+ /**
102
+ * Both timers this firmware stores — the peak-performance window and the sleep
103
+ * timeout — count ten-second units in a single byte.
104
+ */
105
+ export declare const LAMZU_ATLANTIS_TIMER_STEP_SECONDS = 10;
106
+ export declare const LAMZU_ATLANTIS_MAX_TIMER_SECONDS: number;
107
+ /** Sleep timeouts Lamzu's own configurator offers, in seconds. */
108
+ export declare const LAMZU_ATLANTIS_SLEEP_OPTIONS: readonly [10, 30, 60, 300, 600, 1800];
109
+ /**
110
+ * Which of the two encodings of 1,000 Hz a transport wants. Stored per product
111
+ * rather than derived from the rate ceiling: the 1K receiver tops out at
112
+ * 1,000 Hz like the cable does, so a ceiling test would silently decide its
113
+ * encoding for it, and no 1K receiver has been on hand to check.
114
+ */
115
+ export type LamzuAtlantisRateFamily = "wired" | "receiver";
116
+ export interface LamzuAtlantisProduct {
117
+ model: string;
118
+ wireless: boolean;
119
+ pollingRates: readonly number[];
120
+ rateFamily: LamzuAtlantisRateFamily;
121
+ /** False until this exact product id has been exercised on hardware. */
122
+ verified: boolean;
123
+ }
124
+ /**
125
+ * Six models share these ids — Atlantis OG V2, Atlantis Mini, Atlantis Mini
126
+ * Pro, Thorn, Maya and Paro of this generation — and nothing on the wire
127
+ * separates them: same product id, same USB product string ("LAMZU Atlantis
128
+ * Pro" on the cable, "LAMZU 4K Receiver" on the dongle), same firmware
129
+ * version. Lamzu's own Windows configurator has the same problem and solves it
130
+ * by making the user pick the model from a list, so this catalog names the
131
+ * family rather than pretending to identify one model.
132
+ *
133
+ * 0xf50f (the mouse on its cable) is confirmed on hardware. The three receiver
134
+ * ids come from Lamzu's shipped device table and nothing more: no receiver has
135
+ * been exercised, so neither their rate lists nor the transport itself is
136
+ * established, and they stay `verified: false` until one is.
137
+ */
138
+ export declare const LAMZU_ATLANTIS_PRODUCTS: ReadonlyMap<number, LamzuAtlantisProduct>;
139
+ /**
140
+ * The rate byte uses the encoding the other Lamzu generations use, where
141
+ * 1,000 Hz appears twice: 0x01 in the wired 125-1000 family and 0x10 in the
142
+ * receiver family. Both were read from the same mouse — 0x10 before Lamzu's
143
+ * configurator touched the profile and 0x01 after it wrote 1,000 Hz over the
144
+ * cable, with the vendor UI reading "1000Hz" both times — and selecting
145
+ * 500 Hz in that UI wrote 0x02.
146
+ *
147
+ * This is why the Lamzu units need their own table rather than
148
+ * `pulsarDecodePollingRate`, which reads 0x10 as 2,000 Hz.
149
+ */
150
+ export declare const LAMZU_ATLANTIS_POLLING_RATES: readonly [readonly [8, 125], readonly [4, 250], readonly [2, 500], readonly [1, 1000], readonly [16, 1000], readonly [32, 2000], readonly [64, 4000], readonly [128, 8000]];
151
+ export type LamzuAtlantisLiftOffDistance = "Low" | "Medium";
152
+ /**
153
+ * Only two lift-off heights exist on this generation, 1 mm and 2 mm, and they
154
+ * encode as 1 and 2. The Pulsar driver's 3/1/2 → Low/Medium/High mapping would
155
+ * report a Lamzu's 1 mm as "Medium".
156
+ */
157
+ export declare const LAMZU_ATLANTIS_LIFT_OFF_DISTANCES: readonly [readonly [1, "Low"], readonly [2, "Medium"]];
158
+ export interface LamzuAtlantisRequest {
159
+ command: number;
160
+ address?: number;
161
+ payload?: readonly number[];
162
+ }
163
+ export interface LamzuAtlantisReply {
164
+ command: number;
165
+ error: number;
166
+ address: number;
167
+ /**
168
+ * The full payload window, not a slice of `declaredLength` bytes: the
169
+ * battery reply declares 2 while carrying 4 meaningful bytes (percent,
170
+ * charging, then the millivolts), so trusting the length byte would drop the
171
+ * voltage. Callers slice to what they asked for.
172
+ */
173
+ payload: Uint8Array;
174
+ declaredLength: number;
175
+ }
176
+ /**
177
+ * Builds the 16 bytes WebHID sends for report 8. The report id is excluded
178
+ * from the buffer but included in the checksum, which is what
179
+ * `pulsarPacketChecksum` accounts for.
180
+ */
181
+ export declare function lamzuAtlantisEncodeRequest(spec: LamzuAtlantisRequest): Uint8Array<ArrayBuffer>;
182
+ /**
183
+ * Decodes an input report body (the 16 bytes WebHID delivers, report id
184
+ * excluded). Returns null for a truncated frame or a failed checksum so a
185
+ * caller waiting on a reply can skip the unsolicited reports this firmware
186
+ * emits rather than throwing on them.
187
+ */
188
+ export declare function lamzuAtlantisDecodeReply(body: Uint8Array): LamzuAtlantisReply | null;
189
+ /**
190
+ * A flash field is stored with a trailing checksum byte, so the value bytes
191
+ * and that byte together must sum to 0x55.
192
+ */
193
+ export declare function lamzuAtlantisFieldIsIntact(field: Uint8Array): boolean;
194
+ /** Appends the trailing checksum a flash field is stored with. */
195
+ export declare function lamzuAtlantisSealField(values: readonly number[]): number[];
196
+ export interface LamzuAtlantisDpiStage {
197
+ x: number;
198
+ y: number;
199
+ }
200
+ /**
201
+ * Decodes a DPI stage field: `[x, y, flags, checksum]`, where the flags byte
202
+ * carries each axis's ninth and tenth bits — bits 2-3 for x, bits 6-7 for y,
203
+ * which is how `pulsarVgnEncodeDpi` lays them out.
204
+ *
205
+ * `pulsarVgnDecodeDpi` cannot be used for reads here: it returns null unless
206
+ * the two axis bytes are identical, because the Pulsar driver only ever
207
+ * writes them in lockstep. A Lamzu configured with separate axes stores a
208
+ * perfectly valid field that would then read as corrupt.
209
+ */
210
+ export declare function lamzuAtlantisDecodeDpiStage(field: Uint8Array): LamzuAtlantisDpiStage | null;
211
+ export declare function lamzuAtlantisDecodePollingRate(raw: number): number | null;
212
+ /**
213
+ * Picks the byte for a rate. Only 1,000 Hz is ambiguous, and the transport's
214
+ * declared family decides it rather than anything inferred from the rate list.
215
+ */
216
+ export declare function lamzuAtlantisEncodePollingRate(hertz: number, family: LamzuAtlantisRateFamily): number | null;
217
+ export declare function lamzuAtlantisDecodeLiftOffDistance(raw: number): LamzuAtlantisLiftOffDistance | null;
218
+ export declare function lamzuAtlantisEncodeLiftOffDistance(value: string): number | null;
219
+ export interface LamzuAtlantisBattery {
220
+ percent: number | null;
221
+ millivolts: number | null;
222
+ charging: boolean;
223
+ }
224
+ /**
225
+ * Battery reply payload: [percent, charging, millivolts high, millivolts low].
226
+ *
227
+ * lamzu-cfg reads only the millivolts and derives a percentage linearly
228
+ * between 3,050 and 4,200 mV, which disagrees with the mouse while it charges:
229
+ * at 4,239 mV that estimate says 100%, where both the reported byte and
230
+ * Lamzu's configurator said 95%. The reported byte wins; the voltage is kept
231
+ * for display.
232
+ */
233
+ export declare function lamzuAtlantisDecodeBattery(payload: Uint8Array): LamzuAtlantisBattery;
234
+ /** Formats the 0x12 firmware reply the same way the Pulsar driver does. */
235
+ export declare function lamzuAtlantisDecodeFirmware(label: string, payload: Uint8Array): string | null;
236
+ export declare function lamzuAtlantisProduct(vendorId: number, productId: number): LamzuAtlantisProduct | undefined;
237
+ //# sourceMappingURL=atlantis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlantis.d.ts","sourceRoot":"","sources":["../../src/lamzu/atlantis.ts"],"names":[],"mappings":"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"}