@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,587 @@
1
+ import { ASUS_GLADIUS_II_USAGE, ASUS_GLADIUS_II_USAGE_PAGE, ASUS_VENDOR_ID, ROG_GLADIUS_II_PRODUCT_ID, } from "../asus/index.js";
2
+ import { ATK_COMPX_PRODUCT_IDS } from "./atk/products.js";
3
+ import { MICROSOFT_PRODUCT_CLASSIC, MICROSOFT_PRODUCT_PRO, MICROSOFT_VENDOR_ID, MICROSOFT_CLASSIC_USAGE_PAGE, MICROSOFT_CLASSIC_USAGE, MICROSOFT_PRO_USAGE_PAGE, MICROSOFT_PRO_USAGE } from "../microsoft/index.js";
4
+ import { INCOTT_PRODUCT_IDS, INCOTT_USAGE_PAGE, INCOTT_VENDOR_ID } from "../incott/index.js";
5
+ import { EGG_WE_HID_FILTERS } from "./endgame/egg-we-control.js";
6
+ import { GEARHUB_PRODUCTS, GEARHUB_VENDOR_ID } from "@openmouse/protocol/gearhub";
7
+ import { GWOLVES_PRODUCTS } from "./gwolves/products.js";
8
+ import { LAMZU_INCA_PRODUCTS, LAMZU_INCA_VENDOR_ID } from "@openmouse/protocol/lamzu";
9
+ import { MCHOSE_CONFIG_USAGE, MCHOSE_CONFIG_USAGE_PAGE, MCHOSE_DOCK_PRODUCT_ID, MCHOSE_DOCK_USAGE, MCHOSE_DOCK_USAGE_PAGE, MCHOSE_A5_GEN1_PRODUCTS, MCHOSE_A5_GEN1_USAGE_PAGE, MCHOSE_A5_GEN1_VENDOR_ID, } from "@openmouse/protocol/mchose";
10
+ import { HIDPP_BLUETOOTH_USAGE_PAGE, HIDPP_USAGE_PAGE, LOGITECH_BOLT_PRODUCT_IDS, LOGITECH_DIRECT_PRODUCT_IDS, } from "@openmouse/protocol/logitech";
11
+ import { RAZER_PRODUCTS, RAZER_PRODUCT_IDS } from "@openmouse/protocol/razer-devices";
12
+ import { PULSAR_XS1_PRODUCT_IDS } from "@openmouse/protocol/pulsar";
13
+ import { BITMOUSE_PRODUCT_IDS, BITMOUSE_USAGE, BITMOUSE_USAGE_PAGE, } from "@openmouse/protocol/bitmouse";
14
+ import { NINJUTSO_LEGACY_MOUSE_PRODUCT_IDS, NINJUTSO_LEGACY_RECEIVER_PRODUCT_IDS, NINJUTSO_LEGACY_VENDOR_ID, NINJUTSO_MOUSE_PRODUCT_IDS, NINJUTSO_RECEIVER_PRODUCT_IDS, NINJUTSO_VENDOR_ID, } from "@openmouse/protocol/ninjutso";
15
+ import { ZAUNKOENIG_PRODUCT_IDS, ZAUNKOENIG_USAGE_PAGE, ZAUNKOENIG_VENDOR_ID, } from "@openmouse/protocol/zaunkoenig";
16
+ import { CORSAIR_CONFIG_USAGE, CORSAIR_PRODUCT_IDS, CORSAIR_USAGE_PAGE, CORSAIR_VENDOR_ID, } from "@openmouse/protocol/corsair";
17
+ import { TEEVOLUTION_LCD_USAGE, TEEVOLUTION_LCD_USAGE_PAGE, } from "@openmouse/protocol/teevolution";
18
+ import { WOOTING_CONFIG_USAGE, WOOTING_CONFIG_USAGE_PAGE, WOOTING_PRODUCT_IDS, WOOTING_VENDOR_ID, } from "@openmouse/protocol/wooting";
19
+ import { STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, } from "@openmouse/protocol/steelseries";
20
+ import { WALLHACK_KEYBOARD_ALT_VENDOR_ID, WALLHACK_KEYBOARD_PRODUCT_IDS, WALLHACK_KEYBOARD_USAGE, WALLHACK_KEYBOARD_USAGE_PAGE, WALLHACK_MOUSE_PRODUCT_IDS, WALLHACK_MOUSE_USAGE, WALLHACK_MOUSE_USAGE_PAGE, WALLHACK_VENDOR_ID, } from "@openmouse/protocol/wallhack";
21
+ import { DAREU_COMMAND_USAGE, DAREU_COMMAND_USAGE_PAGE, DAREU_PRODUCT_IDS, DAREU_VENDOR_ID, } from "@openmouse/protocol/dareu";
22
+ import { HYPERX_PULSEFIRE_HASTE_KINGSTON_PIDS, HYPERX_PULSEFIRE_HASTE_HP_PIDS, HYPERX_USAGE_PAGE, HYPERX_VENDOR_ID_HP, HYPERX_VENDOR_ID_KINGSTON, } from "@openmouse/protocol/hyperx";
23
+ import { RAWM_PRODUCT_IDS, RAWM_USAGE, RAWM_USAGE_PAGE, RAWM_VENDOR_ID } from "@openmouse/protocol/rawm";
24
+ export const VENDOR_ID = {
25
+ asus: ASUS_VENDOR_ID,
26
+ pulsar: 0x3710,
27
+ endgameGear: 0x3367,
28
+ wlmouse: 0x36a7,
29
+ lamzu: 0x373e,
30
+ lamzuInca: LAMZU_INCA_VENDOR_ID,
31
+ attackshark: 0x373e,
32
+ logitech: 0x046d,
33
+ orbital: 0x1915,
34
+ rawm: RAWM_VENDOR_ID,
35
+ razer: 0x1532,
36
+ teevolution: 0x3554,
37
+ vgn: 0x3554,
38
+ atk: 0x373b,
39
+ finalmouse: 0x361d,
40
+ keychron: 0x3434,
41
+ moddo: 0x2fe3,
42
+ attackShark: 0x25a7,
43
+ attackSharkX: 0x1d57, // R1 / X11 family OEM VID (PIDs vary per firmware)
44
+ ninjutsoLegacy: NINJUTSO_LEGACY_VENDOR_ID,
45
+ ninjutso: NINJUTSO_VENDOR_ID,
46
+ zaunkoenig: ZAUNKOENIG_VENDOR_ID,
47
+ corsair: CORSAIR_VENDOR_ID,
48
+ fantech: 0x3151,
49
+ wooting: WOOTING_VENDOR_ID,
50
+ wallhack: WALLHACK_VENDOR_ID,
51
+ wallhackKeyboardAlt: WALLHACK_KEYBOARD_ALT_VENDOR_ID,
52
+ gwolves: 0x33e4,
53
+ steelseries: STEELSERIES_VENDOR_ID,
54
+ glorious: 0x093a,
55
+ // Pre-Pixart "classic" Glorious line (Model O/O-, Model D/D-, Model O V2).
56
+ // Shares 0x258a with several other Sonix-based OEM mice.
57
+ gloriousClassic: 0x258a,
58
+ gloriousClassicI: 0x22d4, // original Model I
59
+ gloriousClassicIWired: 0x320f, // Model O V2 / Model I 2 wired
60
+ gloriousO3: 0x3794, // Model O3 Wireless / receiver (newer CORE-v2 generation)
61
+ mchose: 0x3837,
62
+ mchoseA5Gen1: MCHOSE_A5_GEN1_VENDOR_ID,
63
+ ksnakeUsb: 0xa8a4, // K-snake X11 wired
64
+ ksnakeDongle: 0xa8a5, // K-snake X11 2.4 GHz dongle
65
+ microsoft: MICROSOFT_VENDOR_ID,
66
+ dareu: DAREU_VENDOR_ID,
67
+ // Shares 0x093a with Glorious's Pixart-based Model O 2 / I 2 family (see
68
+ // `glorious` above); GloriousHidClient.isSupported() only claims its own
69
+ // catalogue product ids, so the two never overlap.
70
+ incott: INCOTT_VENDOR_ID,
71
+ hyperxKingston: HYPERX_VENDOR_ID_KINGSTON,
72
+ hyperxHp: HYPERX_VENDOR_ID_HP,
73
+ };
74
+ /**
75
+ * ROG Gladius II P502 configuration interface.
76
+ *
77
+ * Hardware verified:
78
+ * VID 0x0B05
79
+ * PID 0x1845
80
+ * Usage Page 0xFF01
81
+ * Usage 0x0001
82
+ */
83
+ export const ASUS_GLADIUS_II_HID_FILTERS = [
84
+ {
85
+ vendorId: ASUS_VENDOR_ID,
86
+ productId: ROG_GLADIUS_II_PRODUCT_ID,
87
+ usagePage: ASUS_GLADIUS_II_USAGE_PAGE,
88
+ usage: ASUS_GLADIUS_II_USAGE,
89
+ },
90
+ ];
91
+ export const MCHOSE_A5_HID_FILTERS = [
92
+ ...[...MCHOSE_A5_GEN1_PRODUCTS.keys()].map((productId) => ({
93
+ vendorId: MCHOSE_A5_GEN1_VENDOR_ID,
94
+ productId,
95
+ usagePage: MCHOSE_A5_GEN1_USAGE_PAGE,
96
+ })),
97
+ ];
98
+ /** Exact PID and report-8 command collection measured on the TM265 receiver. */
99
+ export const DAREU_HID_FILTERS = [...DAREU_PRODUCT_IDS].map((productId) => ({
100
+ vendorId: DAREU_VENDOR_ID,
101
+ productId,
102
+ usagePage: DAREU_COMMAND_USAGE_PAGE,
103
+ usage: DAREU_COMMAND_USAGE,
104
+ }));
105
+ /**
106
+ * SteelSeries ships keyboards, headsets, and USB audio under 0x1038, so there
107
+ * must never be a VID-only SteelSeries filter. The Rival 3 Gen 1's config
108
+ * channel is hidapi interface 3, whose WebHID collection shape has not been
109
+ * captured yet, so the whole device is requested per product id and the
110
+ * picker offers each interface; the driver's firmware probe fails loudly on
111
+ * the ones that never answer (add the device again and choose another entry).
112
+ * Narrow these to a usage-page filter once the collection dump is recorded in
113
+ * docs/steelseries-testing.md.
114
+ */
115
+ export const STEELSERIES_RIVAL3_FILTERS = [...STEELSERIES_PRODUCTS.keys()].map((productId) => ({ vendorId: STEELSERIES_VENDOR_ID, productId }));
116
+ // Pixart-based Model O 2 / I 2 family (OpenRGB issue #4649, linux-hardware.org).
117
+ export const GLORIOUS_PRODUCTS = new Map([
118
+ [0x821d, { name: "Model I 2 Wireless", wireless: false }],
119
+ [0x822a, { name: "Model O 2 Wireless", wireless: false }],
120
+ [0x822b, { name: "Model O 2 Bluetooth", wireless: true }],
121
+ [0x822d, { name: "Model O 2 Wireless receiver", wireless: true }],
122
+ [0x826a, { name: "Model O 2 Mini Wireless", wireless: false }],
123
+ [0x826d, { name: "Model O 2 Mini Wireless receiver", wireless: true }],
124
+ ]);
125
+ /**
126
+ * Pre-Pixart "classic" Glorious line, reverse-engineered from
127
+ * https://github.com/louis4craft/glorious-ctl (devices.json + mouse.py),
128
+ * https://github.com/korkje/mxw, https://github.com/RealCrystalNight/Glorious-Mouse-Toolkit-Linux
129
+ * (an expanded mxw fork with its own device enum), and
130
+ * https://github.com/AwesomeTy18/GloriousBatteryMonitor (an unrelated C#
131
+ * battery-only tool whose device table cross-confirms the "wired PID +
132
+ * receiver PID" pairing for most of these models). Keyed by product id only
133
+ * for lookup convenience; isSupported() also checks the VID.
134
+ *
135
+ * `generation` gates which commands the driver will actually send:
136
+ * - "core1": the original protocol korkje/mxw reverse-engineered. Full
137
+ * support — RGB, debounce, battery (glorious-ctl), DPI/polling/LOD (mxw).
138
+ * - "core2": a newer, mostly-undocumented protocol generation (the 4K/8K-class
139
+ * mice: Model O3 Wireless, Model O2 Pro 4K/8K, Model D2 Pro 4K/8K). Only
140
+ * RGB, debounce, and battery are enabled for these — glorious-ctl's own
141
+ * `devices.json` lists Model O3/D2Pro-4K8K alongside the core1 devices and
142
+ * applies the exact same `mouse.py` commands uniformly, and
143
+ * AwesomeTy18/GloriousBatteryMonitor independently confirms the exact same
144
+ * battery-read command (byte-for-byte: class 0x02, subclass 0x02, command
145
+ * 0x83) works across its ENTIRE device list, core1 and core2 alike — two
146
+ * unrelated implementations agreeing is real evidence RGB/debounce/battery
147
+ * carry over. DPI, polling rate, and lift-off distance stay OFF for core2:
148
+ * korkje/mxw's own device list does not include any core2 model, and (for
149
+ * polling rate specifically) https://github.com/AMarcinkiewicz/GloriousAutoPollingRate
150
+ * shows the Model D2 Pro 4K/8K's real polling-rate command uses a
151
+ * DIFFERENT usage page (0xFFFF/0x0000) and report layout entirely from the
152
+ * one below — confirming core2 is not just core1 with new values, so
153
+ * guessing at DPI/LOD offsets for it would likely be silently wrong. See
154
+ * [[glorious-classic-protocol]] in memory for the full writeup, including
155
+ * the exact D2 Pro 4K/8K polling-rate bytes for whoever wires that in
156
+ * (needs multi-interface HID support this driver doesn't have yet).
157
+ *
158
+ * KNOWN UNRESOLVED DISCREPANCY: glorious-ctl's devices.json labels PID
159
+ * 0x2011 "Model D Wireless", but two independent, more structured sources
160
+ * (RealCrystalNight's Rust device enum and AwesomeTy18's C# device table)
161
+ * both instead pair 0x2011 with Model O (as its wired-mode PID, alongside
162
+ * receiver 0x2022) and put Model D's wired-mode PID at 0x2012. This table
163
+ * follows the 2-source majority below; if a real Model D Wireless answers
164
+ * "Model O Wireless" in the app, that's why — it's cosmetic only (the actual
165
+ * commands are identical either way), but worth fixing with a hardware
166
+ * report from whoever it happens to.
167
+ */
168
+ export const GLORIOUS_CLASSIC_PRODUCTS = new Map([
169
+ [0x2011, { name: "Model O Wireless", wireless: false, generation: "core1" }], // see discrepancy note above
170
+ [0x2022, { name: "Model O Wireless", wireless: true, generation: "core1" }],
171
+ [0x2012, { name: "Model D Wireless", wireless: false, generation: "core1" }],
172
+ [0x2023, { name: "Model D Wireless", wireless: true, generation: "core1" }],
173
+ [0x2013, { name: "Model O- Wireless", wireless: false, generation: "core1" }],
174
+ [0x2024, { name: "Model O- Wireless receiver", wireless: true, generation: "core1" }],
175
+ [0x2014, { name: "Model D- Wireless", wireless: false, generation: "core1" }],
176
+ [0x2025, { name: "Model D- Wireless", wireless: true, generation: "core1" }],
177
+ [0x2033, { name: "Model O 2 Wireless", wireless: true, generation: "core1" }],
178
+ // "core1" here is unconfirmed, despite the name overlap with 0x2033 above -
179
+ // a real unit is on a completely different VID (gloriousClassicIWired,
180
+ // 0x320f, not gloriousClassic's 0x258a) and its feature report declares
181
+ // 263 bytes, not the 64 every other core1 device (including 0x2033) uses.
182
+ // A diagnostic confirmed the driver's core1 payloads write without error
183
+ // but do nothing on the mouse - see isConfirmedReportLength() in
184
+ // classic-hid.ts, which is what actually gates writes at runtime (not this
185
+ // label). Model I 2 Wireless/Wired below (0x821a/0x831a) share this same
186
+ // VID and are equally unconfirmed for the same reason.
187
+ [0x823a, { name: "Model O V2 Wired", wireless: false, generation: "core1" }],
188
+ [0x2015, { name: "Model O Pro", wireless: false, generation: "core1" }],
189
+ [0x2027, { name: "Model O Pro Wireless receiver", wireless: true, generation: "core1" }],
190
+ [0x2018, { name: "Series One Pro", wireless: false, generation: "core1" }],
191
+ [0x2031, { name: "Series One Pro Wireless receiver", wireless: true, generation: "core1" }],
192
+ [0x201a, { name: "Model D 2 PRO", wireless: false, generation: "core1" }],
193
+ [0x2034, { name: "Model D 2 PRO Wireless receiver", wireless: true, generation: "core1" }],
194
+ [0x1503, { name: "Model I", wireless: false, generation: "core1" }],
195
+ [0x821a, { name: "Model I 2 Wireless", wireless: false, generation: "core1" }], // unconfirmed - see the note on 0x823a above
196
+ [0x831a, { name: "Model I 2 Wired", wireless: false, generation: "core1" }], // unconfirmed - see the note on 0x823a above
197
+ // core2 — RGB/debounce/battery only, see the doc comment above.
198
+ [0xa312, { name: "Model O3 Wireless", wireless: true, generation: "core2" }],
199
+ [0xa300, { name: "Model O3 Wireless receiver", wireless: true, generation: "core2" }],
200
+ [0x201b, { name: "Model O2 Pro 4K/8K", wireless: false, generation: "core2" }],
201
+ [0x2035, { name: "Model O2 Pro 4K/8K Wireless receiver", wireless: true, generation: "core2" }],
202
+ [0x201c, { name: "Model D 2 PRO 4K/8KHz Edition", wireless: false, generation: "core2" }],
203
+ [0x2036, { name: "Model D 2 PRO 4K/8KHz Edition receiver", wireless: true, generation: "core2" }],
204
+ ]);
205
+ export const GLORIOUS_CLASSIC_HID_FILTERS = [...GLORIOUS_CLASSIC_PRODUCTS.keys()].flatMap((productId) => [
206
+ { vendorId: VENDOR_ID.gloriousClassic, productId },
207
+ { vendorId: VENDOR_ID.gloriousClassicI, productId },
208
+ { vendorId: VENDOR_ID.gloriousClassicIWired, productId },
209
+ { vendorId: VENDOR_ID.gloriousO3, productId },
210
+ ]);
211
+ // Keychron Nape Pro VIA raw HID. 0x0440 is wired; 0xd026/0xd029 are shared Link-KM receivers.
212
+ export const KEYCHRON_NAPE_PRODUCT_IDS = [0x0440, 0xd026, 0xd029];
213
+ export const KEYCHRON_NAPE_HID_FILTERS = KEYCHRON_NAPE_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.keychron, productId, usagePage: 0xff60, usage: 0x61 }));
214
+ export const KEYCHRON_M6_HID_FILTERS = [
215
+ { vendorId: VENDOR_ID.keychron, productId: 0xd060, usagePage: 0xffc1, usage: 0x01 },
216
+ { vendorId: VENDOR_ID.keychron, productId: 0xd029, usagePage: 0xffc1, usage: 0x01 },
217
+ ];
218
+ // moddoMOUSE exposes its vendor config interface on usage page 0xff, usage 0x01
219
+ // (older firmware answers on usage 0x02). Offer both so the picker lists the
220
+ // control interface; the driver rejects anything without the config report.
221
+ export const MODDO_HID_FILTERS = [
222
+ { vendorId: VENDOR_ID.moddo, usagePage: 0xff, usage: 0x01 },
223
+ { vendorId: VENDOR_ID.moddo, usagePage: 0xff, usage: 0x02 },
224
+ ];
225
+ // The X3 family's control channel is the Sonix XS-1 interface: a single
226
+ // 64-byte unnumbered feature report on usage page 0xffff. Request that
227
+ // collection directly so the picker lists the control interface instead of the
228
+ // mouse's plain pointer interface, which cannot answer feature reports.
229
+ export const PULSAR_XS1_HID_FILTERS = [...PULSAR_XS1_PRODUCT_IDS].map((productId) => ({ vendorId: VENDOR_ID.pulsar, productId, usagePage: 0xffff, usage: 0x01 }));
230
+ // Viper V2/V3 Pro and Mouse Dock Pro expose their control channel as a Generic
231
+ // Desktop Mouse collection. Limit this broad collection filter to known PIDs so
232
+ // it cannot also surface unrelated Razer keyboards or the Viper V4 Pro's
233
+ // ordinary boot-mouse interfaces.
234
+ export const RAZER_MOUSE_DOCK_PRO_CONTROL_FILTERS = [0x00a4].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
235
+ export const RAZER_VIPER_V2_CONTROL_FILTERS = [0x00a5, 0x00a6].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
236
+ export const RAZER_VIPER_V3_CONTROL_FILTERS = [0x00c0, 0x00c1].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
237
+ /**
238
+ * Confirmed against real hardware: a user's `navigator.hid.getDevices()` dump
239
+ * on Windows for a DeathAdder V3 HyperSpeed (0x00c5) showed the un-narrowed
240
+ * catch-all filter below granting five *other* collections but never the one
241
+ * that actually answers (usage 0x01:0x02, opened, featureReports [0]) — the
242
+ * same device's macOS dump did include it, as a separate grant. Without a
243
+ * dedicated filter, this generation falls to RAZER_REGISTRY_FILTERS, which
244
+ * offers the whole device with no usage restriction: every top-level
245
+ * collection appears as an identical, unlabeled checkbox in Chrome's picker,
246
+ * and picking the wrong one(s) silently fails with no way to tell which was
247
+ * correct.
248
+ *
249
+ * Every other Viper-receiver/HyperSpeed-generation model (`viper-receiver` and
250
+ * `new-receiver` transports, `vendorControlInterface` false, not `nativeOnly`)
251
+ * shares this exact interface shape per the driver's own `isMouseControlInterface`
252
+ * contract, so they get the same narrow filter here rather than waiting for
253
+ * each one to be separately reported broken. Left OUT of this batch,
254
+ * deliberately:
255
+ * - `vendorControlInterface: true` models (the pre-HyperSpeed "standard"
256
+ * generation, and the Viper V3 Pro SE) answer on a vendor-defined page
257
+ * instead, which is a different filter this evidence says nothing about.
258
+ * - DeathAdder Essential and DeathAdder V2 keep their existing whole-device
259
+ * filters: their control channel is a split interface, not this shape.
260
+ * - Naga V2 Pro (0x00a7/0x00a8) is already `verified: true` — it demonstrably
261
+ * connects via the broad filter today, so it is left alone rather than risk
262
+ * narrowing it to the wrong shape.
263
+ * - Cobra Pro, Naga V2 HyperSpeed, and the Pro Click/Basilisk Mobile
264
+ * productivity lines were left out: no report or capture confirms this
265
+ * shape for them, and their extra buttons/wheel make a different interface
266
+ * layout plausible.
267
+ */
268
+ // Widened to match Razer's own Synapse Web: intercepting its live
269
+ // navigator.hid.requestDevice() call (synapse.razer.com/dashboard, "Add
270
+ // Device") for the models it currently offers (Viper V4 Pro 0xe5/0xe6,
271
+ // DeathAdder V4 Pro 0xbe/0xbf/0xef/0xf0) showed filters of exactly
272
+ // `{vendorId, productId, usagePage}` — usagePage 0x01 AND 0x0c, with NO
273
+ // `usage` field at all. That already matched RAZER_VIPER_V4_CONTROL_FILTERS
274
+ // below; it did not match this constant, which added a `usage: 0x02`
275
+ // restriction Razer's own reference implementation does not apply. Dropped
276
+ // here to follow the same pattern, on top of razerProbeControlInterface
277
+ // (hid.ts) trying the real protocol against whatever gets granted rather
278
+ // than assuming which single collection is correct.
279
+ export const RAZER_HYPERSPEED_CONTROL_FILTERS = [
280
+ 0x0078, // Viper (see RAZER_VIPER_CONTROL_FILTERS above; kept for the doc trail)
281
+ 0x007a, // Viper Ultimate (Wired)
282
+ 0x007c, 0x007d, // DeathAdder V2 Pro (Wired/wireless) — issue #253
283
+ 0x009e, 0x009f, // Viper Mini Signature Edition (Wired/wireless)
284
+ 0x00b8, // Viper V3 HyperSpeed (already verified: true)
285
+ 0x00c2, 0x00c3, // DeathAdder V3 Pro
286
+ 0x00b6, 0x00b7, // DeathAdder V3 Pro (second SKU pair)
287
+ 0x00c4, 0x00c5, // DeathAdder V3 HyperSpeed (Wired/wireless)
288
+ 0x00aa, 0x00ab, // Basilisk V3 Pro
289
+ 0x00cc, 0x00cd, // Basilisk V3 Pro 35K
290
+ 0x00d6, 0x00d7, // Basilisk V3 Pro 35K Phantom Green
291
+ 0x00be, 0x00bf, // DeathAdder V4 Pro
292
+ 0x00ef, 0x00f0, // DeathAdder V4 Pro Carbon Fiber Edition
293
+ ].flatMap((productId) => [0x01, 0x0c].map((usagePage) => ({ vendorId: VENDOR_ID.razer, productId, usagePage })));
294
+ // The Viper Mini answers on the same kind of single Generic Desktop Mouse
295
+ // control interface as the V3 Pro, so it gets the same narrow collection filter.
296
+ export const RAZER_VIPER_MINI_CONTROL_FILTERS = [0x008a].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
297
+ // The original Viper exposes the same single Generic Desktop Mouse control
298
+ // interface, so it gets the same narrow collection filter.
299
+ export const RAZER_VIPER_CONTROL_FILTERS = [0x0078].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
300
+ // Synapse Web exposes the V4 control interface through a single top-level
301
+ // Generic Desktop or Consumer collection with Feature reports. Request both
302
+ // pages so the browser offers that interface, then the driver rejects ordinary
303
+ // mouse/keyboard interfaces that lack the required report.
304
+ export const RAZER_VIPER_V4_CONTROL_FILTERS = [0x00e5, 0x00e6].flatMap((productId) => [0x01, 0x0c].map((usagePage) => ({ vendorId: VENDOR_ID.razer, productId, usagePage })));
305
+ // The DeathAdder Essential family splits its pointer and configuration
306
+ // channels across separate interfaces, and which usage page carries the
307
+ // configuration one varies by hardware revision. Request the whole device so
308
+ // the picker can offer every interface, then the driver rejects the ones that
309
+ // cannot answer. 0x006e is the original, 0x0071 the White Edition, 0x0098 the
310
+ // 2021 revision.
311
+ export const RAZER_DEATHADDER_ESSENTIAL_FILTERS = [0x006e, 0x0071, 0x0098].map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
312
+ // The Cobra's control interface layout has not been pinned down, so the whole
313
+ // device is requested and the driver accepts whichever interface answers.
314
+ export const RAZER_COBRA_FILTERS = [0x00a3].map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
315
+ /**
316
+ * Razer product ids whose control interface is known, and which therefore get a
317
+ * narrower filter of their own above. Excluded from the catch-all below so a
318
+ * broad filter cannot quietly widen one that was deliberately narrowed.
319
+ */
320
+ const RAZER_NARROWED_PRODUCT_IDS = new Set([
321
+ 0x00a4, 0x00a5, 0x00a6, 0x00c0, 0x00c1, 0x006e, 0x0071, 0x0098, 0x0084,
322
+ // Viper and Viper Mini already had their own narrow filters defined above
323
+ // (RAZER_VIPER_CONTROL_FILTERS / RAZER_VIPER_MINI_CONTROL_FILTERS) but were
324
+ // never excluded from the catch-all below, so they carried this same
325
+ // ambiguous-picker bug the whole time. Excluded here alongside the rest of
326
+ // RAZER_HYPERSPEED_CONTROL_FILTERS' coverage.
327
+ 0x0078, 0x008a,
328
+ 0x007a, 0x007c, 0x007d, 0x009e, 0x009f, 0x00b8, 0x00c2, 0x00c3, 0x00b6,
329
+ 0x00b7, 0x00c4, 0x00c5, 0x00aa, 0x00ab, 0x00cc, 0x00cd, 0x00d6, 0x00d7,
330
+ 0x00be, 0x00bf, 0x00ef, 0x00f0,
331
+ ]);
332
+ /**
333
+ * Every remaining product in the Razer registry. Which interface carries the
334
+ * control channel has not been established for these, and it varies by
335
+ * revision, so the whole device is requested and the picker offers each
336
+ * interface: the driver rejects the ones that cannot answer, and a model whose
337
+ * first entry never replies is added again on another entry.
338
+ *
339
+ * Products flagged `nativeOnly` in the registry are left out: their control
340
+ * channel is on a Chrome-protected collection, so no granted interface can
341
+ * ever answer and offering them just produces a dead picker entry.
342
+ */
343
+ export const RAZER_REGISTRY_FILTERS = RAZER_PRODUCT_IDS
344
+ .filter((productId) => !RAZER_NARROWED_PRODUCT_IDS.has(productId))
345
+ .filter((productId) => !RAZER_PRODUCTS.get(productId)?.nativeOnly)
346
+ .map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
347
+ // The DeathAdder V2 keeps the Essential family's split interface layout, so it
348
+ // needs the same whole-device request rather than a single-collection filter.
349
+ export const RAZER_DEATHADDER_V2_FILTERS = [0x0084].map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
350
+ export const TEEVOLUTION_PRODUCT_IDS = [0xf520, 0xf523, 0xf5bb, 0xf522];
351
+ // Logitech HID++ control interfaces addressed through a receiver slot.
352
+ // 0xc54d and 0xc547 are newer Lightspeed receivers, 0xc539 is HERO-era
353
+ // Lightspeed, 0xc0a8 is the PRO X 2 Superstrike USB interface, and Bolt
354
+ // product ids live in ./logitech/protocol with the direct-connect list.
355
+ export const LOGITECH_RECEIVER_PRODUCT_IDS = [
356
+ 0xc54d,
357
+ 0xc539,
358
+ 0xc0a8,
359
+ 0xc547,
360
+ ...LOGITECH_BOLT_PRODUCT_IDS,
361
+ ];
362
+ // Every Logitech product with an HID++ control interface, receiver-addressed or
363
+ // not. Direct-connect and Bolt product IDs live in ./logitech/protocol so the
364
+ // driver and these filters cannot disagree about which index a mouse answers on.
365
+ export const LOGITECH_PRODUCT_IDS = [
366
+ ...LOGITECH_RECEIVER_PRODUCT_IDS,
367
+ ...LOGITECH_DIRECT_PRODUCT_IDS,
368
+ ];
369
+ /**
370
+ * Every Logitech HID++ control interface, not only the product ids listed
371
+ * above: a mouse we have never seen should still be offered. Usage 1 is the
372
+ * short-report HID++ collection used by Lightspeed and for Bolt receiver
373
+ * registers; usage 2 is the long-report collection Bolt mice need for HID++
374
+ * 2.0 feature traffic. The driver decides mouse-vs-keyboard after connecting.
375
+ */
376
+ export const LOGITECH_RECEIVER_FILTERS = [
377
+ { vendorId: VENDOR_ID.logitech, usagePage: HIDPP_USAGE_PAGE, usage: 0x0001 },
378
+ { vendorId: VENDOR_ID.logitech, usagePage: HIDPP_USAGE_PAGE, usage: 0x0002 },
379
+ ];
380
+ /**
381
+ * The same protocol reached over Bluetooth, where none of the filters above
382
+ * match: a paired MX Master exposes one vendor collection on 0xFF43 and nothing
383
+ * on 0xFF00, so it was listed by the diagnostics scan (which filters by vendor
384
+ * id alone) while never appearing in the picker at all.
385
+ *
386
+ * Matched by page, without a usage, because 0xFF43 is Logitech's own page and
387
+ * the collection is numbered differently across firmware.
388
+ */
389
+ export const LOGITECH_BLUETOOTH_FILTERS = [
390
+ { vendorId: VENDOR_ID.logitech, usagePage: HIDPP_BLUETOOTH_USAGE_PAGE },
391
+ ];
392
+ // Retained for existing imports; points at the first supported receiver.
393
+ export const LOGITECH_RECEIVER_FILTER = LOGITECH_RECEIVER_FILTERS[0];
394
+ export const WLMOUSE_PRODUCTS = new Map([
395
+ [0xa860, { name: "Beast G", wireless: true }],
396
+ [0xa861, { name: "Beast G", wireless: false }],
397
+ [0xa863, { name: "Huan", wireless: true }],
398
+ [0xa864, { name: "Huan", wireless: false }],
399
+ [0xa866, { name: "Beast Miao", wireless: true }],
400
+ [0xa867, { name: "Beast Miao", wireless: false }],
401
+ [0xa868, { name: "Beast Mini Pro", wireless: true }],
402
+ [0xa869, { name: "Beast Mini Pro", wireless: false }],
403
+ [0xa870, { name: "Beast X Pro", wireless: true }],
404
+ [0xa871, { name: "Beast X Pro", wireless: false }],
405
+ [0xa872, { name: "Strider", wireless: true }],
406
+ [0xa873, { name: "Strider", wireless: false }],
407
+ [0xa874, { name: "Ying", wireless: true }],
408
+ [0xa875, { name: "Ying", wireless: false }],
409
+ [0xa878, { name: "Sword X", wireless: true }],
410
+ [0xa879, { name: "Sword X", wireless: false }],
411
+ [0xa880, { name: "Beast Max", wireless: true }],
412
+ [0xa881, { name: "Beast Max", wireless: false }],
413
+ [0xa882, { name: "WLmouse 1K receiver", wireless: true }],
414
+ [0xa883, { name: "Beast X", wireless: true }],
415
+ [0xa884, { name: "Beast X", wireless: false }],
416
+ [0xa885, { name: "Beast Mini", wireless: true }],
417
+ [0xa886, { name: "Beast Mini", wireless: false }],
418
+ ]);
419
+ export const WLMOUSE_MAX_POLLING_HZ = new Map([
420
+ [0xa882, 1000],
421
+ ]);
422
+ // Wooting analog boards expose their command-capable config interface on usage
423
+ // page 0xFF55, usage 0x01. Offer only that page: a board also presents a legacy
424
+ // 0xFF00 collection and the 0xFF53 analog stream, and matching those too would
425
+ // list the same physical keyboard several times in the picker. The driver reads
426
+ // commands through 0xFF55 alone.
427
+ export const WOOTING_HID_FILTERS = WOOTING_PRODUCT_IDS.map((productId) => ({ vendorId: WOOTING_VENDOR_ID, productId, usagePage: WOOTING_CONFIG_USAGE_PAGE, usage: WOOTING_CONFIG_USAGE }));
428
+ export const WALLHACK_HID_FILTERS = [
429
+ ...[...WALLHACK_MOUSE_PRODUCT_IDS].map((productId) => ({ vendorId: WALLHACK_VENDOR_ID, productId, usagePage: WALLHACK_MOUSE_USAGE_PAGE, usage: WALLHACK_MOUSE_USAGE })),
430
+ ...[...WALLHACK_KEYBOARD_PRODUCT_IDS].flatMap((productId) => [WALLHACK_VENDOR_ID, WALLHACK_KEYBOARD_ALT_VENDOR_ID].map((vendorId) => ({ vendorId, productId, usagePage: WALLHACK_KEYBOARD_USAGE_PAGE, usage: WALLHACK_KEYBOARD_USAGE }))),
431
+ ];
432
+ /**
433
+ * Lamzu's own vendor id carries the Inca 8K. Unlike the broad 0x373e filter
434
+ * this one is narrowed to usage page 0xffff, which keeps the mouse, consumer,
435
+ * system and keyboard collections on MI_00/MI_01 out of the picker on any
436
+ * platform that exposes a device's interfaces as separate HIDDevices. It
437
+ * cannot narrow further: the config channel is MI_02, whose usage is 0x0000,
438
+ * and a WebHID filter cannot pin a zero usage.
439
+ *
440
+ * That leaves MI_01's 0xffff/0x01 vendor collection as the only entry this
441
+ * filter still admits, and the driver's feature-report-0 check rejects it — a
442
+ * WebHID enumeration of both connections shows that collection declaring no
443
+ * feature reports at all, while only 0xffff/0x0000 declares report 0. See
444
+ * docs/lamzu-inca-testing.md.
445
+ *
446
+ * On Chrome/Windows the narrowing is moot: all seven collections arrive on a
447
+ * single HIDDevice, so the device is one picker entry whatever the filter says.
448
+ */
449
+ export const LAMZU_INCA_HID_FILTERS = [...LAMZU_INCA_PRODUCTS.keys()].map((productId) => ({ vendorId: VENDOR_ID.lamzuInca, productId, usagePage: 0xffff }));
450
+ /**
451
+ * GearHub-V5 receivers (Lingbao M5 Pro, Attack Shark R2, …) and the wired
452
+ * product id. 0x3151 is the MicLink/mlzn ODM vendor id, shared with unrelated
453
+ * keyboards and mice, so these are requested per product id rather than
454
+ * vendor-wide.
455
+ */
456
+ export const GEARHUB_HID_FILTERS = [...GEARHUB_PRODUCTS.keys()].map((productId) => ({ vendorId: GEARHUB_VENDOR_ID, productId, usagePage: 0xffff, usage: 0x02 }));
457
+ // Corsair NXP-family mice answer on the interface whose collection is usage
458
+ // page 0xffc2, usage 4 (64-byte feature reports on id 0). MI_00 also carries
459
+ // an 0xffc2 collection (usage 3) that never answers, so the usage is required
460
+ // or the picker lists the same mouse twice.
461
+ export const CORSAIR_HID_FILTERS = CORSAIR_PRODUCT_IDS.map((productId) => ({
462
+ vendorId: CORSAIR_VENDOR_ID,
463
+ productId,
464
+ usagePage: CORSAIR_USAGE_PAGE,
465
+ usage: CORSAIR_CONFIG_USAGE,
466
+ }));
467
+ export const MICROSOFT_HID_FILTERS = [
468
+ { vendorId: VENDOR_ID.microsoft, productId: MICROSOFT_PRODUCT_CLASSIC, usagePage: MICROSOFT_CLASSIC_USAGE_PAGE, usage: MICROSOFT_CLASSIC_USAGE }, // Classic
469
+ { vendorId: VENDOR_ID.microsoft, productId: MICROSOFT_PRODUCT_PRO, usagePage: MICROSOFT_PRO_USAGE_PAGE, usage: MICROSOFT_PRO_USAGE }, // Pro
470
+ ];
471
+ /**
472
+ * The Incott 8K wireless mouse (and its charging-state product id) answer the
473
+ * vendor protocol on usage page 0xFF05. Narrowed per product id and usage
474
+ * page, like the other 0x093a filter above, so the picker offers the
475
+ * protocol-carrying collection specifically rather than relying only on the
476
+ * broad Glorious VID-only filter that already happens to admit this VID.
477
+ */
478
+ export const INCOTT_HID_FILTERS = INCOTT_PRODUCT_IDS.map((productId) => ({
479
+ vendorId: INCOTT_VENDOR_ID,
480
+ productId,
481
+ usagePage: INCOTT_USAGE_PAGE,
482
+ }));
483
+ /**
484
+ * HyperX Pulsefire Haste family. The config channel is the vendor collection
485
+ * on usage page 0xFF00 (usage 0x01). The original wired model enumerates
486
+ * under Kingston VID 0x0951; HP-era models use 0x03F0.
487
+ */
488
+ export const HYPERX_KINGSTON_HID_FILTERS = [...HYPERX_PULSEFIRE_HASTE_KINGSTON_PIDS].map((productId) => ({ vendorId: VENDOR_ID.hyperxKingston, productId, usagePage: HYPERX_USAGE_PAGE }));
489
+ export const HYPERX_HP_HID_FILTERS = [...HYPERX_PULSEFIRE_HASTE_HP_PIDS].map((productId) => ({ vendorId: VENDOR_ID.hyperxHp, productId, usagePage: HYPERX_USAGE_PAGE }));
490
+ export const HYPERX_HID_FILTERS = [
491
+ ...HYPERX_KINGSTON_HID_FILTERS,
492
+ ...HYPERX_HP_HID_FILTERS,
493
+ ];
494
+ export const SUPPORTED_HID_FILTERS = [
495
+ ...ASUS_GLADIUS_II_HID_FILTERS,
496
+ ...DAREU_HID_FILTERS,
497
+ ...ZAUNKOENIG_PRODUCT_IDS.map((productId) => ({
498
+ vendorId: ZAUNKOENIG_VENDOR_ID,
499
+ productId,
500
+ usagePage: ZAUNKOENIG_USAGE_PAGE,
501
+ })),
502
+ ...CORSAIR_HID_FILTERS,
503
+ { vendorId: VENDOR_ID.finalmouse, productId: 0x0100, usagePage: 0xff00, usage: 0x0001 },
504
+ { vendorId: VENDOR_ID.pulsar },
505
+ ...PULSAR_XS1_HID_FILTERS,
506
+ // The Pulsar 4K Wireless Receiver enumerates under the shared Teevolution/VGN
507
+ // vendor id with a Pulsar-specific product id, so the broad VID-only filter
508
+ // keeps it visible in the picker; the driver disambiguates by product id.
509
+ // Lamzu's Atlantis generation lands here too — 0x3554 is CompX's ODM id, and
510
+ // this filter already surfaces it, so it needs no entry of its own.
511
+ { vendorId: VENDOR_ID.vgn },
512
+ { vendorId: VENDOR_ID.endgameGear },
513
+ { vendorId: VENDOR_ID.wlmouse },
514
+ // 0x373e is the shared CompX ODM vendor id behind Lamzu, CRDRAKO, and
515
+ // Attack Shark. The broad filter surfaces all of them; each driver rejects
516
+ // interfaces that lack the feature-report-0 control channel.
517
+ { vendorId: VENDOR_ID.lamzu },
518
+ ...LAMZU_INCA_HID_FILTERS,
519
+ { vendorId: VENDOR_ID.orbital, usagePage: 0xff0a, usage: 1 },
520
+ ...[...RAWM_PRODUCT_IDS].map((productId) => ({
521
+ vendorId: VENDOR_ID.rawm,
522
+ productId,
523
+ usagePage: RAWM_USAGE_PAGE,
524
+ usage: RAWM_USAGE,
525
+ })),
526
+ // MCHOSE ships keyboards and audio devices under 0x3837 too, so this stays
527
+ // narrowed to the mouse configuration collection rather than the whole VID.
528
+ ...MCHOSE_A5_HID_FILTERS,
529
+ // Both mouse generations answer on this collection — the A7 V2 with inverted
530
+ // feature reports, the A7 V3 with its own output-report protocol — so one
531
+ // filter offers the whole mouse line and the drivers split it by product id.
532
+ { vendorId: VENDOR_ID.mchose, usagePage: MCHOSE_CONFIG_USAGE_PAGE, usage: MCHOSE_CONFIG_USAGE },
533
+ // The MagDock is a separate device on its own usage page; it carries the RGB.
534
+ { vendorId: VENDOR_ID.mchose, productId: MCHOSE_DOCK_PRODUCT_ID, usagePage: MCHOSE_DOCK_USAGE_PAGE, usage: MCHOSE_DOCK_USAGE },
535
+ ...TEEVOLUTION_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.teevolution, productId })),
536
+ ...TEEVOLUTION_PRODUCT_IDS.map((productId) => ({
537
+ vendorId: VENDOR_ID.teevolution,
538
+ productId,
539
+ usagePage: TEEVOLUTION_LCD_USAGE_PAGE,
540
+ usage: TEEVOLUTION_LCD_USAGE,
541
+ })),
542
+ ...RAZER_MOUSE_DOCK_PRO_CONTROL_FILTERS,
543
+ ...RAZER_VIPER_V2_CONTROL_FILTERS,
544
+ ...RAZER_VIPER_V3_CONTROL_FILTERS,
545
+ ...RAZER_HYPERSPEED_CONTROL_FILTERS,
546
+ ...RAZER_VIPER_MINI_CONTROL_FILTERS,
547
+ ...RAZER_VIPER_CONTROL_FILTERS,
548
+ { vendorId: VENDOR_ID.vgn, productId: 0xfb56 },
549
+ { vendorId: VENDOR_ID.vgn, productId: 0xfb57 },
550
+ { vendorId: VENDOR_ID.atk, usagePage: 0xff02, usage: 2 },
551
+ ...BITMOUSE_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.atk, productId, usagePage: BITMOUSE_USAGE_PAGE, usage: BITMOUSE_USAGE })),
552
+ ...ATK_COMPX_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.vgn, productId, usagePage: 0xff02, usage: 2 })),
553
+ { vendorId: VENDOR_ID.attackShark },
554
+ { vendorId: VENDOR_ID.attackSharkX },
555
+ ...RAZER_VIPER_V4_CONTROL_FILTERS,
556
+ ...RAZER_DEATHADDER_ESSENTIAL_FILTERS,
557
+ ...RAZER_COBRA_FILTERS,
558
+ ...KEYCHRON_NAPE_HID_FILTERS,
559
+ ...KEYCHRON_M6_HID_FILTERS,
560
+ ...RAZER_REGISTRY_FILTERS,
561
+ ...RAZER_DEATHADDER_V2_FILTERS,
562
+ ...EGG_WE_HID_FILTERS,
563
+ ...MODDO_HID_FILTERS,
564
+ ...WOOTING_HID_FILTERS,
565
+ ...[...NINJUTSO_LEGACY_MOUSE_PRODUCT_IDS, ...NINJUTSO_LEGACY_RECEIVER_PRODUCT_IDS]
566
+ .map((productId) => ({ vendorId: NINJUTSO_LEGACY_VENDOR_ID, productId })),
567
+ ...[...NINJUTSO_MOUSE_PRODUCT_IDS, ...NINJUTSO_RECEIVER_PRODUCT_IDS]
568
+ .map((productId) => ({ vendorId: NINJUTSO_VENDOR_ID, productId })),
569
+ ...LOGITECH_RECEIVER_FILTERS,
570
+ ...LOGITECH_BLUETOOTH_FILTERS,
571
+ ...GEARHUB_HID_FILTERS,
572
+ // Fantech mice use vendor usage page 0xFFFF, usage 0x02 for configuration.
573
+ { vendorId: VENDOR_ID.fantech, usagePage: 0xffff, usage: 0x02 },
574
+ ...WALLHACK_HID_FILTERS,
575
+ ...[...GWOLVES_PRODUCTS.keys()].map((productId) => ({ vendorId: VENDOR_ID.gwolves, productId, usagePage: 0xff02 })),
576
+ ...STEELSERIES_RIVAL3_FILTERS,
577
+ { vendorId: VENDOR_ID.glorious },
578
+ ...GLORIOUS_CLASSIC_HID_FILTERS,
579
+ // K-snake X11 exposes its 0x55-framed control channel on 0xFF01:0x10 for
580
+ // both the wired USB VID and the 2.4 GHz dongle VID.
581
+ { vendorId: VENDOR_ID.ksnakeUsb, productId: 0x2255, usagePage: 0xff01, usage: 0x10 },
582
+ { vendorId: VENDOR_ID.ksnakeDongle, productId: 0x2255, usagePage: 0xff01, usage: 0x10 },
583
+ ...MICROSOFT_HID_FILTERS,
584
+ ...INCOTT_HID_FILTERS,
585
+ ...HYPERX_HID_FILTERS,
586
+ ];
587
+ //# sourceMappingURL=vendors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendors.js","sourceRoot":"","sources":["../../src/drivers/vendors.ts"],"names":[],"mappings":"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"}