@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,341 @@
1
+ /** Nape Pro VIA codec. Do not reuse these keymap/layer helpers for M-series Keychron mice. */
2
+ export const KEYCHRON_VENDOR_ID = 0x3434;
3
+ export const KEYCHRON_RAW_USAGE_PAGE = 0xff60;
4
+ export const KEYCHRON_RAW_USAGE = 0x61;
5
+ export const KEYCHRON_REPORT_ID = 0;
6
+ export const KEYCHRON_PACKET_LENGTH = 32;
7
+ /** Keychron M6 wired control interface and report layout, verified on PID 0xd060. */
8
+ export const KEYCHRON_M6_PRODUCT_ID = 0xd060;
9
+ /** Link-KM receiver paired with the Keychron M6, verified on 2.4 GHz. */
10
+ export const KEYCHRON_M6_RECEIVER_PRODUCT_ID = 0xd029;
11
+ export const KEYCHRON_M6_USAGE_PAGE = 0xffc1;
12
+ export const KEYCHRON_M6_USAGE = 0x01;
13
+ export const KEYCHRON_M6_COMMAND_REPORT_ID = 0xb3;
14
+ export const KEYCHRON_M6_COMMAND_RESPONSE_REPORT_ID = 0xb4;
15
+ export const KEYCHRON_M6_SETTINGS_REPORT_ID = 0xb5;
16
+ export const KEYCHRON_M6_SETTINGS_RESPONSE_REPORT_ID = 0xb6;
17
+ export const KEYCHRON_M6_STATUS_COMMAND = 0x06;
18
+ export const KEYCHRON_M6_STATUS_PACKET_LENGTH = 63;
19
+ export const KEYCHRON_PRODUCTS = new Map([
20
+ [0x0440, { name: "Nape Pro" }],
21
+ [0xd026, { name: "Keychron Link-KM", receiver: true }],
22
+ [0xd029, { name: "Keychron Link-KM Type C", receiver: true }],
23
+ ]);
24
+ export const KEYCHRON_NAPE_PRODUCTS = new Map([
25
+ [0x0440, { name: "Nape Pro" }],
26
+ [0xd026, { name: "Keychron Link-KM", receiver: true }],
27
+ [0xd029, { name: "Keychron Link-KM Type C", receiver: true }],
28
+ ]);
29
+ export const KEYCHRON_COMMAND = { firmwareVersion: 161, getCurrentLayer: 163, miscGroup: 167 };
30
+ /** Standard VIA opcodes used by Nape for keymap metadata (not the 0xA7 misc group). */
31
+ export const KEYCHRON_VIA_COMMAND = {
32
+ getKeycode: 4,
33
+ setKeycode: 5,
34
+ getLayerCount: 17,
35
+ getBuffer: 18,
36
+ getEncoder: 20,
37
+ setEncoder: 21,
38
+ };
39
+ export const KEYCHRON_NAPE_COMMAND = {
40
+ getOrientation: 32, getDpiStage: 33, setDpiStage: 34, setDpiValue: 35,
41
+ getDpiValue: 36, setLayer: 45, getBattery: 49, setOrientation: 52,
42
+ getCustomDpi: 54, setCustomDpi: 55, getLayerOrientation: 56, setLayerOrientation: 57,
43
+ };
44
+ /** Sensor heading is stored per layer in 45° steps (0–7 → 0°–315°). */
45
+ export const KEYCHRON_NAPE_ORIENTATION_STEPS = 8;
46
+ export const KEYCHRON_NAPE_ORIENTATION_STEP_DEGREES = 45;
47
+ /**
48
+ * Nape Pro exposes eight user layers (1–8). VIA may report a spare slot at
49
+ * index 0; GET_CURRENT_LAYER and keymap/encoder commands use the same 1–8
50
+ * index. Keychron Launcher writes GET_BUFFER offset 14 * 3 when the mouse
51
+ * reports current layer 3.
52
+ */
53
+ export const KEYCHRON_NAPE_LAYER_COUNT = 8;
54
+ export const KEYCHRON_MISC_COMMAND = {
55
+ getSleep: 11,
56
+ setSleep: 12,
57
+ getPolling: 13,
58
+ setPolling: 14,
59
+ };
60
+ export const KEYCHRON_POLLING_TABLE = [8000, 4000, 2000, 1000, 500, 250, 125];
61
+ /** Nape Pro only — observed on firmware v1.2.6-ZK (stage 5 stores 4000). Other Keychron mice should define their own ranges. */
62
+ export const KEYCHRON_NAPE_DPI_MIN = 50;
63
+ export const KEYCHRON_NAPE_DPI_MAX = 4000;
64
+ export const KEYCHRON_NAPE_DPI_STEP = 50;
65
+ export const KEYCHRON_NAPE_SLEEP_MIN_SECONDS = 60;
66
+ export const KEYCHRON_NAPE_SLEEP_MAX_SECONDS = 12 * 3600 + 59 * 60 + 59;
67
+ export const KEYCHRON_NAPE_SLEEP_OPTIONS = [
68
+ 60, 120, 300, 600, 1800, 3600, 7200, 18_000, 43_200,
69
+ ];
70
+ export function keychronPacket(command) {
71
+ const packet = new Uint8Array(KEYCHRON_PACKET_LENGTH);
72
+ packet.set(command.slice(0, KEYCHRON_PACKET_LENGTH));
73
+ return packet;
74
+ }
75
+ export function keychronDecodePolling(response) {
76
+ if (response.slice(2).every((byte) => byte === 0))
77
+ return { rateHz: 1000, supported: [125, 500, 1000] };
78
+ const mask = response[5] ?? 0;
79
+ const supported = KEYCHRON_POLLING_TABLE.filter((_, index) => ((mask >> index) & 1) === 1).slice().sort((a, b) => a - b);
80
+ const rateHz = KEYCHRON_POLLING_TABLE[Math.min(response[6] ?? 3, KEYCHRON_POLLING_TABLE.length - 1)] ?? 1000;
81
+ return { rateHz, supported: supported.length ? supported : [rateHz] };
82
+ }
83
+ export function keychronDecodeFirmware(response) {
84
+ const end = response.indexOf(0, 1);
85
+ const bytes = response.slice(1, end < 0 ? undefined : end);
86
+ if (!bytes.length)
87
+ return null;
88
+ const text = String.fromCharCode(...bytes);
89
+ return text.startsWith("v") ? text : `v${text}`;
90
+ }
91
+ export function keychronDecodeBattery(response) {
92
+ const percent = response[2] ?? 0xff;
93
+ const status = response[3] ?? 0;
94
+ const state = status === 1
95
+ ? "Charging"
96
+ : status === 2
97
+ ? "Full"
98
+ : "Discharging";
99
+ return { percent, state };
100
+ }
101
+ export function keychronDecodeSleepTimeout(response) {
102
+ return (response[5] ?? 0) | ((response[6] ?? 0) << 8);
103
+ }
104
+ export function keychronEncodeSleepTimeout(seconds) {
105
+ return [
106
+ KEYCHRON_COMMAND.miscGroup,
107
+ KEYCHRON_MISC_COMMAND.setSleep,
108
+ 0,
109
+ 0,
110
+ seconds & 0xff,
111
+ (seconds >> 8) & 0xff,
112
+ 0,
113
+ 0,
114
+ ];
115
+ }
116
+ export function keychronDecodeLayerCount(response) {
117
+ return response[1] ?? 0;
118
+ }
119
+ export function keychronDecodeCurrentLayer(response) {
120
+ const reported = response[1] ?? 1;
121
+ if (reported < 1)
122
+ return 1;
123
+ return Math.min(reported, KEYCHRON_NAPE_LAYER_COUNT);
124
+ }
125
+ export function keychronEncodeSetLayer(layer) {
126
+ return [KEYCHRON_COMMAND.miscGroup, KEYCHRON_NAPE_COMMAND.setLayer, layer & 0xff];
127
+ }
128
+ export function keychronOrientationIndex(index) {
129
+ if (!Number.isInteger(index) || index < 0 || index >= KEYCHRON_NAPE_ORIENTATION_STEPS) {
130
+ throw new Error(`Orientation must be a 45° step from 0° to 315°.`);
131
+ }
132
+ return index;
133
+ }
134
+ export function keychronOrientationDegrees(index) {
135
+ return KEYCHRON_NAPE_ORIENTATION_STEP_DEGREES * keychronOrientationIndex(index);
136
+ }
137
+ export function keychronOrientationLabel(index) {
138
+ return `${keychronOrientationDegrees(index)}\u00b0`;
139
+ }
140
+ export const KEYCHRON_NAPE_ORIENTATION_OPTIONS = Array.from({ length: KEYCHRON_NAPE_ORIENTATION_STEPS }, (_, index) => ({
141
+ index,
142
+ degrees: KEYCHRON_NAPE_ORIENTATION_STEP_DEGREES * index,
143
+ label: `${KEYCHRON_NAPE_ORIENTATION_STEP_DEGREES * index}\u00b0`,
144
+ }));
145
+ export function keychronDecodeOrientationIndex(response) {
146
+ return response[2] ?? 0xff;
147
+ }
148
+ export function keychronEncodeSetOrientation(index) {
149
+ return [KEYCHRON_COMMAND.miscGroup, KEYCHRON_NAPE_COMMAND.setOrientation, keychronOrientationIndex(index)];
150
+ }
151
+ export function keychronEncodeGetLayerOrientation(layer) {
152
+ return [KEYCHRON_COMMAND.miscGroup, KEYCHRON_NAPE_COMMAND.getLayerOrientation, layer & 0xff];
153
+ }
154
+ export function keychronEncodeSetLayerOrientation(layer, index) {
155
+ return [
156
+ KEYCHRON_COMMAND.miscGroup,
157
+ KEYCHRON_NAPE_COMMAND.setLayerOrientation,
158
+ layer & 0xff,
159
+ keychronOrientationIndex(index),
160
+ ];
161
+ }
162
+ /** Nape VIA keymap is 7 packed columns; the overlay exposes the first six. */
163
+ export const KEYCHRON_NAPE_KEYMAP_COLUMNS = 7;
164
+ export const KEYCHRON_NAPE_KEYMAP_BUFFER_SIZE = KEYCHRON_NAPE_KEYMAP_COLUMNS * 2;
165
+ export const KEYCHRON_NAPE_KEY_CONTROLS = [
166
+ { col: 0, name: "03" },
167
+ { col: 1, name: "04" },
168
+ { col: 2, name: "01" },
169
+ { col: 3, name: "02" },
170
+ { col: 4, name: "M1" },
171
+ { col: 5, name: "M2" },
172
+ ];
173
+ export const KEYCHRON_NAPE_ENCODER_ID = 0;
174
+ export const KEYCHRON_NAPE_ENCODER_CCW = 0;
175
+ export const KEYCHRON_NAPE_ENCODER_CW = 1;
176
+ /** VIA protocol 12 QMK keycodes confirmed on Nape Pro firmware v1.2.6-ZK. */
177
+ export const KEYCHRON_QK_USER = 0x7e00;
178
+ export const KEYCHRON_QK_MOMENTARY = 0x5220;
179
+ export const KEYCHRON_NAPE_KEYCODE = {
180
+ no: 0,
181
+ mute: 0x00a8,
182
+ volumeUp: 0x00a9,
183
+ volumeDown: 0x00aa,
184
+ leftClick: 0x00d1,
185
+ rightClick: 0x00d2,
186
+ middleClick: 0x00d3,
187
+ backward: 0x00d4,
188
+ forward: 0x00d5,
189
+ scrollUp: 0x00d9,
190
+ scrollDown: 0x00da,
191
+ scrollLeft: 0x00db,
192
+ scrollRight: 0x00dc,
193
+ dpiNext: KEYCHRON_QK_USER + 37,
194
+ dpiPrev: KEYCHRON_QK_USER + 38,
195
+ pollingPrev: KEYCHRON_QK_USER + 39,
196
+ pollingNext: KEYCHRON_QK_USER + 40,
197
+ orientationCycle: KEYCHRON_QK_USER + 43,
198
+ dpiCycle: KEYCHRON_QK_USER + 44,
199
+ pollingCycle: KEYCHRON_QK_USER + 45,
200
+ doubleClick: KEYCHRON_QK_USER + 46,
201
+ customDpi: KEYCHRON_QK_USER + 47,
202
+ gestureMode: KEYCHRON_QK_MOMENTARY + 9,
203
+ scrollMode: KEYCHRON_QK_MOMENTARY + 10,
204
+ };
205
+ export const KEYCHRON_NAPE_BUTTON_ACTIONS = [
206
+ "Disabled",
207
+ "Left click",
208
+ "Right click",
209
+ "Middle click",
210
+ "Back",
211
+ "Forward",
212
+ "Double left click",
213
+ "Scroll up",
214
+ "Scroll down",
215
+ "Scroll left",
216
+ "Scroll right",
217
+ "Volume up",
218
+ "Volume down",
219
+ "Mute",
220
+ "Scroll mode",
221
+ "Gesture mode",
222
+ "DPI cycle",
223
+ "DPI up",
224
+ "DPI down",
225
+ "Polling cycle",
226
+ "Polling up",
227
+ "Polling down",
228
+ "Cycle orientation",
229
+ ];
230
+ const KEYCHRON_NAPE_BUTTON_KEYCODES = {
231
+ Disabled: KEYCHRON_NAPE_KEYCODE.no,
232
+ "Left click": KEYCHRON_NAPE_KEYCODE.leftClick,
233
+ "Right click": KEYCHRON_NAPE_KEYCODE.rightClick,
234
+ "Middle click": KEYCHRON_NAPE_KEYCODE.middleClick,
235
+ Back: KEYCHRON_NAPE_KEYCODE.backward,
236
+ Forward: KEYCHRON_NAPE_KEYCODE.forward,
237
+ "Double left click": KEYCHRON_NAPE_KEYCODE.doubleClick,
238
+ "Scroll up": KEYCHRON_NAPE_KEYCODE.scrollUp,
239
+ "Scroll down": KEYCHRON_NAPE_KEYCODE.scrollDown,
240
+ "Scroll left": KEYCHRON_NAPE_KEYCODE.scrollLeft,
241
+ "Scroll right": KEYCHRON_NAPE_KEYCODE.scrollRight,
242
+ "Volume up": KEYCHRON_NAPE_KEYCODE.volumeUp,
243
+ "Volume down": KEYCHRON_NAPE_KEYCODE.volumeDown,
244
+ Mute: KEYCHRON_NAPE_KEYCODE.mute,
245
+ "Scroll mode": KEYCHRON_NAPE_KEYCODE.scrollMode,
246
+ "Gesture mode": KEYCHRON_NAPE_KEYCODE.gestureMode,
247
+ "DPI cycle": KEYCHRON_NAPE_KEYCODE.dpiCycle,
248
+ "DPI up": KEYCHRON_NAPE_KEYCODE.dpiNext,
249
+ "DPI down": KEYCHRON_NAPE_KEYCODE.dpiPrev,
250
+ "Polling cycle": KEYCHRON_NAPE_KEYCODE.pollingCycle,
251
+ "Polling up": KEYCHRON_NAPE_KEYCODE.pollingNext,
252
+ "Polling down": KEYCHRON_NAPE_KEYCODE.pollingPrev,
253
+ "Cycle orientation": KEYCHRON_NAPE_KEYCODE.orientationCycle,
254
+ };
255
+ const KEYCHRON_NAPE_BUTTON_ACTION_BY_KEYCODE = new Map(Object.entries(KEYCHRON_NAPE_BUTTON_KEYCODES).map(([action, keycode]) => [keycode, action]));
256
+ export function keychronUserLayerToVia(layer) {
257
+ return Math.min(Math.max(layer, 1), KEYCHRON_NAPE_LAYER_COUNT);
258
+ }
259
+ /** Firmware layers are 1–8; the UI and Launcher label them 0–7. */
260
+ export function keychronLayerDisplayIndex(layer) {
261
+ return keychronUserLayerToVia(layer) - 1;
262
+ }
263
+ export function keychronLayerLabel(layer) {
264
+ return `Layer ${keychronLayerDisplayIndex(layer)}`;
265
+ }
266
+ export function keychronActionForKeycode(keycode) {
267
+ return KEYCHRON_NAPE_BUTTON_ACTION_BY_KEYCODE.get(keycode) ?? "Custom";
268
+ }
269
+ export function keychronKeycodeForAction(action) {
270
+ return KEYCHRON_NAPE_BUTTON_KEYCODES[action];
271
+ }
272
+ export function keychronMappedControl(keycode) {
273
+ return { keycode, action: keychronActionForKeycode(keycode) };
274
+ }
275
+ export function keychronLayerKeymapFromCodes(layer, columnCodes, ccw, cw, orientationIndex = 0) {
276
+ return {
277
+ layer,
278
+ keys: KEYCHRON_NAPE_KEY_CONTROLS.map((control) => ({
279
+ ...control,
280
+ ...keychronMappedControl(columnCodes[control.col] ?? 0),
281
+ })),
282
+ wheel: {
283
+ ccw: keychronMappedControl(ccw),
284
+ cw: keychronMappedControl(cw),
285
+ },
286
+ orientationIndex,
287
+ };
288
+ }
289
+ export function keychronEncodeGetBuffer(viaLayer) {
290
+ const offset = KEYCHRON_NAPE_KEYMAP_BUFFER_SIZE * viaLayer;
291
+ return [
292
+ KEYCHRON_VIA_COMMAND.getBuffer,
293
+ (offset >> 8) & 0xff,
294
+ offset & 0xff,
295
+ KEYCHRON_NAPE_KEYMAP_BUFFER_SIZE,
296
+ ];
297
+ }
298
+ export function keychronDecodeKeymapBuffer(response) {
299
+ const size = response[3] ?? 0;
300
+ const data = response.subarray(4, 4 + size);
301
+ const codes = [];
302
+ for (let index = 0; index + 1 < data.length; index += 2) {
303
+ codes.push(((data[index] ?? 0) << 8) | (data[index + 1] ?? 0));
304
+ }
305
+ return codes;
306
+ }
307
+ export function keychronEncodeGetKeycode(viaLayer, col) {
308
+ return [KEYCHRON_VIA_COMMAND.getKeycode, viaLayer & 0xff, 0, col & 0xff];
309
+ }
310
+ export function keychronEncodeSetKeycode(viaLayer, col, keycode) {
311
+ return [
312
+ KEYCHRON_VIA_COMMAND.setKeycode,
313
+ viaLayer & 0xff,
314
+ 0,
315
+ col & 0xff,
316
+ (keycode >> 8) & 0xff,
317
+ keycode & 0xff,
318
+ ];
319
+ }
320
+ export function keychronEncodeGetEncoder(viaLayer, clockwise) {
321
+ return [
322
+ KEYCHRON_VIA_COMMAND.getEncoder,
323
+ viaLayer & 0xff,
324
+ KEYCHRON_NAPE_ENCODER_ID,
325
+ clockwise ? KEYCHRON_NAPE_ENCODER_CW : KEYCHRON_NAPE_ENCODER_CCW,
326
+ ];
327
+ }
328
+ export function keychronEncodeSetEncoder(viaLayer, clockwise, keycode) {
329
+ return [
330
+ KEYCHRON_VIA_COMMAND.setEncoder,
331
+ viaLayer & 0xff,
332
+ KEYCHRON_NAPE_ENCODER_ID,
333
+ clockwise ? KEYCHRON_NAPE_ENCODER_CW : KEYCHRON_NAPE_ENCODER_CCW,
334
+ (keycode >> 8) & 0xff,
335
+ keycode & 0xff,
336
+ ];
337
+ }
338
+ export function keychronDecodeKeycodeReply(response) {
339
+ return ((response[4] ?? 0) << 8) | (response[5] ?? 0);
340
+ }
341
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keychron/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,yEAAyE;AACzE,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAClD,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;AAC3D,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,CAAC;AACnD,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAC5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAA+C;IACrF,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC9D,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAA+C;IAC1F,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC9D,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;AACxG,uFAAuF;AACvF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;CACN,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE;IACrE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE;IACjE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE;CAC5E,CAAC;AACX,uEAAuE;AACvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;CACN,CAAC;AACX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AACvF,gIAAgI;AAChI,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAClD,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACxE,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;CAC3C,CAAC;AAEX,MAAM,UAAU,cAAc,CAAC,OAA0B;IACvD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAoB;IACxD,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;IACxG,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzH,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC7G,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAoB;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAoB;IAEpB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;QACxB,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,MAAM,KAAK,CAAC;YACZ,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,aAAa,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAoB;IAC7D,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,OAAO;QACL,gBAAgB,CAAC,SAAS;QAC1B,qBAAqB,CAAC,QAAQ;QAC9B,CAAC;QACD,CAAC;QACD,OAAO,GAAG,IAAI;QACd,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI;QACrB,CAAC;QACD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAoB;IAC3D,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAoB;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,+BAA+B,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,OAAO,sCAAsC,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,GAAG,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC,IAAI,CACzD,EAAE,MAAM,EAAE,+BAA+B,EAAE,EAC3C,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACb,KAAK;IACL,OAAO,EAAE,sCAAsC,GAAG,KAAK;IACvD,KAAK,EAAE,GAAG,sCAAsC,GAAG,KAAK,QAAQ;CACjE,CAAC,CACH,CAAC;AAEF,MAAM,UAAU,8BAA8B,CAAC,QAAoB;IACjE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,CAAC,cAAc,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7G,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAa;IAC7D,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,CAAC,mBAAmB,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAa,EAAE,KAAa;IAC5E,OAAO;QACL,gBAAgB,CAAC,SAAS;QAC1B,qBAAqB,CAAC,mBAAmB;QACzC,KAAK,GAAG,IAAI;QACZ,wBAAwB,CAAC,KAAK,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,gCAAgC,GAAG,4BAA4B,GAAG,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IACtB,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IACtB,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IACtB,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IACtB,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IACtB,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;CACd,CAAC;AACX,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,CAAC;IACL,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,gBAAgB,GAAG,EAAE;IAC9B,OAAO,EAAE,gBAAgB,GAAG,EAAE;IAC9B,WAAW,EAAE,gBAAgB,GAAG,EAAE;IAClC,WAAW,EAAE,gBAAgB,GAAG,EAAE;IAClC,gBAAgB,EAAE,gBAAgB,GAAG,EAAE;IACvC,QAAQ,EAAE,gBAAgB,GAAG,EAAE;IAC/B,YAAY,EAAE,gBAAgB,GAAG,EAAE;IACnC,WAAW,EAAE,gBAAgB,GAAG,EAAE;IAClC,SAAS,EAAE,gBAAgB,GAAG,EAAE;IAChC,WAAW,EAAE,qBAAqB,GAAG,CAAC;IACtC,UAAU,EAAE,qBAAqB,GAAG,EAAE;CAC9B,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,UAAU;IACV,YAAY;IACZ,aAAa;IACb,cAAc;IACd,MAAM;IACN,SAAS;IACT,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,aAAa;IACb,cAAc;IACd,WAAW;IACX,aAAa;IACb,MAAM;IACN,aAAa;IACb,cAAc;IACd,WAAW;IACX,QAAQ;IACR,UAAU;IACV,eAAe;IACf,YAAY;IACZ,cAAc;IACd,mBAAmB;CACX,CAAC;AAGX,MAAM,6BAA6B,GAA6C;IAC9E,QAAQ,EAAE,qBAAqB,CAAC,EAAE;IAClC,YAAY,EAAE,qBAAqB,CAAC,SAAS;IAC7C,aAAa,EAAE,qBAAqB,CAAC,UAAU;IAC/C,cAAc,EAAE,qBAAqB,CAAC,WAAW;IACjD,IAAI,EAAE,qBAAqB,CAAC,QAAQ;IACpC,OAAO,EAAE,qBAAqB,CAAC,OAAO;IACtC,mBAAmB,EAAE,qBAAqB,CAAC,WAAW;IACtD,WAAW,EAAE,qBAAqB,CAAC,QAAQ;IAC3C,aAAa,EAAE,qBAAqB,CAAC,UAAU;IAC/C,aAAa,EAAE,qBAAqB,CAAC,UAAU;IAC/C,cAAc,EAAE,qBAAqB,CAAC,WAAW;IACjD,WAAW,EAAE,qBAAqB,CAAC,QAAQ;IAC3C,aAAa,EAAE,qBAAqB,CAAC,UAAU;IAC/C,IAAI,EAAE,qBAAqB,CAAC,IAAI;IAChC,aAAa,EAAE,qBAAqB,CAAC,UAAU;IAC/C,cAAc,EAAE,qBAAqB,CAAC,WAAW;IACjD,WAAW,EAAE,qBAAqB,CAAC,QAAQ;IAC3C,QAAQ,EAAE,qBAAqB,CAAC,OAAO;IACvC,UAAU,EAAE,qBAAqB,CAAC,OAAO;IACzC,eAAe,EAAE,qBAAqB,CAAC,YAAY;IACnD,YAAY,EAAE,qBAAqB,CAAC,WAAW;IAC/C,cAAc,EAAE,qBAAqB,CAAC,WAAW;IACjD,mBAAmB,EAAE,qBAAqB,CAAC,gBAAgB;CAC5D,CAAC;AAEF,MAAM,sCAAsC,GAAG,IAAI,GAAG,CACpD,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,MAAkC,CAAC,CAAC,CACxH,CAAC;AAeF,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;AACjE,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,SAAS,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO,sCAAsC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAgC;IACvE,OAAO,6BAA6B,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,WAA8B,EAC9B,GAAW,EACX,EAAU,EACV,gBAAgB,GAAG,CAAC;IAEpB,OAAO;QACL,KAAK;QACL,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,OAAO;YACV,GAAG,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,CAAC;QACH,KAAK,EAAE;YACL,GAAG,EAAE,qBAAqB,CAAC,GAAG,CAAC;YAC/B,EAAE,EAAE,qBAAqB,CAAC,EAAE,CAAC;SAC9B;QACD,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,MAAM,GAAG,gCAAgC,GAAG,QAAQ,CAAC;IAC3D,OAAO;QACL,oBAAoB,CAAC,SAAS;QAC9B,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI;QACpB,MAAM,GAAG,IAAI;QACb,gCAAgC;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAoB;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,GAAW;IACpE,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,GAAW,EAAE,OAAe;IACrF,OAAO;QACL,oBAAoB,CAAC,UAAU;QAC/B,QAAQ,GAAG,IAAI;QACf,CAAC;QACD,GAAG,GAAG,IAAI;QACV,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI;QACrB,OAAO,GAAG,IAAI;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,SAAkB;IAC3E,OAAO;QACL,oBAAoB,CAAC,UAAU;QAC/B,QAAQ,GAAG,IAAI;QACf,wBAAwB;QACxB,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,SAAkB,EAAE,OAAe;IAC5F,OAAO;QACL,oBAAoB,CAAC,UAAU;QAC/B,QAAQ,GAAG,IAAI;QACf,wBAAwB;QACxB,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB;QAChE,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI;QACrB,OAAO,GAAG,IAAI;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAoB;IAC7D,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * K-snake X11 configuration protocol, reverse-engineered from the vendor
3
+ * WebHID panel shipped at https://x1a11.yjx2012.com/ (Next.js `app/page` chunk).
4
+ *
5
+ * Transport: WebHID output report (`sendReport(0, 64 bytes starting with
6
+ * 0x55)`) with the reply arriving as a queued `inputreport` — not a feature
7
+ * report. Control collection is usage page 0xFF01, usage 0x10; the vendor
8
+ * picker requests:
9
+ * [{ vendorId: 0xA8A4, productId: 0x2255, usagePage: 0xFF01, usage: 0x10 },
10
+ * { vendorId: 0xA8A5, productId: 0x2255, usagePage: 0xFF01, usage: 0x10 }]
11
+ * 0xA8A4 reports "USB", 0xA8A5 is the 2.4 GHz dongle.
12
+ *
13
+ * This module is transport-independent: it only builds 64-byte report bodies
14
+ * and decodes reply buffers. See `src/drivers/ksnake/hid.ts` for the WebHID
15
+ * exchange queue.
16
+ */
17
+ export declare const KSNAKE_USB_VENDOR_ID = 43172;
18
+ export declare const KSNAKE_DONGLE_VENDOR_ID = 43173;
19
+ export declare const KSNAKE_PRODUCT_ID = 8789;
20
+ export declare const KSNAKE_USAGE_PAGE = 65281;
21
+ export declare const KSNAKE_USAGE = 16;
22
+ export declare const KSNAKE_REPORT_ID = 0;
23
+ export declare const KSNAKE_MAGIC = 85;
24
+ export declare const KSNAKE_REPORT_SIZE = 64;
25
+ /** DPI range. Vendor panel slider allows 200–12000 (step 100); the manual's
26
+ * factory steps are 800–12000 and 600 was observed in stage 0 on retail
27
+ * hardware (user-customized via the vendor panel). */
28
+ export declare const KSNAKE_DPI_MIN = 200;
29
+ export declare const KSNAKE_DPI_MAX = 12000;
30
+ export declare function ksnakeIsValidDpi(dpi: number): boolean;
31
+ export interface KsnakeProduct {
32
+ model: string;
33
+ wireless: boolean;
34
+ /** Not yet exercised on hardware through this driver. */
35
+ verified: false;
36
+ }
37
+ export declare const KSNAKE_PRODUCTS: ReadonlyMap<number, KsnakeProduct>;
38
+ /**
39
+ * Polling-rate index ↔ Hz.
40
+ * Endpoints confirmed by the X11 user manual: 1000 Hz in 2.4G/wired,
41
+ * 125 Hz in BT. Middle steps (250/500) come from the vendor panel screenshot
42
+ * + PAW3311 spec — keep until a hardware capture says otherwise.
43
+ * Default index 3 = 1000 Hz.
44
+ */
45
+ export declare const KSNAKE_POLLING_RATES: readonly [125, 250, 500, 1000];
46
+ export declare function ksnakeEncodePollingRate(hz: number): number | null;
47
+ export declare function ksnakeDecodePollingRate(index: number): number | null;
48
+ /**
49
+ * Lift-off mapping. The vendor panel offers two stops (lod_value 1/2,
50
+ * default 1, likely 1mm/2mm on the PAW3311); they map to the Low/High stops.
51
+ * Medium is not offered by the hardware.
52
+ */
53
+ export declare function ksnakeDecodeLiftOff(value: number): "Low" | "High";
54
+ export declare function ksnakeEncodeLiftOff(level: string): number | null;
55
+ export declare const KSNAKE_DEFAULT_CONFIG: {
56
+ readonly lightMode: 2;
57
+ readonly reportRate: 3;
58
+ readonly dpiIndex: 2;
59
+ readonly dpiCount: 6;
60
+ readonly stages: readonly [800, 1200, 1600, 3200, 5000, 12000];
61
+ readonly scrollFlag: 0;
62
+ readonly lodValue: 1;
63
+ readonly sensorFlag: 53;
64
+ readonly keyRespond: 2;
65
+ readonly sleepLight: 10;
66
+ readonly highspeedMode: 0;
67
+ readonly wakeupFlag: 1;
68
+ readonly moveLightFlag: 1;
69
+ };
70
+ export interface KsnakeConfig {
71
+ lightMode: number;
72
+ /** 0-based index into KSNAKE_POLLING_RATES */
73
+ reportRate: number;
74
+ /** 0-based active DPI stage */
75
+ dpiIndex: number;
76
+ /** number of enabled DPI stages */
77
+ dpiCount: number;
78
+ /** up to 6 LE uint16 DPI stages */
79
+ stages: number[];
80
+ scrollFlag: number;
81
+ lodValue: number;
82
+ sensorFlag: number;
83
+ keyRespond: number;
84
+ sleepLight: number;
85
+ highspeedMode: number;
86
+ wakeupFlag: number;
87
+ moveLightFlag: number;
88
+ }
89
+ /** 64-byte output-report body (without the reportId prefix). */
90
+ export declare function ksnakeGetVersionRequest(): Uint8Array;
91
+ /** Vendor reply bytes [23..25] hold ASCII "x.y.z" when present. */
92
+ export declare function ksnakeDecodeVersion(reply: Uint8Array): string | null;
93
+ export declare function ksnakeGetBatteryRequest(): Uint8Array;
94
+ export declare function ksnakeDecodeBattery(reply: Uint8Array): {
95
+ percent: number;
96
+ charging: number;
97
+ } | null;
98
+ export declare function ksnakeGetConfigRequest(): Uint8Array;
99
+ /** Decode a getConfig reply, mirroring the vendor `getMouseConfigInfo()`. */
100
+ export declare function ksnakeDecodeConfig(reply: Uint8Array): KsnakeConfig | null;
101
+ /** Encode a setConfig request, mirroring vendor `setMouseConfigData()`. */
102
+ export declare function ksnakeEncodeSetConfig(config: KsnakeConfig): Uint8Array;
103
+ /** Physical button order for the 6 remappable slots. Labels follow the factory
104
+ * functions; the side button ships as Forward (user-renameable to Macro1). */
105
+ export declare const KSNAKE_BUTTON_NAMES: readonly ["Left", "Right", "Middle", "Backward", "Forward", "DPI"];
106
+ /** Button function types from the vendor key catalog. */
107
+ export declare const KSNAKE_KEY_TYPE: {
108
+ readonly mouse: 32;
109
+ readonly special: 33;
110
+ readonly media: 48;
111
+ };
112
+ /** One button slot: type 32 = mouse button (code1 = HID bitmask, 0 = disabled),
113
+ * 33 = special (DPI loop [85,0,0], scroll [56,1/255]), 48 = consumer/media
114
+ * (code1 = consumer usage). Macro references (e.g. type 112) are preserved
115
+ * opaquely — the catalog cannot rebuild them. */
116
+ export interface KsnakeKeyBinding {
117
+ type: number;
118
+ code1: number;
119
+ code2: number;
120
+ code3: number;
121
+ }
122
+ export declare function ksnakeIsKnownKeyType(type: number): boolean;
123
+ /** Remappable actions from the vendor key catalog (display label + bytes). */
124
+ export declare const KSNAKE_BUTTON_ACTIONS: ReadonlyArray<{
125
+ label: string;
126
+ type: number;
127
+ code1: number;
128
+ code2: number;
129
+ code3: number;
130
+ }>;
131
+ /** Display label for a binding, or null when the catalog cannot name it. */
132
+ export declare function ksnakeBindingLabel(binding: KsnakeKeyBinding): string | null;
133
+ /** Catalog binding for a display label, or null for unknown labels. */
134
+ export declare function ksnakeFindButtonAction(label: string): KsnakeKeyBinding | null;
135
+ /**
136
+ * Plausibility gate for decoded key maps. `exchange()` resolves with the next
137
+ * input report, so a stray report from another command can land here; those
138
+ * decode to zeroed/garbage slot types. Real maps always carry nonzero types
139
+ * (32/33/48 catalog, plus opaque refs like macro 112).
140
+ */
141
+ export declare function ksnakeKeysLookPlausible(keys: readonly KsnakeKeyBinding[]): boolean;
142
+ /** GET_KEYS request tail observed in vendor JS: [0x55, 0x08, 0xA5, 0x0B, 0x20]. */
143
+ export declare function ksnakeGetKeysRequest(): Uint8Array;
144
+ /**
145
+ * Decode a getKeys reply: 7 slots of 4 bytes at reply[8..35] (the vendor
146
+ * slices 8). Slot 6 is a fixed scroll-up entry; slots 0-5 are remappable.
147
+ * Verified against a retail dongle (factory map decodes to
148
+ * Left/Right/Middle/Backward + DPI loop in order).
149
+ */
150
+ export declare function ksnakeDecodeKeys(reply: Uint8Array): KsnakeKeyBinding[] | null;
151
+ /**
152
+ * Encode a setKeys request, mirroring vendor `setMouseKeys()`: head
153
+ * [0x55, 0x09, 0xA5, 0x22, 0x20], slots 0-5 at body[9..32], fixed tail
154
+ * [33,56,1,0, 33,56,255,0] at body[33..40].
155
+ */
156
+ export declare function ksnakeEncodeSetKeys(keys: readonly KsnakeKeyBinding[]): Uint8Array;
157
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ksnake/index.ts"],"names":[],"mappings":"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"}