@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,165 @@
1
+ export type EggButtonActionKey = "mouse-left" | "mouse-right" | "mouse-middle" | "mouse-back" | "mouse-forward" | "scroll-up" | "scroll-down" | "keyboard" | "cpi-loop" | "fixed-cpi" | "media-play" | "media-next" | "media-previous" | "media-mute" | "media-volume-up" | "media-volume-down" | "browser-home" | "file-explorer" | "disabled" | "raw";
2
+ export interface EggButtonAction {
3
+ key: EggButtonActionKey;
4
+ modifiers?: number;
5
+ usage?: number;
6
+ x?: number;
7
+ y?: number;
8
+ rawType?: number;
9
+ rawParams?: number[];
10
+ }
11
+ export declare const EGG_VENDOR_ID = 13159;
12
+ export type EggSensorFamily = "paw3395" | "paw3950";
13
+ export type EggConfigFamily = "v1" | "v2";
14
+ export interface EggDeviceProfile {
15
+ pid: number;
16
+ name: string;
17
+ configFamily: EggConfigFamily;
18
+ sensorFamily: EggSensorFamily;
19
+ cpiMin: number;
20
+ cpiMax: number;
21
+ cpiStepLow: number;
22
+ cpiStepHigh: number;
23
+ lodNormal: readonly string[];
24
+ lodGlass: readonly string[] | null;
25
+ motionSyncAt8k: boolean;
26
+ /** Wired 8K models top out at 8000 Hz; wireless dongles are RF-limited to 4000 Hz. */
27
+ maxPollingHz: number;
28
+ }
29
+ export declare const EGG_DEVICE_PROFILES: ReadonlyMap<number, EggDeviceProfile>;
30
+ export declare const EGG_REPORT: {
31
+ readonly config: 160;
32
+ readonly command: 161;
33
+ readonly event: 3;
34
+ };
35
+ export declare const EGG_OPERATION: {
36
+ readonly firmware: 2;
37
+ readonly store: 17;
38
+ readonly load: 18;
39
+ readonly factoryReset: 19;
40
+ };
41
+ export declare const EGG_OFFSET: {
42
+ readonly pollingDivider: 21;
43
+ readonly filterFlags: 22;
44
+ readonly ledLiftOff: 24;
45
+ readonly lod: 25;
46
+ readonly angleSnapping: 26;
47
+ readonly rippleControl: 27;
48
+ readonly motionSync: 28;
49
+ readonly reserved29: 29;
50
+ readonly cpiLevels: 30;
51
+ readonly firstCpiSplit: 51;
52
+ readonly handedButton: 71;
53
+ readonly firstButton: 77;
54
+ readonly glassMode: 127;
55
+ readonly angleTuning: 128;
56
+ readonly forceMaxFps: 129;
57
+ };
58
+ export declare const EGG_CONFIG_SIZE = 1041;
59
+ export declare const EGG_COMMAND_SIZE = 64;
60
+ export declare const EGG_POLLING_RATES: readonly [125, 250, 500, 1000, 2000, 4000, 8000];
61
+ export declare function eggNormalizeFeatureReport(raw: Uint8Array, reportId: number, expectedTotal: number, payloadLength: number): Uint8Array;
62
+ export declare function eggProfileForPid(pid: number): EggDeviceProfile;
63
+ export declare function eggCpiStep(profile: EggDeviceProfile, cpi: number): number;
64
+ export declare function eggClampCpi(profile: EggDeviceProfile, value: number): number;
65
+ export declare function eggIsValidCpi(profile: EggDeviceProfile, value: number): boolean;
66
+ export declare function eggDpiOptions(profile: EggDeviceProfile): number[];
67
+ export declare function eggLodOptions(profile: EggDeviceProfile, glassMode: boolean): readonly string[];
68
+ /** Firmware stores BCD patch/major bytes, e.g. 37 01 => V1.37. */
69
+ export declare function eggFormatFirmwareVersion(bytes: Uint8Array): string | null;
70
+ export declare function eggReadUint16LE(bytes: Uint8Array, offset: number): number;
71
+ export declare function eggWriteUint16LE(bytes: Uint8Array, offset: number, value: number): void;
72
+ /**
73
+ * The wired 8K configuration does not expose the CPI stage currently selected
74
+ * by the mouse. Apply a generic CPI change to every enabled stage so it takes
75
+ * effect regardless of the runtime stage selection.
76
+ */
77
+ export declare function eggWriteEnabledCpiStages(bytes: Uint8Array, x: number, y: number): void;
78
+ export declare const EGG_BUTTON_ACTION_OPTIONS: readonly [{
79
+ readonly group: "Mouse";
80
+ readonly key: "mouse-left";
81
+ readonly label: "Left Click";
82
+ }, {
83
+ readonly group: "Mouse";
84
+ readonly key: "mouse-right";
85
+ readonly label: "Right Click";
86
+ }, {
87
+ readonly group: "Mouse";
88
+ readonly key: "mouse-middle";
89
+ readonly label: "Middle Click";
90
+ }, {
91
+ readonly group: "Mouse";
92
+ readonly key: "mouse-back";
93
+ readonly label: "Back";
94
+ }, {
95
+ readonly group: "Mouse";
96
+ readonly key: "mouse-forward";
97
+ readonly label: "Forward";
98
+ }, {
99
+ readonly group: "Scroll";
100
+ readonly key: "scroll-up";
101
+ readonly label: "Wheel Up";
102
+ }, {
103
+ readonly group: "Scroll";
104
+ readonly key: "scroll-down";
105
+ readonly label: "Wheel Down";
106
+ }, {
107
+ readonly group: "Keyboard";
108
+ readonly key: "keyboard";
109
+ readonly label: "Keyboard shortcut";
110
+ }, {
111
+ readonly group: "CPI";
112
+ readonly key: "cpi-loop";
113
+ readonly label: "CPI Loop";
114
+ }, {
115
+ readonly group: "CPI";
116
+ readonly key: "fixed-cpi";
117
+ readonly label: "Fixed CPI";
118
+ }, {
119
+ readonly group: "Media";
120
+ readonly key: "media-play";
121
+ readonly label: "Play / Pause";
122
+ }, {
123
+ readonly group: "Media";
124
+ readonly key: "media-next";
125
+ readonly label: "Next Track";
126
+ }, {
127
+ readonly group: "Media";
128
+ readonly key: "media-previous";
129
+ readonly label: "Previous Track";
130
+ }, {
131
+ readonly group: "Media";
132
+ readonly key: "media-mute";
133
+ readonly label: "Mute";
134
+ }, {
135
+ readonly group: "Media";
136
+ readonly key: "media-volume-up";
137
+ readonly label: "Volume Up";
138
+ }, {
139
+ readonly group: "Media";
140
+ readonly key: "media-volume-down";
141
+ readonly label: "Volume Down";
142
+ }, {
143
+ readonly group: "System";
144
+ readonly key: "browser-home";
145
+ readonly label: "Browser Home";
146
+ }, {
147
+ readonly group: "System";
148
+ readonly key: "file-explorer";
149
+ readonly label: "File Explorer";
150
+ }, {
151
+ readonly group: "Other";
152
+ readonly key: "disabled";
153
+ readonly label: "Disabled";
154
+ }];
155
+ export interface EggEncodedButtonAction {
156
+ type: number;
157
+ params: [number, number, number, number, number];
158
+ }
159
+ export declare function eggDecodeButtonAction(type: number, params: readonly number[]): EggButtonAction;
160
+ export declare function eggEncodeButtonAction(action: EggButtonAction): EggEncodedButtonAction | null;
161
+ export declare function eggButtonActionLabel(action: EggButtonAction): string;
162
+ export declare function eggIsPlainLeftAction(bytes: readonly number[]): boolean;
163
+ export declare function eggButtonControlOffset(button: number): number | null;
164
+ export declare function eggButtonMappingOffset(button: number, leftHanded: boolean): number | null;
165
+ //# sourceMappingURL=op1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op1.d.ts","sourceRoot":"","sources":["../../src/endgame-gear/op1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,384 @@
1
+ export const EGG_VENDOR_ID = 0x3367;
2
+ const LOD_V1 = ["0.7 mm", "1 mm", "2 mm"];
3
+ const LOD_V2 = [
4
+ "0.7 mm", "0.8 mm", "0.9 mm", "1.0 mm", "1.1 mm", "1.2 mm",
5
+ "1.3 mm", "1.4 mm", "1.5 mm", "1.6 mm", "1.7 mm",
6
+ ];
7
+ const LOD_GLASS = ["1.0 mm", "2.0 mm"];
8
+ export const EGG_DEVICE_PROFILES = new Map([
9
+ [0x1964, {
10
+ pid: 0x1964,
11
+ name: "Endgame Gear OP1 8K",
12
+ configFamily: "v1",
13
+ sensorFamily: "paw3395",
14
+ cpiMin: 50,
15
+ cpiMax: 26_000,
16
+ cpiStepLow: 50,
17
+ cpiStepHigh: 50,
18
+ lodNormal: LOD_V1,
19
+ lodGlass: null,
20
+ motionSyncAt8k: false,
21
+ maxPollingHz: 8000,
22
+ }],
23
+ [0x1966, {
24
+ pid: 0x1966,
25
+ name: "Endgame Gear XM2 8K",
26
+ configFamily: "v1",
27
+ sensorFamily: "paw3395",
28
+ cpiMin: 50,
29
+ cpiMax: 26_000,
30
+ cpiStepLow: 50,
31
+ cpiStepHigh: 50,
32
+ lodNormal: LOD_V1,
33
+ lodGlass: null,
34
+ motionSyncAt8k: false,
35
+ maxPollingHz: 8000,
36
+ }],
37
+ [0x1976, {
38
+ pid: 0x1976,
39
+ name: "Endgame Gear OP1 8K Purple Frost",
40
+ configFamily: "v1",
41
+ sensorFamily: "paw3950",
42
+ cpiMin: 50,
43
+ cpiMax: 30_000,
44
+ cpiStepLow: 50,
45
+ cpiStepHigh: 50,
46
+ lodNormal: LOD_V1,
47
+ lodGlass: LOD_GLASS,
48
+ motionSyncAt8k: true,
49
+ maxPollingHz: 8000,
50
+ }],
51
+ [0x1978, {
52
+ pid: 0x1978,
53
+ name: "Endgame Gear OP1 8K v2",
54
+ configFamily: "v2",
55
+ sensorFamily: "paw3950",
56
+ cpiMin: 10,
57
+ cpiMax: 30_000,
58
+ cpiStepLow: 10,
59
+ cpiStepHigh: 50,
60
+ lodNormal: LOD_V2,
61
+ lodGlass: LOD_GLASS,
62
+ motionSyncAt8k: true,
63
+ maxPollingHz: 8000,
64
+ }],
65
+ [0x1980, {
66
+ pid: 0x1980,
67
+ name: "Endgame Gear XM2 8K v2",
68
+ configFamily: "v2",
69
+ sensorFamily: "paw3950",
70
+ cpiMin: 10,
71
+ cpiMax: 30_000,
72
+ cpiStepLow: 10,
73
+ cpiStepHigh: 50,
74
+ lodNormal: LOD_V2,
75
+ lodGlass: LOD_GLASS,
76
+ motionSyncAt8k: true,
77
+ maxPollingHz: 8000,
78
+ }],
79
+ // OP1w/XM2w 4K v2: first wireless models on the OP1-8K v2 config protocol.
80
+ // The dongle's own USB PID (0x1970) is reused from the older, unrelated
81
+ // OP1we (see egg-we-hid.ts) — descriptor-based detection there keeps the
82
+ // two drivers from both claiming it. See issue #107. That same dongle PID
83
+ // (and its 0x1984 successor) is ALSO shared between the OP1w and XM2w 4K v2
84
+ // mice themselves — confirmed on real hardware (an XM2w 4K v2 reports as
85
+ // "Endgame Gear OP1we", the receiver's fixed USB descriptor string, with no
86
+ // "xm2" anywhere in it). WebHID has no way to tell them apart: the
87
+ // descriptor name is generic and fixed regardless of the paired mouse, and
88
+ // nothing in the config/firmware read protocol carries a model id. Rather
89
+ // than confidently claim the wrong specific model, this profile's name
90
+ // says both, until a real distinguishing signal turns up.
91
+ [0x1984, {
92
+ pid: 0x1984,
93
+ name: "Endgame Gear OP1w/XM2w 4K v2",
94
+ configFamily: "v2",
95
+ sensorFamily: "paw3950",
96
+ cpiMin: 10,
97
+ cpiMax: 30_000,
98
+ cpiStepLow: 10,
99
+ cpiStepHigh: 50,
100
+ lodNormal: LOD_V2,
101
+ lodGlass: null,
102
+ motionSyncAt8k: true,
103
+ maxPollingHz: 4000,
104
+ }],
105
+ [0x1970, {
106
+ pid: 0x1970,
107
+ name: "Endgame Gear OP1w/XM2w 4K v2",
108
+ configFamily: "v2",
109
+ sensorFamily: "paw3950",
110
+ cpiMin: 10,
111
+ cpiMax: 30_000,
112
+ cpiStepLow: 10,
113
+ cpiStepHigh: 50,
114
+ lodNormal: LOD_V2,
115
+ lodGlass: null,
116
+ motionSyncAt8k: true,
117
+ maxPollingHz: 4000,
118
+ }],
119
+ ]);
120
+ export const EGG_REPORT = {
121
+ config: 0xa0,
122
+ command: 0xa1,
123
+ event: 0x03,
124
+ };
125
+ export const EGG_OPERATION = {
126
+ firmware: 0x02,
127
+ store: 0x11,
128
+ load: 0x12,
129
+ factoryReset: 0x13,
130
+ };
131
+ export const EGG_OFFSET = {
132
+ pollingDivider: 21,
133
+ filterFlags: 22,
134
+ ledLiftOff: 24,
135
+ lod: 25,
136
+ angleSnapping: 26,
137
+ rippleControl: 27,
138
+ motionSync: 28,
139
+ reserved29: 29,
140
+ cpiLevels: 30,
141
+ firstCpiSplit: 51,
142
+ handedButton: 71,
143
+ firstButton: 77,
144
+ glassMode: 127,
145
+ angleTuning: 128,
146
+ forceMaxFps: 129,
147
+ };
148
+ export const EGG_CONFIG_SIZE = 1041;
149
+ export const EGG_COMMAND_SIZE = 64;
150
+ export const EGG_POLLING_RATES = [125, 250, 500, 1000, 2000, 4000, 8000];
151
+ export function eggNormalizeFeatureReport(raw, reportId, expectedTotal, payloadLength) {
152
+ // Some OP1 8K descriptors expose both feature reports at the full 1040-byte
153
+ // config size. On Windows, command replies then retain their A0/A1 wire
154
+ // header as the first payload byte. Treat that byte as framing instead of
155
+ // prepending a duplicate report ID and shifting the status/version fields.
156
+ // Status byte values observed on the wire (issue #107): 0x01 OK, 0x03 busy,
157
+ // 0x07 rejected, 0x08 mouse unreachable (RF sleep). All four are valid
158
+ // framing markers, not just OK/busy — treating only 0x01/0x03 as framing
159
+ // left rejected and RF-sleep replies on the OP1w 4K v2 falling through to
160
+ // the byte-shifting path below, corrupting the payload length calculation.
161
+ const hasWireHeader = raw.length === payloadLength
162
+ && raw.length >= 2
163
+ && (raw[0] === 0 || raw[0] === EGG_REPORT.config || raw[0] === EGG_REPORT.command)
164
+ && (raw[1] === 0x01 || raw[1] === 0x03 || raw[1] === 0x07 || raw[1] === 0x08);
165
+ if (hasWireHeader) {
166
+ const result = new Uint8Array(Math.max(expectedTotal, raw.length));
167
+ result.set(raw);
168
+ result[0] = reportId;
169
+ return result;
170
+ }
171
+ let includesId;
172
+ if (payloadLength > 0 && raw.length === payloadLength)
173
+ includesId = false;
174
+ else if (payloadLength > 0 && raw.length === payloadLength + 1 && raw[0] === reportId)
175
+ includesId = true;
176
+ else
177
+ includesId = raw.length > 0 && raw[0] === reportId;
178
+ const result = new Uint8Array(Math.max(expectedTotal, raw.length + (includesId ? 0 : 1)));
179
+ if (includesId)
180
+ result.set(raw);
181
+ else {
182
+ result[0] = reportId;
183
+ result.set(raw, 1);
184
+ }
185
+ return result;
186
+ }
187
+ export function eggProfileForPid(pid) {
188
+ const profile = EGG_DEVICE_PROFILES.get(pid);
189
+ if (!profile)
190
+ throw new Error(`Unsupported Endgame Gear product 0x${pid.toString(16)}.`);
191
+ return profile;
192
+ }
193
+ export function eggCpiStep(profile, cpi) {
194
+ return profile.configFamily === "v2" && cpi <= 10_000
195
+ ? profile.cpiStepLow
196
+ : profile.cpiStepHigh;
197
+ }
198
+ export function eggClampCpi(profile, value) {
199
+ const clamped = Math.max(profile.cpiMin, Math.min(profile.cpiMax, Math.round(value)));
200
+ const step = eggCpiStep(profile, clamped);
201
+ const rounded = Math.floor((clamped + step / 2) / step) * step;
202
+ return Math.max(profile.cpiMin, Math.min(profile.cpiMax, rounded));
203
+ }
204
+ export function eggIsValidCpi(profile, value) {
205
+ return Number.isInteger(value) && value === eggClampCpi(profile, value);
206
+ }
207
+ export function eggDpiOptions(profile) {
208
+ const values = [];
209
+ for (let cpi = profile.cpiMin; cpi <= profile.cpiMax;) {
210
+ values.push(cpi);
211
+ cpi += eggCpiStep(profile, cpi + 1);
212
+ }
213
+ return values;
214
+ }
215
+ export function eggLodOptions(profile, glassMode) {
216
+ return glassMode && profile.lodGlass ? profile.lodGlass : profile.lodNormal;
217
+ }
218
+ function decodeBcdByte(value) {
219
+ const high = value >> 4;
220
+ const low = value & 0x0f;
221
+ return high <= 9 && low <= 9 ? high * 10 + low : null;
222
+ }
223
+ /** Firmware stores BCD patch/major bytes, e.g. 37 01 => V1.37. */
224
+ export function eggFormatFirmwareVersion(bytes) {
225
+ for (const offset of [17, 16, 18, 2, 4, 6]) {
226
+ const patch = decodeBcdByte(bytes[offset] ?? 0xff);
227
+ const major = decodeBcdByte(bytes[offset + 1] ?? 0xff);
228
+ if (patch !== null && major !== null && major > 0) {
229
+ return `V${major}.${String(patch).padStart(2, "0")}`;
230
+ }
231
+ }
232
+ return null;
233
+ }
234
+ export function eggReadUint16LE(bytes, offset) {
235
+ return bytes[offset] | (bytes[offset + 1] << 8);
236
+ }
237
+ export function eggWriteUint16LE(bytes, offset, value) {
238
+ bytes[offset] = value & 0xff;
239
+ bytes[offset + 1] = value >> 8;
240
+ }
241
+ /**
242
+ * The wired 8K configuration does not expose the CPI stage currently selected
243
+ * by the mouse. Apply a generic CPI change to every enabled stage so it takes
244
+ * effect regardless of the runtime stage selection.
245
+ */
246
+ export function eggWriteEnabledCpiStages(bytes, x, y) {
247
+ const levels = Math.min(Math.max(bytes[EGG_OFFSET.cpiLevels], 1), 4);
248
+ for (let level = 0; level < levels; level += 1) {
249
+ const offset = EGG_OFFSET.firstCpiSplit + level * 5;
250
+ bytes[offset] = x === y ? 0 : 1;
251
+ eggWriteUint16LE(bytes, offset + 1, x);
252
+ eggWriteUint16LE(bytes, offset + 3, y);
253
+ }
254
+ }
255
+ export const EGG_BUTTON_ACTION_OPTIONS = [
256
+ { group: "Mouse", key: "mouse-left", label: "Left Click" },
257
+ { group: "Mouse", key: "mouse-right", label: "Right Click" },
258
+ { group: "Mouse", key: "mouse-middle", label: "Middle Click" },
259
+ { group: "Mouse", key: "mouse-back", label: "Back" },
260
+ { group: "Mouse", key: "mouse-forward", label: "Forward" },
261
+ { group: "Scroll", key: "scroll-up", label: "Wheel Up" },
262
+ { group: "Scroll", key: "scroll-down", label: "Wheel Down" },
263
+ { group: "Keyboard", key: "keyboard", label: "Keyboard shortcut" },
264
+ { group: "CPI", key: "cpi-loop", label: "CPI Loop" },
265
+ { group: "CPI", key: "fixed-cpi", label: "Fixed CPI" },
266
+ { group: "Media", key: "media-play", label: "Play / Pause" },
267
+ { group: "Media", key: "media-next", label: "Next Track" },
268
+ { group: "Media", key: "media-previous", label: "Previous Track" },
269
+ { group: "Media", key: "media-mute", label: "Mute" },
270
+ { group: "Media", key: "media-volume-up", label: "Volume Up" },
271
+ { group: "Media", key: "media-volume-down", label: "Volume Down" },
272
+ { group: "System", key: "browser-home", label: "Browser Home" },
273
+ { group: "System", key: "file-explorer", label: "File Explorer" },
274
+ { group: "Other", key: "disabled", label: "Disabled" },
275
+ ];
276
+ export function eggDecodeButtonAction(type, params) {
277
+ const p = (index) => params[index] ?? 0;
278
+ if (type === 0x00) {
279
+ const key = {
280
+ 0x01: "mouse-left",
281
+ 0x02: "mouse-right",
282
+ 0x04: "mouse-middle",
283
+ 0x08: "mouse-back",
284
+ 0x10: "mouse-forward",
285
+ }[p(0)];
286
+ if (key)
287
+ return { key };
288
+ }
289
+ if (type === 0x01 && p(0) === 0x01)
290
+ return { key: "scroll-up" };
291
+ if (type === 0x01 && p(0) === 0xff)
292
+ return { key: "scroll-down" };
293
+ if (type === 0x02)
294
+ return { key: "keyboard", modifiers: p(0) & 0x0f, usage: p(1) };
295
+ if (type === 0x09)
296
+ return { key: "cpi-loop" };
297
+ if (type === 0x0c) {
298
+ return { key: "fixed-cpi", x: p(1) | (p(2) << 8), y: p(3) | (p(4) << 8) };
299
+ }
300
+ if (type === 0x18 && p(0) === 0x96)
301
+ return { key: "browser-home" };
302
+ if (type === 0x18 && p(0) === 0x94)
303
+ return { key: "file-explorer" };
304
+ const media = {
305
+ 0xcd: "media-play",
306
+ 0xb5: "media-next",
307
+ 0xb6: "media-previous",
308
+ 0xe2: "media-mute",
309
+ 0xe9: "media-volume-up",
310
+ 0xea: "media-volume-down",
311
+ }[p(0)];
312
+ if (type === 0x20 && media)
313
+ return { key: media };
314
+ if (type === 0xff)
315
+ return { key: "disabled" };
316
+ return { key: "raw", rawType: type, rawParams: Array.from({ length: 5 }, (_, index) => p(index)) };
317
+ }
318
+ export function eggEncodeButtonAction(action) {
319
+ const params = (...values) => {
320
+ const result = [0, 0, 0, 0, 0];
321
+ values.slice(0, 5).forEach((value, index) => { result[index] = value & 0xff; });
322
+ return result;
323
+ };
324
+ switch (action.key) {
325
+ case "mouse-left": return { type: 0x00, params: params(0x01) };
326
+ case "mouse-right": return { type: 0x00, params: params(0x02) };
327
+ case "mouse-middle": return { type: 0x00, params: params(0x04) };
328
+ case "mouse-back": return { type: 0x00, params: params(0x08) };
329
+ case "mouse-forward": return { type: 0x00, params: params(0x10) };
330
+ case "scroll-up": return { type: 0x01, params: params(0x01) };
331
+ case "scroll-down": return { type: 0x01, params: params(0xff) };
332
+ case "keyboard": return { type: 0x02, params: params(action.modifiers ?? 0, action.usage ?? 0) };
333
+ case "cpi-loop": return { type: 0x09, params: params(0xf1) };
334
+ case "fixed-cpi": {
335
+ const x = action.x ?? 1600;
336
+ const y = action.y ?? x;
337
+ return { type: 0x0c, params: params(0, x, x >> 8, y, y >> 8) };
338
+ }
339
+ case "browser-home": return { type: 0x18, params: params(0x96) };
340
+ case "file-explorer": return { type: 0x18, params: params(0x94) };
341
+ case "media-play": return { type: 0x20, params: params(0xcd) };
342
+ case "media-next": return { type: 0x20, params: params(0xb5) };
343
+ case "media-previous": return { type: 0x20, params: params(0xb6) };
344
+ case "media-mute": return { type: 0x20, params: params(0xe2) };
345
+ case "media-volume-up": return { type: 0x20, params: params(0xe9) };
346
+ case "media-volume-down": return { type: 0x20, params: params(0xea) };
347
+ case "disabled": return { type: 0xff, params: params() };
348
+ case "raw": return null;
349
+ }
350
+ }
351
+ export function eggButtonActionLabel(action) {
352
+ if (action.key === "raw")
353
+ return "Custom (preserved)";
354
+ if (action.key === "keyboard") {
355
+ const modifiers = [
356
+ [0x01, "Ctrl"], [0x02, "Shift"], [0x04, "Alt"], [0x08, "Win"],
357
+ ];
358
+ const parts = modifiers.filter(([mask]) => (action.modifiers ?? 0) & mask).map(([, label]) => label);
359
+ parts.push(action.usage ? `HID 0x${action.usage.toString(16).padStart(2, "0")}` : "Unassigned");
360
+ return parts.join(" + ");
361
+ }
362
+ if (action.key === "fixed-cpi") {
363
+ return action.x === action.y ? `CPI ${action.x}` : `X ${action.x} / Y ${action.y}`;
364
+ }
365
+ return EGG_BUTTON_ACTION_OPTIONS.find((option) => option.key === action.key)?.label ?? action.key;
366
+ }
367
+ export function eggIsPlainLeftAction(bytes) {
368
+ return bytes[0] === 0x00 && bytes[1] === 0x01 && !bytes.slice(2, 6).some(Boolean);
369
+ }
370
+ const BUTTON_CONTROL_INDEX = [0, 1, 2, 3, 4, null, null];
371
+ const BUTTON_MAPPING_INDEX = [null, 0, 1, 2, 3, 5, 6];
372
+ export function eggButtonControlOffset(button) {
373
+ const index = BUTTON_CONTROL_INDEX[button];
374
+ return index === null || index === undefined ? null : EGG_OFFSET.firstButton + index * 7;
375
+ }
376
+ export function eggButtonMappingOffset(button, leftHanded) {
377
+ if (button === 0)
378
+ return leftHanded ? EGG_OFFSET.handedButton : null;
379
+ if (button === 1 && leftHanded)
380
+ return null;
381
+ const index = BUTTON_MAPPING_INDEX[button];
382
+ return index === null || index === undefined ? null : EGG_OFFSET.firstButton + index * 7 + 1;
383
+ }
384
+ //# sourceMappingURL=op1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op1.js","sourceRoot":"","sources":["../../src/endgame-gear/op1.ts"],"names":[],"mappings":"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"}