@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,540 @@
1
+ /**
2
+ * Razer per-PID capability registry.
3
+ *
4
+ * Razer's protocol is not self-describing: nothing on the wire says which
5
+ * commands a mouse answers, so the only way to know is a table keyed on the
6
+ * exact product id. This is that table, kept apart from the transport in
7
+ * `hid.ts` so adding a model is data rather than code.
8
+ *
9
+ * ## Provenance and what "supported" means here
10
+ *
11
+ * The product list and the transport grouping come from OpenRazer's public
12
+ * supported-device table and mouse driver (see
13
+ * `OPENRAZER_ALL_MICE_DEVELOPER_REFERENCE.md`). Only the entries marked
14
+ * `verified: true` have been exercised against real hardware by this project —
15
+ * everything else is transcribed protocol facts, not a tested driver.
16
+ *
17
+ * Nothing here is a guess about *packets*: every model below is driven by the
18
+ * same 90-byte commands already confirmed on the Viper V3 Pro. What varies per
19
+ * model, and what this table records, is which of those commands are valid,
20
+ * which transaction id the mouse answers on, and what the sensor and radio can
21
+ * actually do.
22
+ *
23
+ * ## Why an unverified entry is safe to ship
24
+ *
25
+ * - A wrong transaction id means the mouse never replies. `readStatus` throws
26
+ * on the firmware read and the panel reports a connection failure. Nothing
27
+ * is written.
28
+ * - A wrong capability flag suppresses a command rather than inventing one.
29
+ * - A wrong ceiling is caught by the read-back every setter already performs:
30
+ * the mouse keeps its own value, the driver notices and reports it.
31
+ *
32
+ * The one thing that would not be safe is sending a command a model does not
33
+ * implement, so unverified models are given the conservative flags below and
34
+ * the asymmetric lift-off *write probe* stays off for all of them.
35
+ *
36
+ * ## Deliberately absent
37
+ *
38
+ * - `legacy/old` (Orochi 2011 `0x0013`, DeathAdder 3.5G `0x0016`/`0x0029`).
39
+ * These predate the 90-byte report and need direct USB control writes, so
40
+ * this driver could only ever time out on them.
41
+ * - Orochi V2 Bluetooth (`0x0095`). A Bluetooth HID path is not the USB
42
+ * control channel and must not be assumed to take the same reports.
43
+ * - Viper Mini (`0x008a`), Viper V4 Pro (`0x00e5`/`0x00e6`) and Cobra
44
+ * (`0x00a3`), which have their own drivers in this folder. Listing them here
45
+ * would give two drivers the same device.
46
+ */
47
+ import { RAZER_TRANSACTION_ID_1F, RAZER_TRANSACTION_ID_3F, RAZER_TRANSACTION_ID_FF, } from "./codec.js";
48
+ // The cable tops out at 1000 Hz on the models verified so far, which is also
49
+ // the ceiling the legacy polling command can encode.
50
+ export const RATES_1K = [125, 500, 1000];
51
+ export const RATES_8K = [125, 500, 1000, 2000, 4000, 8000];
52
+ /**
53
+ * Products answering on `0x3f`, audited against OpenRazer's mouse driver.
54
+ *
55
+ * ## Why this is a flat list and not a field on the transport presets
56
+ *
57
+ * It was a preset field, and that was wrong for 26 of the 107 products. The
58
+ * transaction id does not follow the transport group, the connection, the
59
+ * model's age or its marketing family — OpenRazer picks it per product id, and
60
+ * the groups interleave all three values:
61
+ *
62
+ * - Basilisk `0x0064` is `0x3f` while Basilisk V2 `0x0085` is `0x1f` and
63
+ * Basilisk X HyperSpeed `0x0083` is `0xff`.
64
+ * - Viper `0x0078` is `0xff`, Viper 8KHz `0x0091` is `0xff`, Viper Mini SE
65
+ * `0x009e` is `0x1f`.
66
+ * - Inside one `new-receiver` group: Lancehead Wireless `0x006f` is `0x3f`,
67
+ * Pro Click `0x0077` is `0x1f`, Basilisk X HyperSpeed `0x0083` is `0xff`.
68
+ *
69
+ * A wrong id is silent — the mouse never replies — so there is no failure mode
70
+ * to catch an inherited guess. Keeping the ids in one auditable block, rather
71
+ * than spread across presets that imply a pattern, is what stops that
72
+ * inheritance happening again.
73
+ */
74
+ const TRANSACTION_3F = [
75
+ 0x0050, 0x0059, 0x005a, 0x005c, 0x0060, 0x0064, 0x0065, 0x006f, 0x0070,
76
+ 0x0072, 0x0073, 0x007c, 0x007d, 0x0084, 0x008c,
77
+ // --- Diverging from OpenRazer, on purpose ---------------------------------
78
+ // Viper Ultimate. OpenRazer sends `0xff` on every command for both ids, but
79
+ // a hardware report has `0x1f` silent and `0x3f` reading firmware, DPI,
80
+ // polling and battery correctly. Observed behaviour wins over the reference,
81
+ // and the mouse may well accept both. Worth re-testing against `0xff`.
82
+ 0x007a, 0x007b,
83
+ // DeathAdder Essential. Predates this audit: the driver has always sent
84
+ // `0x3f` here on the stated grounds that OpenRazer does, which the driver
85
+ // source does not bear out — it lists all three ids under `0xff`. Left as it
86
+ // was rather than changed blind, because nothing has connected one either
87
+ // way. Flagged in TESTING.md as the next thing to check on this family.
88
+ 0x006e, 0x0071, 0x0098,
89
+ ];
90
+ /** Products answering on `0x1f`. Same provenance as the list above. */
91
+ const TRANSACTION_1F = [
92
+ 0x0062, 0x006c, 0x0077, 0x0080, 0x0085, 0x0086, 0x0088, 0x008d, 0x008f,
93
+ 0x0090, 0x0094, 0x0096, 0x0099, 0x009a, 0x009c, 0x009e, 0x009f, 0x00a1,
94
+ // Mouse Dock Pro is not in OpenRazer's mouse table; hardware with a Naga V2
95
+ // Pro paired answers on `0x1f` like that generation's mice.
96
+ 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00aa, 0x00ab, 0x00af, 0x00b0, 0x00b2, 0x00b3,
97
+ 0x00b4, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00be, 0x00bf, 0x00c0, 0x00c1,
98
+ 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c7, 0x00c8, 0x00cb, 0x00cc, 0x00cd,
99
+ 0x00d0, 0x00d1, 0x00d3, 0x00d4, 0x00d6, 0x00d7,
100
+ // Viper V3 Pro SE. OpenRazer PR #2818 subclasses the Viper V3 Pro classes,
101
+ // and the transaction id is a property of those classes — so the id comes
102
+ // from the same source as `0x00c0`/`0x00c1` above rather than from the family
103
+ // name. The SE reference separately mentions `0xff`, but only for the
104
+ // HyperPolling dongle indicator command, which this driver does not send.
105
+ 0x00de, 0x00df,
106
+ // DeathAdder V4 Pro Carbon Fiber Edition. Same electronics as `0x00be`/
107
+ // `0x00bf` under a cosmetic SKU (Razer's own live `AvailableDevices.json`
108
+ // groups them the same way, receiver id one above the mouse id), so it
109
+ // shares that pair's transaction id — not independently audited.
110
+ 0x00ef, 0x00f0,
111
+ ];
112
+ /**
113
+ * `0xff` is the fallback because it is the id the largest group uses, not
114
+ * because it is safe to assume: a product missing from both lists above has
115
+ * simply not been audited, and will be silent if `0xff` is wrong for it.
116
+ */
117
+ function transactionIdFor(productId) {
118
+ if (TRANSACTION_3F.includes(productId))
119
+ return RAZER_TRANSACTION_ID_3F;
120
+ if (TRANSACTION_1F.includes(productId))
121
+ return RAZER_TRANSACTION_ID_1F;
122
+ return RAZER_TRANSACTION_ID_FF;
123
+ }
124
+ /**
125
+ * Sensor ceilings by generation, from published specifications rather than from
126
+ * the mouse — Razer exposes no "what is your maximum DPI" command. A ceiling
127
+ * that is too high costs a failed read-back on a value the mouse will not hold;
128
+ * one that is too low would refuse a value it would have taken, so these err
129
+ * generous where a model's exact figure is not encoded in its name.
130
+ */
131
+ const DPI_PRE_CHROMA = 8_200;
132
+ const DPI_CHROMA = 16_000;
133
+ const DPI_FOCUS = 20_000;
134
+ const DPI_FOCUS_PRO = 30_000;
135
+ const DPI_FOCUS_PRO_35K = 35_000;
136
+ // DeathAdder V4 Pro only. OpenRazer PR #2508 documents this model's own
137
+ // `DPI_MAX = 45000` (and raised the shared set-DPI clamp to match) — a higher
138
+ // ceiling than the rest of the 35K-sensor generation above, so it gets its
139
+ // own constant rather than reusing DPI_FOCUS_PRO_35K.
140
+ const DPI_DEATHADDER_V4_PRO = 45_000;
141
+ /**
142
+ * Chroma-era and older wired mice. OpenRazer's `standard` group answers on the
143
+ * original transaction id, and which interface carries the control channel
144
+ * varies by revision, so a vendor-defined collection is accepted too.
145
+ */
146
+ const STANDARD = {
147
+ transport: "standard",
148
+ wireless: false,
149
+ pollingRates: RATES_1K,
150
+ maxDpi: DPI_CHROMA,
151
+ hasBattery: false,
152
+ vendorControlInterface: true,
153
+ highRatePolling: false,
154
+ liftOff: false,
155
+ asymmetricLiftOff: false,
156
+ verified: false,
157
+ };
158
+ /** Same generation, but a model with a cell and a charging dock or receiver. */
159
+ const STANDARD_WIRELESS = {
160
+ ...STANDARD,
161
+ wireless: true,
162
+ hasBattery: true,
163
+ };
164
+ /**
165
+ * OpenRazer routes Naga X, Basilisk V3 and Basilisk V3 35K through USB control
166
+ * transfer index 3. WebHID cannot select a `wIndex`, so the browser has to be
167
+ * pointed at the HID collection belonging to that interface instead: the picker
168
+ * offers every interface and the wrong one simply never answers.
169
+ */
170
+ const INDEX3 = {
171
+ ...STANDARD,
172
+ transport: "index3",
173
+ maxDpi: DPI_FOCUS_PRO,
174
+ };
175
+ /** Atheris and Orochi V2 receivers, which need a longer response window. */
176
+ const ATHERIS_RECEIVER = {
177
+ ...STANDARD,
178
+ transport: "atheris-receiver",
179
+ wireless: true,
180
+ hasBattery: true,
181
+ maxDpi: DPI_FOCUS,
182
+ };
183
+ /**
184
+ * The modern HyperSpeed generation, wired half. These are wireless mice on a
185
+ * cable, so they keep their battery commands; the cable itself runs at the
186
+ * legacy ceiling.
187
+ */
188
+ const MODERN_WIRED = {
189
+ transport: "new-receiver",
190
+ wireless: false,
191
+ pollingRates: RATES_1K,
192
+ maxDpi: DPI_FOCUS,
193
+ hasBattery: true,
194
+ highRatePolling: false,
195
+ liftOff: false,
196
+ asymmetricLiftOff: false,
197
+ verified: false,
198
+ };
199
+ /** The stock 1000 Hz receiver these ship with. */
200
+ const MODERN_RECEIVER = {
201
+ ...MODERN_WIRED,
202
+ wireless: true,
203
+ highRatePolling: true,
204
+ };
205
+ /**
206
+ * Older HyperSpeed receivers, which predate the extended polling command and
207
+ * answer only the legacy one.
208
+ */
209
+ const LEGACY_RECEIVER = {
210
+ ...MODERN_RECEIVER,
211
+ highRatePolling: false,
212
+ };
213
+ /** Receivers that ship as HyperPolling dongles and reach 8000 Hz. */
214
+ const HYPERPOLLING_RECEIVER = {
215
+ ...MODERN_RECEIVER,
216
+ pollingRates: RATES_8K,
217
+ maxDpi: DPI_FOCUS_PRO_35K,
218
+ };
219
+ /** Viper Ultimate / Viper Mini SE / DeathAdder V2 Pro timing group. */
220
+ const VIPER_RECEIVER_WIRED = {
221
+ ...MODERN_WIRED,
222
+ transport: "viper-receiver",
223
+ };
224
+ const VIPER_RECEIVER_WIRELESS = {
225
+ ...MODERN_RECEIVER,
226
+ transport: "viper-receiver",
227
+ };
228
+ /**
229
+ * DeathAdder Essential family. 6400 DPI is the officially published maximum
230
+ * and the ceiling the vendor software offers.
231
+ *
232
+ * Not verified: it shipped before this registry existed and TESTING.md has
233
+ * always carried it under "not yet hardware-tested". An earlier revision of
234
+ * this file marked it verified by mistake, which was wrong in both directions —
235
+ * it suppressed the "untested model" label and armed the strict battery read.
236
+ */
237
+ const DEATHADDER_ESSENTIAL = {
238
+ transport: "standard",
239
+ wireless: false,
240
+ pollingRates: RATES_1K,
241
+ maxDpi: 6400,
242
+ hasBattery: false,
243
+ vendorControlInterface: true,
244
+ highRatePolling: false,
245
+ liftOff: false,
246
+ asymmetricLiftOff: false,
247
+ verified: false,
248
+ };
249
+ const VIPER_V2_PRO = {
250
+ transport: "new-receiver",
251
+ maxDpi: DPI_FOCUS_PRO,
252
+ hasBattery: true,
253
+ // Stock receiver, not an 8K HyperPolling dongle.
254
+ pollingRates: RATES_1K,
255
+ liftOff: true,
256
+ asymmetricLiftOff: true,
257
+ verified: true,
258
+ };
259
+ const VIPER_V3_PRO = {
260
+ transport: "viper-receiver",
261
+ maxDpi: DPI_FOCUS_PRO_35K,
262
+ hasBattery: true,
263
+ liftOff: true,
264
+ asymmetricLiftOff: true,
265
+ // Class 0x02 is confirmed on both of this model's connections, so it belongs
266
+ // on the shared preset rather than on one product id. It sat on `0x00c1`
267
+ // alone while only the receiver had been exercised.
268
+ buttonMapping: true,
269
+ verified: true,
270
+ };
271
+ /**
272
+ * Every product this driver claims, before the audited transaction id is
273
+ * attached. Build `RAZER_PRODUCTS` from this rather than reading it directly.
274
+ *
275
+ * The `verified: true` entries are the ones a hardware report has covered;
276
+ * the rest come from the OpenRazer reference and have never been connected.
277
+ */
278
+ const PRODUCT_DEFINITIONS = [
279
+ // ---- Verified on hardware -------------------------------------------------
280
+ [0x00a5, { model: "Viper V2 Pro", wireless: false, highRatePolling: false, ...VIPER_V2_PRO }],
281
+ [0x00a6, { model: "Viper V2 Pro", wireless: true, highRatePolling: true, ...VIPER_V2_PRO }],
282
+ [0x00c0, { model: "Viper V3 Pro", wireless: false, pollingRates: RATES_1K, highRatePolling: false, ...VIPER_V3_PRO }],
283
+ [0x00c1, { model: "Viper V3 Pro", wireless: true, pollingRates: RATES_8K, highRatePolling: true, ...VIPER_V3_PRO }],
284
+ [0x006e, { model: "DeathAdder Essential", ...DEATHADDER_ESSENTIAL }],
285
+ [0x0071, { model: "DeathAdder Essential White Edition", ...DEATHADDER_ESSENTIAL }],
286
+ [0x0098, { model: "DeathAdder Essential (2021)", ...DEATHADDER_ESSENTIAL }],
287
+ // ---- standard: wired, original transaction id -----------------------------
288
+ // Ceilings encoded in a model's own name are used as given; the rest take the
289
+ // generation default.
290
+ [0x0015, { model: "Naga", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
291
+ [0x001f, { model: "Naga Epic", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
292
+ [0x0020, { model: "Abyssus 1800", ...STANDARD, maxDpi: 1800 }],
293
+ [0x0024, { model: "Mamba 2012 (Wired)", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
294
+ [0x0025, { model: "Mamba 2012", ...STANDARD_WIRELESS, maxDpi: DPI_PRE_CHROMA }],
295
+ [0x002e, { model: "Naga 2012", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
296
+ [0x002f, { model: "Imperator 2012", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
297
+ [0x0032, { model: "Ouroboros 2012", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
298
+ [0x0034, { model: "Taipan", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
299
+ [0x0036, { model: "Naga Hex (Red)", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
300
+ [0x0037, { model: "DeathAdder 2013", ...STANDARD, maxDpi: 6400 }],
301
+ [0x0038, { model: "DeathAdder 1800", ...STANDARD, maxDpi: 1800 }],
302
+ [0x0039, { model: "Orochi 2013", ...STANDARD_WIRELESS, maxDpi: DPI_PRE_CHROMA }],
303
+ [0x003e, { model: "Naga Epic Chroma (Wired)", ...STANDARD }],
304
+ [0x003f, { model: "Naga Epic Chroma", ...STANDARD_WIRELESS }],
305
+ [0x0040, { model: "Naga 2014", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
306
+ [0x0041, { model: "Naga Hex", ...STANDARD }],
307
+ [0x0042, { model: "Abyssus 2014", ...STANDARD, maxDpi: 1800 }],
308
+ [0x0043, { model: "DeathAdder Chroma", ...STANDARD }],
309
+ [0x0044, { model: "Mamba (Wired)", ...STANDARD }],
310
+ [0x0045, { model: "Mamba", ...STANDARD_WIRELESS }],
311
+ [0x0046, { model: "Mamba Tournament Edition", ...STANDARD }],
312
+ [0x0048, { model: "Orochi (Wired)", ...STANDARD, maxDpi: DPI_PRE_CHROMA }],
313
+ [0x004c, { model: "Diamondback Chroma", ...STANDARD }],
314
+ [0x004f, { model: "DeathAdder 2000", ...STANDARD, maxDpi: 2000 }],
315
+ [0x0050, { model: "Naga Hex V2", ...STANDARD }],
316
+ [0x0053, { model: "Naga Chroma", ...STANDARD }],
317
+ [0x0054, { model: "DeathAdder 3500", ...STANDARD, maxDpi: 3500 }],
318
+ [0x0059, { model: "Lancehead (Wired)", ...STANDARD }],
319
+ [0x005a, { model: "Lancehead", ...STANDARD_WIRELESS }],
320
+ [0x005b, { model: "Abyssus V2", ...STANDARD, maxDpi: 5000 }],
321
+ [0x005c, { model: "DeathAdder Elite", ...STANDARD }],
322
+ [0x005e, { model: "Abyssus 2000", ...STANDARD, maxDpi: 2000 }],
323
+ [0x0060, { model: "Lancehead Tournament Edition", ...STANDARD }],
324
+ [0x0064, { model: "Basilisk", ...STANDARD }],
325
+ [0x0065, { model: "Basilisk Essential", ...STANDARD, maxDpi: 6400 }],
326
+ [0x0067, { model: "Naga Trinity", ...STANDARD }],
327
+ [0x006a, { model: "Abyssus Elite (D.Va Edition)", ...STANDARD, maxDpi: 7200 }],
328
+ [0x006b, { model: "Abyssus Essential", ...STANDARD, maxDpi: 7200 }],
329
+ [0x006c, { model: "Mamba Elite", ...STANDARD }],
330
+ [0x0084, { model: "DeathAdder V2", ...STANDARD, maxDpi: DPI_FOCUS, dpiStorageByte: 0x00 }],
331
+ [0x0085, { model: "Basilisk V2", ...STANDARD, maxDpi: DPI_FOCUS }],
332
+ [0x008c, { model: "DeathAdder V2 Mini", ...STANDARD, maxDpi: 8500 }],
333
+ [0x008d, { model: "Naga Left-Handed Edition 2020", ...STANDARD, maxDpi: DPI_FOCUS }],
334
+ // Wired, but the whole point of the model is 8000 Hz, which the legacy
335
+ // polling command cannot encode.
336
+ [0x0091, { model: "Viper 8KHz", ...STANDARD, maxDpi: DPI_FOCUS, pollingRates: RATES_8K, highRatePolling: true }],
337
+ [0x00a1, { model: "DeathAdder V2 Lite", ...STANDARD, maxDpi: 8500 }],
338
+ // Hardware report: the legacy read `00/85` comes back with status 0x05 (not
339
+ // supported) and the extended read `00/c0` answers 8000/4, so the mouse was
340
+ // already sitting at 2000 Hz while this row still offered a 1000 Hz ceiling.
341
+ // Wired, like the Viper 8KHz above, but HyperPolling is the point of the
342
+ // model and the legacy command cannot encode it.
343
+ [0x00b2, {
344
+ model: "DeathAdder V3",
345
+ ...STANDARD,
346
+ maxDpi: DPI_FOCUS_PRO,
347
+ pollingRates: RATES_8K,
348
+ highRatePolling: true,
349
+ }],
350
+ // Standalone HyperPolling Wireless Dongle. OpenRazer reads extended polling
351
+ // with transaction 0x1f and commits a change with two writes: selector 0x00
352
+ // on 0x1f, then selector 0x01 on 0xff. Settings are forwarded to the paired
353
+ // mouse, so expose the Focus Pro ceiling used by the DeathAdder V3 Pro while
354
+ // leaving the entry unverified until OpenMouse hardware captures it.
355
+ [0x00b3, {
356
+ model: "HyperPolling Wireless Dongle",
357
+ ...HYPERPOLLING_RECEIVER,
358
+ transport: "viper-receiver",
359
+ maxDpi: DPI_FOCUS_PRO,
360
+ vendorControlInterface: true,
361
+ extendedPollingCommitTransactionId: RAZER_TRANSACTION_ID_FF,
362
+ connectionLabel: "HyperPolling Wireless Dongle",
363
+ }],
364
+ // ---- index3: wired, control channel on USB interface 3 --------------------
365
+ [0x0096, { model: "Naga X", ...INDEX3, maxDpi: 18_000 }],
366
+ [0x0099, { model: "Basilisk V3", ...INDEX3, maxDpi: 26_000 }],
367
+ [0x00cb, { model: "Basilisk V3 35K", ...INDEX3, maxDpi: DPI_FOCUS_PRO_35K }],
368
+ // ---- atheris-receiver: longer receiver wait -------------------------------
369
+ [0x0062, { model: "Atheris", ...ATHERIS_RECEIVER, maxDpi: 7200 }],
370
+ [0x0094, { model: "Orochi V2", ...ATHERIS_RECEIVER, maxDpi: 18_000 }],
371
+ // ---- viper-receiver -------------------------------------------------------
372
+ [0x007a, { model: "Viper Ultimate (Wired)", ...VIPER_RECEIVER_WIRED }],
373
+ // Confirmed on hardware (PR #45): the dongle's Generic-Desktop-Mouse
374
+ // interface is Chrome-protected, so every collection is feat[none] and
375
+ // sendFeatureReport fails on any id. Native HAL only.
376
+ [0x007b, { model: "Viper Ultimate", ...VIPER_RECEIVER_WIRELESS, nativeOnly: true }],
377
+ [0x007c, { model: "DeathAdder V2 Pro (Wired)", ...VIPER_RECEIVER_WIRED }],
378
+ [0x007d, { model: "DeathAdder V2 Pro", ...VIPER_RECEIVER_WIRELESS }],
379
+ [0x009e, { model: "Viper Mini Signature Edition (Wired)", ...VIPER_RECEIVER_WIRED, maxDpi: DPI_FOCUS_PRO }],
380
+ [0x009f, { model: "Viper Mini Signature Edition", ...VIPER_RECEIVER_WIRELESS, maxDpi: DPI_FOCUS_PRO, pollingRates: RATES_8K }],
381
+ // Verified on hardware with the stock HyperSpeed receiver, and the first
382
+ // model to prove `highRatePolling` is genuinely per-PID rather than a
383
+ // property of the transport group or of being wireless: this receiver
384
+ // answers only the legacy divisor-of-1000 command and rejects the extended
385
+ // one (`0x00`/`0x40`) as unsupported. 125/500/1000 Hz were each written and
386
+ // read back.
387
+ //
388
+ // Do not "tidy" this back onto the group default. 0x00a6 is the standing
389
+ // counter-example in the other direction — a 1000 Hz receiver that does use
390
+ // the extended command — so neither the group nor the rate ceiling predicts
391
+ // this, and it can only be settled per product.
392
+ // Lift-off reported working here, so the tracking control stays on — but not
393
+ // the asymmetric pair, which was never exercised. If this model turns out to
394
+ // answer `0x0b`/`0x85` with zeros the way the Basilisk X HyperSpeed does, it
395
+ // will show a permanent "Low" and refuse every level; that is the thing to
396
+ // check before trusting it.
397
+ [0x00b8, { model: "Viper V3 HyperSpeed", ...VIPER_RECEIVER_WIRELESS, highRatePolling: false, liftOff: true, maxDpi: DPI_FOCUS_PRO, verified: true }],
398
+ // Viper V3 Pro SE (`RZ01-0455`). OpenRazer PR #2818 implements it by
399
+ // subclassing the Viper V3 Pro rather than writing a new codec, so the packet
400
+ // format, the DPI pair and the extended polling commands are the same ones
401
+ // `0x00c0`/`0x00c1` already use.
402
+ //
403
+ // Two things are deliberately not inherited from that pair. `verified` stays
404
+ // false — nothing has connected one here, and the V3 Pro's flag was earned by
405
+ // a hardware report on its own product ids. `liftOff` stays false because it
406
+ // cannot be probed: a mouse without the feature answers `0x0b`/`0x85` with
407
+ // status `0x02` and zeros, which decodes as a legitimate "Low".
408
+ //
409
+ // Polling: settled on hardware, and it went the other way from OpenRazer.
410
+ // `0x00df` first shipped here with the 8 kHz ladder because OpenRazer's SE
411
+ // wireless class exposes it. A capture on the stock HyperSpeed receiver has
412
+ // the extended read (`0x00`/`0xc0`) answered with status `0x05` — not
413
+ // supported — and the legacy read (`0x00`/`0x85`) answering a divisor of 1,
414
+ // i.e. 1000 Hz. An outright refusal, not a write that confirms and does
415
+ // nothing, so this needs no rate measurement to settle.
416
+ //
417
+ // Razer's own specification agrees: "1000 Hz normally, up to 8000 Hz with
418
+ // HyperPolling Dongle". The dongle is a different receiver and would enumerate
419
+ // as its own product id; this row describes the one in the box.
420
+ [0x00de, {
421
+ model: "Viper V3 Pro SE (Wired)",
422
+ ...VIPER_RECEIVER_WIRED,
423
+ maxDpi: DPI_FOCUS_PRO_35K,
424
+ // Which interface carries the control channel has not been established for
425
+ // this model, so accept the vendor-defined shape as well as the plain
426
+ // mouse one and let the exchange itself reject what cannot answer.
427
+ vendorControlInterface: true,
428
+ }],
429
+ [0x00df, {
430
+ model: "Viper V3 Pro SE",
431
+ ...VIPER_RECEIVER_WIRELESS,
432
+ maxDpi: DPI_FOCUS_PRO_35K,
433
+ pollingRates: RATES_1K,
434
+ highRatePolling: false,
435
+ vendorControlInterface: true,
436
+ }],
437
+ // ---- new-receiver ---------------------------------------------------------
438
+ // Dock, not a mouse: settings pass through to whichever mouse is paired.
439
+ // Polling rates are discovered per session — a Naga stays on the 1 kHz ladder,
440
+ // while a HyperPolling-capable mouse unlocks the 8 kHz one.
441
+ [0x00a4, {
442
+ model: "Mouse Dock Pro",
443
+ ...MODERN_RECEIVER,
444
+ // Verified only with a Naga V2 Pro paired (Focus Pro 30k). A higher dock
445
+ // ceiling for 35k mice is untested through this path, so keep the observed
446
+ // sensor limit rather than advertising an unverified range.
447
+ maxDpi: DPI_FOCUS_PRO,
448
+ probePollingRates: true,
449
+ connectionLabel: "Mouse Dock Pro",
450
+ // Conservative pre-probe defaults; `readPollingRateHz` replaces both once
451
+ // it knows which command the paired mouse answers.
452
+ pollingRates: RATES_1K,
453
+ highRatePolling: true,
454
+ verified: true,
455
+ }],
456
+ [0x006f, { model: "Lancehead Wireless", ...LEGACY_RECEIVER, maxDpi: DPI_CHROMA }],
457
+ [0x0070, { model: "Lancehead Wireless (Wired)", ...MODERN_WIRED, maxDpi: DPI_CHROMA }],
458
+ [0x0072, { model: "Mamba Wireless", ...LEGACY_RECEIVER, maxDpi: DPI_CHROMA }],
459
+ [0x0073, { model: "Mamba Wireless (Wired)", ...MODERN_WIRED, maxDpi: DPI_CHROMA }],
460
+ [0x0077, { model: "Pro Click", ...LEGACY_RECEIVER, maxDpi: DPI_CHROMA }],
461
+ [0x0080, { model: "Pro Click (Wired)", ...MODERN_WIRED, maxDpi: DPI_CHROMA }],
462
+ [0x0083, { model: "Basilisk X HyperSpeed", ...LEGACY_RECEIVER, maxDpi: DPI_CHROMA }],
463
+ [0x0086, { model: "Basilisk Ultimate (Wired)", ...MODERN_WIRED }],
464
+ [0x0088, { model: "Basilisk Ultimate", ...LEGACY_RECEIVER }],
465
+ [0x008f, { model: "Naga Pro (Wired)", ...MODERN_WIRED }],
466
+ [0x0090, { model: "Naga Pro", ...LEGACY_RECEIVER }],
467
+ [0x009a, { model: "Pro Click Mini", ...LEGACY_RECEIVER, maxDpi: 12_000 }],
468
+ [0x009c, { model: "DeathAdder V2 X HyperSpeed", ...LEGACY_RECEIVER, maxDpi: 14_000 }],
469
+ [0x00a7, { model: "Naga V2 Pro (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO, verified: true }],
470
+ [0x00a8, { model: "Naga V2 Pro", ...MODERN_RECEIVER, maxDpi: DPI_FOCUS_PRO, verified: true }],
471
+ [0x00aa, { model: "Basilisk V3 Pro (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO }],
472
+ [0x00ab, { model: "Basilisk V3 Pro", ...MODERN_RECEIVER, maxDpi: DPI_FOCUS_PRO }],
473
+ [0x00af, { model: "Cobra Pro (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO }],
474
+ [0x00b0, { model: "Cobra Pro", ...MODERN_RECEIVER, maxDpi: DPI_FOCUS_PRO }],
475
+ [0x00b4, { model: "Naga V2 HyperSpeed", ...LEGACY_RECEIVER, maxDpi: DPI_FOCUS_PRO }],
476
+ // Verified on firmware 2.1 over the cable: same 13 write/read-back steps as
477
+ // the receiver below, polling measured (126 Hz peak at 125), battery reads
478
+ // "Charging" and climbs while plugged in.
479
+ [0x00b6, { model: "DeathAdder V3 Pro (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO, verified: true }],
480
+ // Hardware report: the extended command is accepted and reads back, but the
481
+ // measured report rate stays at 1000 Hz whatever is written. This model ships
482
+ // with the stock 1000 Hz HyperSpeed receiver, not the 8000 Hz HyperPolling
483
+ // dongle (`0x00b3`, which this driver does not claim), so the extended
484
+ // encoding was addressing a ceiling the hardware does not have. `0x00c3` is
485
+ // the same model on a second product id and is likely the same, but nobody
486
+ // has measured it — see TESTING.md.
487
+ //
488
+ // Verified on firmware 2.1 with the legacy command: 125/500/1000 Hz each
489
+ // round-tripped AND measured (124 Hz and 842 Hz peak `pointerrawupdate` at
490
+ // 125 and 1000), DPI, auto sleep and low power persisted across a reconnect
491
+ // and a power cycle. The wired `0x00b6` above was verified the same way.
492
+ [0x00b7, { model: "DeathAdder V3 Pro", ...MODERN_RECEIVER, highRatePolling: false, maxDpi: DPI_FOCUS_PRO, verified: true }],
493
+ [0x00b9, { model: "Basilisk V3 X HyperSpeed", ...LEGACY_RECEIVER, maxDpi: 18_000 }],
494
+ // Was nativeOnly: the control channel used to sit on a Chrome-protected
495
+ // collection (with Synapse fully stopped the diagnostics harness got "no
496
+ // feature report channel" on every interface, wired and wireless both —
497
+ // see git blame). Razer's own live `AvailableDevices.json` on Synapse Web
498
+ // now lists this model (productId 190/191, i.e. 0x00be/0x00bf), meaning a
499
+ // firmware or descriptor update moved the control channel off that
500
+ // collection. Re-tested and confirmed reachable over WebHID.
501
+ // OpenRazer PR #2508: both the cable and the HyperPolling dongle reach
502
+ // 8000 Hz on this model (the wired half is not capped at MODERN_WIRED's
503
+ // usual 1000 Hz — a HyperPolling receiver ships in the box, so the cable
504
+ // gets the same ceiling as the dongle).
505
+ [0x00be, { model: "DeathAdder V4 Pro (Wired)", ...MODERN_WIRED, pollingRates: RATES_8K, highRatePolling: true, maxDpi: DPI_DEATHADDER_V4_PRO }],
506
+ [0x00bf, { model: "DeathAdder V4 Pro", ...HYPERPOLLING_RECEIVER, maxDpi: DPI_DEATHADDER_V4_PRO }],
507
+ // Carbon Fiber Edition — cosmetic SKU on its own product ids, listed
508
+ // alongside 0x00be/0x00bf in Razer's live AvailableDevices.json
509
+ // (productId 239/240). Not independently hardware-tested; same specs
510
+ // assumed as the standard edition until proven otherwise.
511
+ [0x00ef, { model: "DeathAdder V4 Pro Carbon Fiber Edition (Wired)", ...MODERN_WIRED, pollingRates: RATES_8K, highRatePolling: true, maxDpi: DPI_DEATHADDER_V4_PRO }],
512
+ [0x00f0, { model: "DeathAdder V4 Pro Carbon Fiber Edition", ...HYPERPOLLING_RECEIVER, maxDpi: DPI_DEATHADDER_V4_PRO }],
513
+ [0x00c2, { model: "DeathAdder V3 Pro (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO }],
514
+ [0x00c3, { model: "DeathAdder V3 Pro", ...MODERN_RECEIVER, maxDpi: DPI_FOCUS_PRO }],
515
+ [0x00c4, { model: "DeathAdder V3 HyperSpeed (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO }],
516
+ [0x00c5, { model: "DeathAdder V3 HyperSpeed", ...LEGACY_RECEIVER, maxDpi: DPI_FOCUS_PRO }],
517
+ [0x00c7, { model: "Pro Click V2 Vertical Edition (Wired)", ...MODERN_WIRED }],
518
+ [0x00c8, { model: "Pro Click V2 Vertical Edition", ...LEGACY_RECEIVER }],
519
+ [0x00cc, { model: "Basilisk V3 Pro 35K (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO_35K }],
520
+ [0x00cd, { model: "Basilisk V3 Pro 35K", ...HYPERPOLLING_RECEIVER }],
521
+ [0x00d0, { model: "Pro Click V2 (Wired)", ...MODERN_WIRED }],
522
+ [0x00d1, { model: "Pro Click V2", ...LEGACY_RECEIVER }],
523
+ [0x00d3, { model: "Basilisk Mobile (Wired)", ...MODERN_WIRED, maxDpi: 18_000 }],
524
+ [0x00d4, { model: "Basilisk Mobile", ...LEGACY_RECEIVER, maxDpi: 18_000 }],
525
+ [0x00d6, { model: "Basilisk V3 Pro 35K Phantom Green (Wired)", ...MODERN_WIRED, maxDpi: DPI_FOCUS_PRO_35K }],
526
+ [0x00d7, { model: "Basilisk V3 Pro 35K Phantom Green", ...HYPERPOLLING_RECEIVER }],
527
+ ];
528
+ /**
529
+ * Every product, with its audited transaction id attached.
530
+ *
531
+ * Joined here rather than written into each row so there is exactly one place
532
+ * the id can come from, and no preset can supply one by inheritance.
533
+ */
534
+ export const RAZER_PRODUCTS = new Map(PRODUCT_DEFINITIONS.map(([productId, product]) => [
535
+ productId,
536
+ { ...product, transactionId: transactionIdFor(productId) },
537
+ ]));
538
+ /** Product ids for the WebHID picker filters in `../vendors.ts`. */
539
+ export const RAZER_PRODUCT_IDS = [...RAZER_PRODUCTS.keys()];
540
+ //# sourceMappingURL=devices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/razer/devices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./codec.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/razer/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./codec.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/razer/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare const RAZER_V4_REPORT_ID = 0;
2
+ export declare const RAZER_V4_REPORT_LENGTH = 90;
3
+ export declare const RAZER_V4_PRODUCTS: Map<number, {
4
+ wireless: boolean;
5
+ }>;
6
+ export declare const RAZER_V4_MAX_DPI_STAGES = 5;
7
+ export declare const RAZER_V4_POLLING_CODES: Map<number, number>;
8
+ export interface RazerV4DpiState {
9
+ activeStage: number;
10
+ stages: Array<{
11
+ x: number;
12
+ y: number;
13
+ }>;
14
+ }
15
+ export declare function razerV4Crc(report: Uint8Array): number;
16
+ export declare function buildRazerV4Report(commandClass: number, commandId: number, dataSize: number, args?: Uint8Array<ArrayBufferLike>): Uint8Array<ArrayBuffer>;
17
+ export declare function decodeRazerV4DpiState(args: Uint8Array): RazerV4DpiState;
18
+ export declare function decodeRazerV4PollingCode(code: number | undefined): number;
19
+ //# sourceMappingURL=v4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4.d.ts","sourceRoot":"","sources":["../../src/razer/v4.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,iBAAiB;cAA+B,OAAO;EAGlE,CAAC;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,sBAAsB,qBAEjC,CAAC;AACH,MAAM,WAAW,eAAe;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE;AAEjG,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAIrD;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,UAAU,CAAC,eAAe,CAAoB,GACnD,UAAU,CAAC,WAAW,CAAC,CAWzB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAYvE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIzE"}