@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.
- package/CONTRIBUTING.md +167 -0
- package/README.md +89 -0
- package/dist/asus/index.d.ts +52 -0
- package/dist/asus/index.d.ts.map +1 -0
- package/dist/asus/index.js +248 -0
- package/dist/asus/index.js.map +1 -0
- package/dist/atk/index.d.ts +200 -0
- package/dist/atk/index.d.ts.map +1 -0
- package/dist/atk/index.js +480 -0
- package/dist/atk/index.js.map +1 -0
- package/dist/bitmouse/index.d.ts +284 -0
- package/dist/bitmouse/index.d.ts.map +1 -0
- package/dist/bitmouse/index.js +396 -0
- package/dist/bitmouse/index.js.map +1 -0
- package/dist/compx/codec.d.ts +31 -0
- package/dist/compx/codec.d.ts.map +1 -0
- package/dist/compx/codec.js +50 -0
- package/dist/compx/codec.js.map +1 -0
- package/dist/corsair/index.d.ts +147 -0
- package/dist/corsair/index.d.ts.map +1 -0
- package/dist/corsair/index.js +223 -0
- package/dist/corsair/index.js.map +1 -0
- package/dist/dareu/index.d.ts +136 -0
- package/dist/dareu/index.d.ts.map +1 -0
- package/dist/dareu/index.js +344 -0
- package/dist/dareu/index.js.map +1 -0
- package/dist/drivers/asus/hid.d.ts +29 -0
- package/dist/drivers/asus/hid.d.ts.map +1 -0
- package/dist/drivers/asus/hid.js +419 -0
- package/dist/drivers/asus/hid.js.map +1 -0
- package/dist/drivers/atk/bitmouse-hid.d.ts +80 -0
- package/dist/drivers/atk/bitmouse-hid.d.ts.map +1 -0
- package/dist/drivers/atk/bitmouse-hid.js +501 -0
- package/dist/drivers/atk/bitmouse-hid.js.map +1 -0
- package/dist/drivers/atk/hid.d.ts +163 -0
- package/dist/drivers/atk/hid.d.ts.map +1 -0
- package/dist/drivers/atk/hid.js +1368 -0
- package/dist/drivers/atk/hid.js.map +1 -0
- package/dist/drivers/atk/products.d.ts +13 -0
- package/dist/drivers/atk/products.d.ts.map +1 -0
- package/dist/drivers/atk/products.js +13 -0
- package/dist/drivers/atk/products.js.map +1 -0
- package/dist/drivers/attackshark/dpi.d.ts +41 -0
- package/dist/drivers/attackshark/dpi.d.ts.map +1 -0
- package/dist/drivers/attackshark/dpi.js +215 -0
- package/dist/drivers/attackshark/dpi.js.map +1 -0
- package/dist/drivers/attackshark/hid.d.ts +124 -0
- package/dist/drivers/attackshark/hid.d.ts.map +1 -0
- package/dist/drivers/attackshark/hid.js +728 -0
- package/dist/drivers/attackshark/hid.js.map +1 -0
- package/dist/drivers/corsair/hid.d.ts +70 -0
- package/dist/drivers/corsair/hid.d.ts.map +1 -0
- package/dist/drivers/corsair/hid.js +414 -0
- package/dist/drivers/corsair/hid.js.map +1 -0
- package/dist/drivers/dareu/hid.d.ts +59 -0
- package/dist/drivers/dareu/hid.d.ts.map +1 -0
- package/dist/drivers/dareu/hid.js +478 -0
- package/dist/drivers/dareu/hid.js.map +1 -0
- package/dist/drivers/endgame/egg-op1-hid.d.ts +107 -0
- package/dist/drivers/endgame/egg-op1-hid.d.ts.map +1 -0
- package/dist/drivers/endgame/egg-op1-hid.js +605 -0
- package/dist/drivers/endgame/egg-op1-hid.js.map +1 -0
- package/dist/drivers/endgame/egg-we-control.d.ts +42 -0
- package/dist/drivers/endgame/egg-we-control.d.ts.map +1 -0
- package/dist/drivers/endgame/egg-we-control.js +87 -0
- package/dist/drivers/endgame/egg-we-control.js.map +1 -0
- package/dist/drivers/endgame/egg-we-hid.d.ts +58 -0
- package/dist/drivers/endgame/egg-we-hid.d.ts.map +1 -0
- package/dist/drivers/endgame/egg-we-hid.js +514 -0
- package/dist/drivers/endgame/egg-we-hid.js.map +1 -0
- package/dist/drivers/fantech/hid.d.ts +106 -0
- package/dist/drivers/fantech/hid.d.ts.map +1 -0
- package/dist/drivers/fantech/hid.js +295 -0
- package/dist/drivers/fantech/hid.js.map +1 -0
- package/dist/drivers/finalmouse/hid.d.ts +31 -0
- package/dist/drivers/finalmouse/hid.d.ts.map +1 -0
- package/dist/drivers/finalmouse/hid.js +181 -0
- package/dist/drivers/finalmouse/hid.js.map +1 -0
- package/dist/drivers/gearhub/hid.d.ts +191 -0
- package/dist/drivers/gearhub/hid.d.ts.map +1 -0
- package/dist/drivers/gearhub/hid.js +542 -0
- package/dist/drivers/gearhub/hid.js.map +1 -0
- package/dist/drivers/glorious/classic-hid.d.ts +62 -0
- package/dist/drivers/glorious/classic-hid.d.ts.map +1 -0
- package/dist/drivers/glorious/classic-hid.js +326 -0
- package/dist/drivers/glorious/classic-hid.js.map +1 -0
- package/dist/drivers/glorious/hid.d.ts +39 -0
- package/dist/drivers/glorious/hid.d.ts.map +1 -0
- package/dist/drivers/glorious/hid.js +203 -0
- package/dist/drivers/glorious/hid.js.map +1 -0
- package/dist/drivers/gwolves/hid.d.ts +27 -0
- package/dist/drivers/gwolves/hid.d.ts.map +1 -0
- package/dist/drivers/gwolves/hid.js +225 -0
- package/dist/drivers/gwolves/hid.js.map +1 -0
- package/dist/drivers/gwolves/products.d.ts +17 -0
- package/dist/drivers/gwolves/products.d.ts.map +1 -0
- package/dist/drivers/gwolves/products.js +58 -0
- package/dist/drivers/gwolves/products.js.map +1 -0
- package/dist/drivers/hyperx/hid.d.ts +59 -0
- package/dist/drivers/hyperx/hid.d.ts.map +1 -0
- package/dist/drivers/hyperx/hid.js +229 -0
- package/dist/drivers/hyperx/hid.js.map +1 -0
- package/dist/drivers/incott/hid.d.ts +513 -0
- package/dist/drivers/incott/hid.d.ts.map +1 -0
- package/dist/drivers/incott/hid.js +1173 -0
- package/dist/drivers/incott/hid.js.map +1 -0
- package/dist/drivers/index.d.ts +5 -0
- package/dist/drivers/index.d.ts.map +1 -0
- package/dist/drivers/index.js +5 -0
- package/dist/drivers/index.js.map +1 -0
- package/dist/drivers/keychron/m6-hid.d.ts +81 -0
- package/dist/drivers/keychron/m6-hid.d.ts.map +1 -0
- package/dist/drivers/keychron/m6-hid.js +486 -0
- package/dist/drivers/keychron/m6-hid.js.map +1 -0
- package/dist/drivers/keychron/nape-hid.d.ts +60 -0
- package/dist/drivers/keychron/nape-hid.d.ts.map +1 -0
- package/dist/drivers/keychron/nape-hid.js +432 -0
- package/dist/drivers/keychron/nape-hid.js.map +1 -0
- package/dist/drivers/ksnake/hid.d.ts +74 -0
- package/dist/drivers/ksnake/hid.d.ts.map +1 -0
- package/dist/drivers/ksnake/hid.js +368 -0
- package/dist/drivers/ksnake/hid.js.map +1 -0
- package/dist/drivers/lamzu/hid.d.ts +58 -0
- package/dist/drivers/lamzu/hid.d.ts.map +1 -0
- package/dist/drivers/lamzu/hid.js +414 -0
- package/dist/drivers/lamzu/hid.js.map +1 -0
- package/dist/drivers/lamzu-atlantis/hid.d.ts +148 -0
- package/dist/drivers/lamzu-atlantis/hid.d.ts.map +1 -0
- package/dist/drivers/lamzu-atlantis/hid.js +587 -0
- package/dist/drivers/lamzu-atlantis/hid.js.map +1 -0
- package/dist/drivers/logitech/bolt.d.ts +41 -0
- package/dist/drivers/logitech/bolt.d.ts.map +1 -0
- package/dist/drivers/logitech/bolt.js +105 -0
- package/dist/drivers/logitech/bolt.js.map +1 -0
- package/dist/drivers/logitech/hidpp.d.ts +525 -0
- package/dist/drivers/logitech/hidpp.d.ts.map +1 -0
- package/dist/drivers/logitech/hidpp.js +2774 -0
- package/dist/drivers/logitech/hidpp.js.map +1 -0
- package/dist/drivers/logitech/mode-status.d.ts +53 -0
- package/dist/drivers/logitech/mode-status.d.ts.map +1 -0
- package/dist/drivers/logitech/mode-status.js +52 -0
- package/dist/drivers/logitech/mode-status.js.map +1 -0
- package/dist/drivers/logitech/onboard-profiles.d.ts +298 -0
- package/dist/drivers/logitech/onboard-profiles.d.ts.map +1 -0
- package/dist/drivers/logitech/onboard-profiles.js +965 -0
- package/dist/drivers/logitech/onboard-profiles.js.map +1 -0
- package/dist/drivers/logitech/rgb-effects.d.ts +20 -0
- package/dist/drivers/logitech/rgb-effects.d.ts.map +1 -0
- package/dist/drivers/logitech/rgb-effects.js +93 -0
- package/dist/drivers/logitech/rgb-effects.js.map +1 -0
- package/dist/drivers/mchose/a5-gen1-hid.d.ts +36 -0
- package/dist/drivers/mchose/a5-gen1-hid.d.ts.map +1 -0
- package/dist/drivers/mchose/a5-gen1-hid.js +219 -0
- package/dist/drivers/mchose/a5-gen1-hid.js.map +1 -0
- package/dist/drivers/mchose/dock-hid.d.ts +26 -0
- package/dist/drivers/mchose/dock-hid.d.ts.map +1 -0
- package/dist/drivers/mchose/dock-hid.js +176 -0
- package/dist/drivers/mchose/dock-hid.js.map +1 -0
- package/dist/drivers/mchose/hid.d.ts +118 -0
- package/dist/drivers/mchose/hid.d.ts.map +1 -0
- package/dist/drivers/mchose/hid.js +550 -0
- package/dist/drivers/mchose/hid.js.map +1 -0
- package/dist/drivers/mchose/v3-hid.d.ts +109 -0
- package/dist/drivers/mchose/v3-hid.d.ts.map +1 -0
- package/dist/drivers/mchose/v3-hid.js +572 -0
- package/dist/drivers/mchose/v3-hid.js.map +1 -0
- package/dist/drivers/microsoft/hid.d.ts +25 -0
- package/dist/drivers/microsoft/hid.d.ts.map +1 -0
- package/dist/drivers/microsoft/hid.js +247 -0
- package/dist/drivers/microsoft/hid.js.map +1 -0
- package/dist/drivers/moddo/hid.d.ts +31 -0
- package/dist/drivers/moddo/hid.d.ts.map +1 -0
- package/dist/drivers/moddo/hid.js +154 -0
- package/dist/drivers/moddo/hid.js.map +1 -0
- package/dist/drivers/mouse-types.d.ts +388 -0
- package/dist/drivers/mouse-types.d.ts.map +1 -0
- package/dist/drivers/mouse-types.js +2 -0
- package/dist/drivers/mouse-types.js.map +1 -0
- package/dist/drivers/ninjutso/hid.d.ts +62 -0
- package/dist/drivers/ninjutso/hid.d.ts.map +1 -0
- package/dist/drivers/ninjutso/hid.js +680 -0
- package/dist/drivers/ninjutso/hid.js.map +1 -0
- package/dist/drivers/orbital/hid.d.ts +24 -0
- package/dist/drivers/orbital/hid.d.ts.map +1 -0
- package/dist/drivers/orbital/hid.js +85 -0
- package/dist/drivers/orbital/hid.js.map +1 -0
- package/dist/drivers/orbital/host-protocol.d.ts +59 -0
- package/dist/drivers/orbital/host-protocol.d.ts.map +1 -0
- package/dist/drivers/orbital/host-protocol.js +884 -0
- package/dist/drivers/orbital/host-protocol.js.map +1 -0
- package/dist/drivers/pulsar/pulsar-hid.d.ts +63 -0
- package/dist/drivers/pulsar/pulsar-hid.d.ts.map +1 -0
- package/dist/drivers/pulsar/pulsar-hid.js +381 -0
- package/dist/drivers/pulsar/pulsar-hid.js.map +1 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.d.ts +46 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.d.ts.map +1 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.js +343 -0
- package/dist/drivers/pulsar/pulsar-pro-hid.js.map +1 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.d.ts +40 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.d.ts.map +1 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.js +251 -0
- package/dist/drivers/pulsar/pulsar-xs1-hid.js.map +1 -0
- package/dist/drivers/rawm/hid.d.ts +29 -0
- package/dist/drivers/rawm/hid.d.ts.map +1 -0
- package/dist/drivers/rawm/hid.js +210 -0
- package/dist/drivers/rawm/hid.js.map +1 -0
- package/dist/drivers/razer/cobra-hid.d.ts +63 -0
- package/dist/drivers/razer/cobra-hid.d.ts.map +1 -0
- package/dist/drivers/razer/cobra-hid.js +282 -0
- package/dist/drivers/razer/cobra-hid.js.map +1 -0
- package/dist/drivers/razer/hid-open.d.ts +13 -0
- package/dist/drivers/razer/hid-open.d.ts.map +1 -0
- package/dist/drivers/razer/hid-open.js +29 -0
- package/dist/drivers/razer/hid-open.js.map +1 -0
- package/dist/drivers/razer/hid.d.ts +231 -0
- package/dist/drivers/razer/hid.d.ts.map +1 -0
- package/dist/drivers/razer/hid.js +772 -0
- package/dist/drivers/razer/hid.js.map +1 -0
- package/dist/drivers/razer/viper-hid.d.ts +33 -0
- package/dist/drivers/razer/viper-hid.d.ts.map +1 -0
- package/dist/drivers/razer/viper-hid.js +177 -0
- package/dist/drivers/razer/viper-hid.js.map +1 -0
- package/dist/drivers/razer/viper-mini-hid.d.ts +58 -0
- package/dist/drivers/razer/viper-mini-hid.d.ts.map +1 -0
- package/dist/drivers/razer/viper-mini-hid.js +273 -0
- package/dist/drivers/razer/viper-mini-hid.js.map +1 -0
- package/dist/drivers/razer/viper-v4-pro-hid.d.ts +26 -0
- package/dist/drivers/razer/viper-v4-pro-hid.d.ts.map +1 -0
- package/dist/drivers/razer/viper-v4-pro-hid.js +154 -0
- package/dist/drivers/razer/viper-v4-pro-hid.js.map +1 -0
- package/dist/drivers/registry.d.ts +70 -0
- package/dist/drivers/registry.d.ts.map +1 -0
- package/dist/drivers/registry.js +146 -0
- package/dist/drivers/registry.js.map +1 -0
- package/dist/drivers/steelseries/aerox3-hid.d.ts +53 -0
- package/dist/drivers/steelseries/aerox3-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox3-hid.js +172 -0
- package/dist/drivers/steelseries/aerox3-hid.js.map +1 -0
- package/dist/drivers/steelseries/aerox5-hid.d.ts +54 -0
- package/dist/drivers/steelseries/aerox5-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox5-hid.js +173 -0
- package/dist/drivers/steelseries/aerox5-hid.js.map +1 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.d.ts +69 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.js +234 -0
- package/dist/drivers/steelseries/aerox5-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.d.ts +70 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.js +227 -0
- package/dist/drivers/steelseries/aerox9-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/hid.d.ts +48 -0
- package/dist/drivers/steelseries/hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/hid.js +157 -0
- package/dist/drivers/steelseries/hid.js.map +1 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.d.ts +62 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.js +215 -0
- package/dist/drivers/steelseries/prime-mini-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/prime-plus-hid.d.ts +51 -0
- package/dist/drivers/steelseries/prime-plus-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/prime-plus-hid.js +150 -0
- package/dist/drivers/steelseries/prime-plus-hid.js.map +1 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.d.ts +61 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.js +185 -0
- package/dist/drivers/steelseries/rival3-wireless-hid.js.map +1 -0
- package/dist/drivers/steelseries/rival310-hid.d.ts +59 -0
- package/dist/drivers/steelseries/rival310-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/rival310-hid.js +182 -0
- package/dist/drivers/steelseries/rival310-hid.js.map +1 -0
- package/dist/drivers/steelseries/rival650-hid.d.ts +68 -0
- package/dist/drivers/steelseries/rival650-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/rival650-hid.js +209 -0
- package/dist/drivers/steelseries/rival650-hid.js.map +1 -0
- package/dist/drivers/steelseries/sensei-ten-hid.d.ts +62 -0
- package/dist/drivers/steelseries/sensei-ten-hid.d.ts.map +1 -0
- package/dist/drivers/steelseries/sensei-ten-hid.js +186 -0
- package/dist/drivers/steelseries/sensei-ten-hid.js.map +1 -0
- package/dist/drivers/teevolution/hid.d.ts +82 -0
- package/dist/drivers/teevolution/hid.d.ts.map +1 -0
- package/dist/drivers/teevolution/hid.js +607 -0
- package/dist/drivers/teevolution/hid.js.map +1 -0
- package/dist/drivers/vendors.d.ts +254 -0
- package/dist/drivers/vendors.d.ts.map +1 -0
- package/dist/drivers/vendors.js +587 -0
- package/dist/drivers/vendors.js.map +1 -0
- package/dist/drivers/vgn/hid.d.ts +33 -0
- package/dist/drivers/vgn/hid.d.ts.map +1 -0
- package/dist/drivers/vgn/hid.js +213 -0
- package/dist/drivers/vgn/hid.js.map +1 -0
- package/dist/drivers/wallhack/keyboard-hid.d.ts +28 -0
- package/dist/drivers/wallhack/keyboard-hid.d.ts.map +1 -0
- package/dist/drivers/wallhack/keyboard-hid.js +80 -0
- package/dist/drivers/wallhack/keyboard-hid.js.map +1 -0
- package/dist/drivers/wallhack/mouse-hid.d.ts +45 -0
- package/dist/drivers/wallhack/mouse-hid.d.ts.map +1 -0
- package/dist/drivers/wallhack/mouse-hid.js +288 -0
- package/dist/drivers/wallhack/mouse-hid.js.map +1 -0
- package/dist/drivers/webhid.d.ts +59 -0
- package/dist/drivers/webhid.d.ts.map +1 -0
- package/dist/drivers/webhid.js +2 -0
- package/dist/drivers/webhid.js.map +1 -0
- package/dist/drivers/wlmouse/hid.d.ts +81 -0
- package/dist/drivers/wlmouse/hid.d.ts.map +1 -0
- package/dist/drivers/wlmouse/hid.js +576 -0
- package/dist/drivers/wlmouse/hid.js.map +1 -0
- package/dist/drivers/wooting/hid.d.ts +86 -0
- package/dist/drivers/wooting/hid.d.ts.map +1 -0
- package/dist/drivers/wooting/hid.js +320 -0
- package/dist/drivers/wooting/hid.js.map +1 -0
- package/dist/drivers/zaunkoenig/hid.d.ts +31 -0
- package/dist/drivers/zaunkoenig/hid.d.ts.map +1 -0
- package/dist/drivers/zaunkoenig/hid.js +162 -0
- package/dist/drivers/zaunkoenig/hid.js.map +1 -0
- package/dist/endgame-gear/op1.d.ts +165 -0
- package/dist/endgame-gear/op1.d.ts.map +1 -0
- package/dist/endgame-gear/op1.js +384 -0
- package/dist/endgame-gear/op1.js.map +1 -0
- package/dist/endgame-gear/wireless.d.ts +93 -0
- package/dist/endgame-gear/wireless.d.ts.map +1 -0
- package/dist/endgame-gear/wireless.js +242 -0
- package/dist/endgame-gear/wireless.js.map +1 -0
- package/dist/fantech/index.d.ts +9 -0
- package/dist/fantech/index.d.ts.map +1 -0
- package/dist/fantech/index.js +11 -0
- package/dist/fantech/index.js.map +1 -0
- package/dist/finalmouse/index.d.ts +41 -0
- package/dist/finalmouse/index.d.ts.map +1 -0
- package/dist/finalmouse/index.js +106 -0
- package/dist/finalmouse/index.js.map +1 -0
- package/dist/gearhub/index.d.ts +210 -0
- package/dist/gearhub/index.d.ts.map +1 -0
- package/dist/gearhub/index.js +282 -0
- package/dist/gearhub/index.js.map +1 -0
- package/dist/glorious/index.d.ts +89 -0
- package/dist/glorious/index.d.ts.map +1 -0
- package/dist/glorious/index.js +236 -0
- package/dist/glorious/index.js.map +1 -0
- package/dist/glorious-classic/index.d.ts +103 -0
- package/dist/glorious-classic/index.d.ts.map +1 -0
- package/dist/glorious-classic/index.js +304 -0
- package/dist/glorious-classic/index.js.map +1 -0
- package/dist/gwolves/index.d.ts +82 -0
- package/dist/gwolves/index.d.ts.map +1 -0
- package/dist/gwolves/index.js +197 -0
- package/dist/gwolves/index.js.map +1 -0
- package/dist/hyperx/index.d.ts +181 -0
- package/dist/hyperx/index.d.ts.map +1 -0
- package/dist/hyperx/index.js +303 -0
- package/dist/hyperx/index.js.map +1 -0
- package/dist/incott/index.d.ts +1067 -0
- package/dist/incott/index.d.ts.map +1 -0
- package/dist/incott/index.js +1482 -0
- package/dist/incott/index.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/keychron/index.d.ts +194 -0
- package/dist/keychron/index.d.ts.map +1 -0
- package/dist/keychron/index.js +341 -0
- package/dist/keychron/index.js.map +1 -0
- package/dist/ksnake/index.d.ts +157 -0
- package/dist/ksnake/index.d.ts.map +1 -0
- package/dist/ksnake/index.js +314 -0
- package/dist/ksnake/index.js.map +1 -0
- package/dist/lamzu/atlantis.d.ts +237 -0
- package/dist/lamzu/atlantis.d.ts.map +1 -0
- package/dist/lamzu/atlantis.js +263 -0
- package/dist/lamzu/atlantis.js.map +1 -0
- package/dist/lamzu/index.d.ts +60 -0
- package/dist/lamzu/index.d.ts.map +1 -0
- package/dist/lamzu/index.js +86 -0
- package/dist/lamzu/index.js.map +1 -0
- package/dist/logitech/controls.d.ts +138 -0
- package/dist/logitech/controls.d.ts.map +1 -0
- package/dist/logitech/controls.js +184 -0
- package/dist/logitech/controls.js.map +1 -0
- package/dist/logitech/friendly-name.d.ts +50 -0
- package/dist/logitech/friendly-name.d.ts.map +1 -0
- package/dist/logitech/friendly-name.js +74 -0
- package/dist/logitech/friendly-name.js.map +1 -0
- package/dist/logitech/haptics.d.ts +97 -0
- package/dist/logitech/haptics.d.ts.map +1 -0
- package/dist/logitech/haptics.js +116 -0
- package/dist/logitech/haptics.js.map +1 -0
- package/dist/logitech/hosts.d.ts +55 -0
- package/dist/logitech/hosts.d.ts.map +1 -0
- package/dist/logitech/hosts.js +80 -0
- package/dist/logitech/hosts.js.map +1 -0
- package/dist/logitech/index.d.ts +127 -0
- package/dist/logitech/index.d.ts.map +1 -0
- package/dist/logitech/index.js +233 -0
- package/dist/logitech/index.js.map +1 -0
- package/dist/logitech/wheel.d.ts +117 -0
- package/dist/logitech/wheel.d.ts.map +1 -0
- package/dist/logitech/wheel.js +133 -0
- package/dist/logitech/wheel.js.map +1 -0
- package/dist/mchose/a5-gen1.d.ts +38 -0
- package/dist/mchose/a5-gen1.d.ts.map +1 -0
- package/dist/mchose/a5-gen1.js +60 -0
- package/dist/mchose/a5-gen1.js.map +1 -0
- package/dist/mchose/buttons.d.ts +66 -0
- package/dist/mchose/buttons.d.ts.map +1 -0
- package/dist/mchose/buttons.js +184 -0
- package/dist/mchose/buttons.js.map +1 -0
- package/dist/mchose/dock.d.ts +77 -0
- package/dist/mchose/dock.d.ts.map +1 -0
- package/dist/mchose/dock.js +133 -0
- package/dist/mchose/dock.js.map +1 -0
- package/dist/mchose/index.d.ts +299 -0
- package/dist/mchose/index.d.ts.map +1 -0
- package/dist/mchose/index.js +429 -0
- package/dist/mchose/index.js.map +1 -0
- package/dist/mchose/v3-buttons.d.ts +64 -0
- package/dist/mchose/v3-buttons.d.ts.map +1 -0
- package/dist/mchose/v3-buttons.js +258 -0
- package/dist/mchose/v3-buttons.js.map +1 -0
- package/dist/mchose/v3.d.ts +380 -0
- package/dist/mchose/v3.d.ts.map +1 -0
- package/dist/mchose/v3.js +608 -0
- package/dist/mchose/v3.js.map +1 -0
- package/dist/microsoft/index.d.ts +19 -0
- package/dist/microsoft/index.d.ts.map +1 -0
- package/dist/microsoft/index.js +22 -0
- package/dist/microsoft/index.js.map +1 -0
- package/dist/moddo/index.d.ts +72 -0
- package/dist/moddo/index.d.ts.map +1 -0
- package/dist/moddo/index.js +147 -0
- package/dist/moddo/index.js.map +1 -0
- package/dist/ninjutso/index.d.ts +74 -0
- package/dist/ninjutso/index.d.ts.map +1 -0
- package/dist/ninjutso/index.js +133 -0
- package/dist/ninjutso/index.js.map +1 -0
- package/dist/orbital/index.d.ts +14 -0
- package/dist/orbital/index.d.ts.map +1 -0
- package/dist/orbital/index.js +19 -0
- package/dist/orbital/index.js.map +1 -0
- package/dist/pulsar/index.d.ts +81 -0
- package/dist/pulsar/index.d.ts.map +1 -0
- package/dist/pulsar/index.js +185 -0
- package/dist/pulsar/index.js.map +1 -0
- package/dist/rawm/index.d.ts +55 -0
- package/dist/rawm/index.d.ts.map +1 -0
- package/dist/rawm/index.js +229 -0
- package/dist/rawm/index.js.map +1 -0
- package/dist/razer/codec.d.ts +504 -0
- package/dist/razer/codec.d.ts.map +1 -0
- package/dist/razer/codec.js +648 -0
- package/dist/razer/codec.js.map +1 -0
- package/dist/razer/devices.d.ts +156 -0
- package/dist/razer/devices.d.ts.map +1 -0
- package/dist/razer/devices.js +540 -0
- package/dist/razer/devices.js.map +1 -0
- package/dist/razer/index.d.ts +2 -0
- package/dist/razer/index.d.ts.map +1 -0
- package/dist/razer/index.js +2 -0
- package/dist/razer/index.js.map +1 -0
- package/dist/razer/v4.d.ts +19 -0
- package/dist/razer/v4.d.ts.map +1 -0
- package/dist/razer/v4.js +51 -0
- package/dist/razer/v4.js.map +1 -0
- package/dist/steelseries/aerox3.d.ts +236 -0
- package/dist/steelseries/aerox3.d.ts.map +1 -0
- package/dist/steelseries/aerox3.js +311 -0
- package/dist/steelseries/aerox3.js.map +1 -0
- package/dist/steelseries/aerox5-wireless.d.ts +300 -0
- package/dist/steelseries/aerox5-wireless.d.ts.map +1 -0
- package/dist/steelseries/aerox5-wireless.js +389 -0
- package/dist/steelseries/aerox5-wireless.js.map +1 -0
- package/dist/steelseries/aerox5.d.ts +228 -0
- package/dist/steelseries/aerox5.d.ts.map +1 -0
- package/dist/steelseries/aerox5.js +294 -0
- package/dist/steelseries/aerox5.js.map +1 -0
- package/dist/steelseries/aerox9-wireless.d.ts +213 -0
- package/dist/steelseries/aerox9-wireless.d.ts.map +1 -0
- package/dist/steelseries/aerox9-wireless.js +305 -0
- package/dist/steelseries/aerox9-wireless.js.map +1 -0
- package/dist/steelseries/devices.d.ts +82 -0
- package/dist/steelseries/devices.d.ts.map +1 -0
- package/dist/steelseries/devices.js +310 -0
- package/dist/steelseries/devices.js.map +1 -0
- package/dist/steelseries/index.d.ts +13 -0
- package/dist/steelseries/index.d.ts.map +1 -0
- package/dist/steelseries/index.js +13 -0
- package/dist/steelseries/index.js.map +1 -0
- package/dist/steelseries/prime-mini-wireless.d.ts +253 -0
- package/dist/steelseries/prime-mini-wireless.d.ts.map +1 -0
- package/dist/steelseries/prime-mini-wireless.js +351 -0
- package/dist/steelseries/prime-mini-wireless.js.map +1 -0
- package/dist/steelseries/prime-plus.d.ts +179 -0
- package/dist/steelseries/prime-plus.d.ts.map +1 -0
- package/dist/steelseries/prime-plus.js +275 -0
- package/dist/steelseries/prime-plus.js.map +1 -0
- package/dist/steelseries/rival3-wireless.d.ts +222 -0
- package/dist/steelseries/rival3-wireless.d.ts.map +1 -0
- package/dist/steelseries/rival3-wireless.js +308 -0
- package/dist/steelseries/rival3-wireless.js.map +1 -0
- package/dist/steelseries/rival3.d.ts +99 -0
- package/dist/steelseries/rival3.d.ts.map +1 -0
- package/dist/steelseries/rival3.js +147 -0
- package/dist/steelseries/rival3.js.map +1 -0
- package/dist/steelseries/rival310.d.ts +230 -0
- package/dist/steelseries/rival310.d.ts.map +1 -0
- package/dist/steelseries/rival310.js +322 -0
- package/dist/steelseries/rival310.js.map +1 -0
- package/dist/steelseries/rival650.d.ts +215 -0
- package/dist/steelseries/rival650.d.ts.map +1 -0
- package/dist/steelseries/rival650.js +284 -0
- package/dist/steelseries/rival650.js.map +1 -0
- package/dist/steelseries/sensei-ten.d.ts +283 -0
- package/dist/steelseries/sensei-ten.d.ts.map +1 -0
- package/dist/steelseries/sensei-ten.js +389 -0
- package/dist/steelseries/sensei-ten.js.map +1 -0
- package/dist/teevolution/index.d.ts +211 -0
- package/dist/teevolution/index.d.ts.map +1 -0
- package/dist/teevolution/index.js +458 -0
- package/dist/teevolution/index.js.map +1 -0
- package/dist/valkyrie/index.d.ts +19 -0
- package/dist/valkyrie/index.d.ts.map +1 -0
- package/dist/valkyrie/index.js +43 -0
- package/dist/valkyrie/index.js.map +1 -0
- package/dist/valkyrie/settings.d.ts +28 -0
- package/dist/valkyrie/settings.d.ts.map +1 -0
- package/dist/valkyrie/settings.js +84 -0
- package/dist/valkyrie/settings.js.map +1 -0
- package/dist/vgn/index.d.ts +59 -0
- package/dist/vgn/index.d.ts.map +1 -0
- package/dist/vgn/index.js +165 -0
- package/dist/vgn/index.js.map +1 -0
- package/dist/wallhack/index.d.ts +165 -0
- package/dist/wallhack/index.d.ts.map +1 -0
- package/dist/wallhack/index.js +226 -0
- package/dist/wallhack/index.js.map +1 -0
- package/dist/wlmouse/index.d.ts +4 -0
- package/dist/wlmouse/index.d.ts.map +1 -0
- package/dist/wlmouse/index.js +7 -0
- package/dist/wlmouse/index.js.map +1 -0
- package/dist/wooting/index.d.ts +225 -0
- package/dist/wooting/index.d.ts.map +1 -0
- package/dist/wooting/index.js +296 -0
- package/dist/wooting/index.js.map +1 -0
- package/dist/zaunkoenig/index.d.ts +49 -0
- package/dist/zaunkoenig/index.d.ts.map +1 -0
- package/dist/zaunkoenig/index.js +127 -0
- package/dist/zaunkoenig/index.js.map +1 -0
- package/package.json +193 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GearHub-V5 codec — the transport-independent half of support for the
|
|
3
|
+
* MicLink/mlzn ODM platform on VID 0x3151 (qmk.top's "GearHub-V5" web tool).
|
|
4
|
+
*
|
|
5
|
+
* This layer knows packet shapes, command ids, the Bit7 checksum, the report-
|
|
6
|
+
* rate table, and the device catalog. It knows nothing about WebHID or the
|
|
7
|
+
* 2.4 GHz relay — that lives in `src/drivers/gearhub/hid.ts`.
|
|
8
|
+
*
|
|
9
|
+
* VID 0x3151 belongs to the ODM, not to any one brand: several unrelated
|
|
10
|
+
* makers ship on it. A GearHub-V5 mouse is identified by the GET_USB_VERSION
|
|
11
|
+
* *device id* (the same key GearHub's own bundle looks its model table up by),
|
|
12
|
+
* never by product id — the receiver's VID:PID is shared. The product id only
|
|
13
|
+
* settles transport (2.4 GHz receiver vs. direct cable).
|
|
14
|
+
*
|
|
15
|
+
* Everything here was read out of GearHub-V5's own JS bundle and confirmed
|
|
16
|
+
* byte for byte on hardware: a Lingbao M5 Pro (PAW3395, device id 2285) and an
|
|
17
|
+
* Attack Shark R2 (PAW3950, device id 1893), both on the 2.4 GHz receiver
|
|
18
|
+
* (0x3151:0x402D), Windows 11.
|
|
19
|
+
*/
|
|
20
|
+
export declare const GEARHUB_VENDOR_ID = 12625;
|
|
21
|
+
export declare const GEARHUB_REPORT_ID = 0;
|
|
22
|
+
export declare const GEARHUB_REPORT_SIZE = 64;
|
|
23
|
+
export declare const GEARHUB_CMD_SIZE = 9;
|
|
24
|
+
/** DPI stages the report layout has room for. */
|
|
25
|
+
export declare const GEARHUB_MAX_DPI_STAGES = 8;
|
|
26
|
+
/**
|
|
27
|
+
* Mouse-class command ids. GearHub groups settings into two 64-byte "option
|
|
28
|
+
* param" blocks that are read whole and written back whole:
|
|
29
|
+
*
|
|
30
|
+
* OPTIONPARAM1 (GET 0xD4 / SET 0x54) — the DPI stage table.
|
|
31
|
+
* OPTIONPARAM0 (GET 0xD3 / SET 0x53) — report rate (byte 9), debounce
|
|
32
|
+
* (byte 10), lift-off / "silent height" (byte 52), sleep, sensitivity.
|
|
33
|
+
*
|
|
34
|
+
* There is no standalone GET/SET report-rate command — an earlier version of
|
|
35
|
+
* this driver used one (0x83 / 0x03) and the firmware silently ignored it.
|
|
36
|
+
*/
|
|
37
|
+
export declare const CMD: {
|
|
38
|
+
readonly GET_FIRMWARE: 128;
|
|
39
|
+
readonly GET_USB_VERSION: 143;
|
|
40
|
+
readonly GET_OPTIONPARAM0: 211;
|
|
41
|
+
readonly SET_OPTIONPARAM0: 83;
|
|
42
|
+
readonly GET_DPI: 212;
|
|
43
|
+
readonly SET_DPI: 84;
|
|
44
|
+
readonly GET_KEYMATRIX: 208;
|
|
45
|
+
readonly SET_KEYMATRIX: 80;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Receiver-level relay commands. Raw — the Bit7 checksum is NOT applied to
|
|
49
|
+
* these. The relay sequencing itself is the driver's job.
|
|
50
|
+
*/
|
|
51
|
+
export declare const DONGLE_CMD: {
|
|
52
|
+
readonly SELECT_TARGET: 246;
|
|
53
|
+
readonly GET_STATUS: 247;
|
|
54
|
+
readonly NOTICE_READ: 252;
|
|
55
|
+
};
|
|
56
|
+
export declare const TARGET_MOUSE = 5;
|
|
57
|
+
/**
|
|
58
|
+
* OPTIONPARAM0 report-rate field (byte 9) encoding, from GearHub's
|
|
59
|
+
* `___utils_reportRateToNum` / `___utils_numToReportRate`. NOT a plain 0..6
|
|
60
|
+
* index — a bitmask-style code. Verified on hardware: an R2 at 1000 Hz read
|
|
61
|
+
* back code 1, and writing code 129 set it to 8000 Hz.
|
|
62
|
+
*/
|
|
63
|
+
export declare const REPORT_RATE_ENCODE: Record<number, number>;
|
|
64
|
+
export declare const REPORT_RATE_DECODE: Record<number, number>;
|
|
65
|
+
/** Every rate the codec can express, ascending. */
|
|
66
|
+
export declare const GEARHUB_RATES: number[];
|
|
67
|
+
/**
|
|
68
|
+
* OPTIONPARAM0 byte offsets (GET reply layout == SET payload layout), from
|
|
69
|
+
* GearHub's `___getMouseOption0` / `___cmdSetMouseOption0`.
|
|
70
|
+
*/
|
|
71
|
+
export declare const OPT0_REPORT_RATE = 9;
|
|
72
|
+
export declare const OPT0_DEBOUNCE = 10;
|
|
73
|
+
/** 16-bit LE flags word. Bit 2 is ripple correction ("wave repair"). */
|
|
74
|
+
export declare const OPT0_FLAGS = 12;
|
|
75
|
+
export declare const OPT0_FLAG_RIPPLE: number;
|
|
76
|
+
/** LE16 idle-before-standby, in seconds. GearHub exposes a per-link timer. */
|
|
77
|
+
export declare const OPT0_SLEEP_BT = 40;
|
|
78
|
+
export declare const OPT0_SLEEP_24G = 44;
|
|
79
|
+
/** Straight-line / angle-snapping correction ("line repair"): 0 or 1. */
|
|
80
|
+
export declare const OPT0_STRAIGHT_CORRECTION = 53;
|
|
81
|
+
/** Lift-off / "silent height": an index into the sensor's lift-off list. */
|
|
82
|
+
export declare const OPT0_SILENT_HEIGHT = 52;
|
|
83
|
+
/** GearHub's Debounce slider runs 1-10 (ms). */
|
|
84
|
+
export declare const GEARHUB_DEBOUNCE_MAX_MS = 10;
|
|
85
|
+
/**
|
|
86
|
+
* Standby-time stops offered to the UI, in seconds; 0 = never sleep. GearHub
|
|
87
|
+
* itself takes a free-form seconds value — this is the discrete set the
|
|
88
|
+
* OpenMouse sleep card renders, chosen to cover the useful range.
|
|
89
|
+
*/
|
|
90
|
+
export declare const GEARHUB_SLEEP_OPTIONS: number[];
|
|
91
|
+
/** DPI table (OPTIONPARAM1) byte offsets, confirmed on hardware:
|
|
92
|
+
* [2] active stage index, [3] stage count,
|
|
93
|
+
* [8 + i*2] X as LE uint16, [24 + i*2] Y as LE uint16,
|
|
94
|
+
* [40 + i*3] that stage's indicator colour as r, g, b. */
|
|
95
|
+
export declare const DPI_X_OFFSET = 8;
|
|
96
|
+
export declare const DPI_Y_OFFSET = 24;
|
|
97
|
+
export declare const DPI_RGB_OFFSET = 40;
|
|
98
|
+
export type LiftOffLevel = "Low" | "Medium" | "High";
|
|
99
|
+
/**
|
|
100
|
+
* Lift-off stops per sensor, ordered by the OPTIONPARAM0 byte-52 index
|
|
101
|
+
* (ascending height). Derived from GearHub's `getLiftOffDistance()`:
|
|
102
|
+
* PAW3950/3955 offer 0.7 / 1 / 2 mm; PAW3395 offers 1 / 2 mm.
|
|
103
|
+
*/
|
|
104
|
+
export declare const GEARHUB_LIFT_OFF_LEVELS: Record<string, readonly LiftOffLevel[]>;
|
|
105
|
+
/**
|
|
106
|
+
* The GET_KEYMATRIX reply is 14 slots of 4 bytes. These are the slots that map
|
|
107
|
+
* to a physical R2 button, in the order OpenMouse shows them. Verified on
|
|
108
|
+
* hardware: slots 0-4 hold Left/Right/Middle/Back/Forward by default, slot 5
|
|
109
|
+
* holds DPI Loop (the bottom DPI button).
|
|
110
|
+
*/
|
|
111
|
+
export interface GearHubButton {
|
|
112
|
+
/** Name shown in the remapper. */
|
|
113
|
+
name: string;
|
|
114
|
+
/** Slot index into the keymatrix (also the SET_KEYMATRIX button arg). */
|
|
115
|
+
slot: number;
|
|
116
|
+
}
|
|
117
|
+
export declare const GEARHUB_BUTTONS: readonly GearHubButton[];
|
|
118
|
+
/**
|
|
119
|
+
* Assignable actions, label → 4-byte matrix value, from GearHub's `ia` table.
|
|
120
|
+
* Mouse functions only (no keyboard keys, combos or macros — OpenMouse's
|
|
121
|
+
* generic remapper is a single-choice dropdown). Left…Forward and DPI Loop
|
|
122
|
+
* were confirmed on hardware; DPI ± come straight from the bundle.
|
|
123
|
+
*/
|
|
124
|
+
export declare const GEARHUB_BUTTON_ACTIONS: ReadonlyArray<readonly [string, readonly [number, number, number, number]]>;
|
|
125
|
+
/** Decode a 4-byte slot to an action label; "Custom" for anything else
|
|
126
|
+
* (a keyboard key / macro set in GearHub — left untouched). */
|
|
127
|
+
export declare function decodeButtonAction(bytes: readonly number[]): string;
|
|
128
|
+
/** Encode an action label to its 4-byte slot value, or null if unknown. */
|
|
129
|
+
export declare function encodeButtonAction(label: string): readonly [number, number, number, number] | null;
|
|
130
|
+
/** Pad to 9 bytes and stamp the Bit7 checksum into byte 7. */
|
|
131
|
+
export declare function encodeCommand(bytes: readonly number[]): Uint8Array;
|
|
132
|
+
/** What a product id settles on its own: how the mouse is reached. */
|
|
133
|
+
export interface GearHubTransport {
|
|
134
|
+
transport: "dongle" | "direct";
|
|
135
|
+
/** Polling ceiling this link imposes regardless of the sensor. */
|
|
136
|
+
wiredPollingCeilingHz?: number;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Product ids on VID 0x3151 for this family, and the only thing the id itself
|
|
140
|
+
* settles: transport. The M5 Pro presents the 2.4 GHz receiver (0x402D) and,
|
|
141
|
+
* by cable, the mouse directly (0x4026).
|
|
142
|
+
*
|
|
143
|
+
* Bluetooth is a third mode not listed here: over BLE the device enumerates on
|
|
144
|
+
* a different usage page entirely (0xFF35/0xFF66) and GearHub drives it through
|
|
145
|
+
* a separate read path this driver does not implement.
|
|
146
|
+
*/
|
|
147
|
+
export declare const GEARHUB_PRODUCTS: ReadonlyMap<number, GearHubTransport>;
|
|
148
|
+
/**
|
|
149
|
+
* Per-model identity, keyed by the GET_USB_VERSION device id. The receiver's
|
|
150
|
+
* VID:PID is shared across GearHub-V5 mice, so it cannot carry any of this —
|
|
151
|
+
* only the device id can. `brand` names the maker that ships this id.
|
|
152
|
+
*/
|
|
153
|
+
export interface GearHubProfile {
|
|
154
|
+
deviceId: number;
|
|
155
|
+
brand: "Lingbao" | "Attack Shark" | "GearHub";
|
|
156
|
+
model: string;
|
|
157
|
+
sensor: string;
|
|
158
|
+
maxPollingHz: number;
|
|
159
|
+
minDpi: number;
|
|
160
|
+
maxDpi: number;
|
|
161
|
+
dpiStep: number;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* The M5 Pro receiver is an 8K part — GearHub flags 0x402D `reportRate: 8e3`
|
|
165
|
+
* and the mouse answered code 0 (8000 Hz) live. Lingbao's own base-M5-Pro
|
|
166
|
+
* sheet says 1000 Hz, so either it undersells the receiver or the bundle
|
|
167
|
+
* varies; this follows the hardware. Wired mode is capped to 1000 Hz by the
|
|
168
|
+
* `GEARHUB_PRODUCTS` entry, not here.
|
|
169
|
+
*/
|
|
170
|
+
export declare const LINGBAO_M5_PRO_PROFILE: GearHubProfile;
|
|
171
|
+
/**
|
|
172
|
+
* Attack Shark R2. Same GearHub-V5 platform and VID:PID as the M5 Pro,
|
|
173
|
+
* distinguished only by device id 1893 (Attack Shark's own web driver shows it
|
|
174
|
+
* as `ID1893_v201`). Verified on retail hardware, both over the 2.4 GHz
|
|
175
|
+
* receiver and by cable (PID 0x4026): identity, firmware v2.01, the
|
|
176
|
+
* six-stage DPI table (top stage ~42000), 8000 Hz polling, DPI / lift-off /
|
|
177
|
+
* debounce / correction / sleep read + write, and 6-button remapping.
|
|
178
|
+
*
|
|
179
|
+
* qmk.top's catalog carries three R2 device ids: 1893 and 3009 on the
|
|
180
|
+
* original 0x40xx MCU (PID 0x4026 / 0x402D), and 3016 on the newer 0x50xx
|
|
181
|
+
* MCU (PID 0x5043). 1893 and 3009 share this profile; 3016 is not handled
|
|
182
|
+
* here - its PID is not in GEARHUB_PRODUCTS and it is most likely the
|
|
183
|
+
* individual-command firmware this block-protocol driver cannot drive.
|
|
184
|
+
*/
|
|
185
|
+
export declare const ATTACK_SHARK_R2_PROFILE: GearHubProfile;
|
|
186
|
+
/**
|
|
187
|
+
* Attack Shark R3. Same GearHub-V5 platform, VID:PID and block protocol as
|
|
188
|
+
* the R2. qmk.top's catalog carries it under four device ids: 1643 and 3485
|
|
189
|
+
* with the PixArt PAW3395 (26000 DPI), 3309 and 3310 with the PAW3950
|
|
190
|
+
* (42000 DPI). Device id 1643 confirmed from a user diagnostic - firmware
|
|
191
|
+
* v3.00, on 0x3151:0x402D, every relay read (D3/D4/D0/8F/80) answering and
|
|
192
|
+
* a full status; it was falling back to the M5 Pro name only. The other
|
|
193
|
+
* three ids are catalog-derived.
|
|
194
|
+
*/
|
|
195
|
+
export declare const ATTACK_SHARK_R3_PROFILE: GearHubProfile;
|
|
196
|
+
/** The PixArt PAW3950 R3 revision (device ids 3309 / 3310, catalog-derived). */
|
|
197
|
+
export declare const ATTACK_SHARK_R3_3950_PROFILE: GearHubProfile;
|
|
198
|
+
export declare const GEARHUB_DEVICE_PROFILES: ReadonlyMap<number, GearHubProfile>;
|
|
199
|
+
/**
|
|
200
|
+
* Identity for a GearHub-V5 device this driver reached but could not name:
|
|
201
|
+
* GET_USB_VERSION failed, or it answered a device id not in the catalog.
|
|
202
|
+
* Deliberately generic - naming a concrete model here (it used to borrow the
|
|
203
|
+
* M5 Pro's) is a guess that is wrong for every sibling that is not an M5 Pro.
|
|
204
|
+
* The DPI/polling bounds are the platform ceilings so a real device's range
|
|
205
|
+
* is never clamped; the live DPI stages still come from the device's table.
|
|
206
|
+
*/
|
|
207
|
+
export declare const GEARHUB_FALLBACK_PROFILE: GearHubProfile;
|
|
208
|
+
/** Resolve a device id to its profile, or the fallback. */
|
|
209
|
+
export declare function gearHubProfileFor(deviceId: number | null | undefined): GearHubProfile;
|
|
210
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gearhub/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GearHub-V5 codec — the transport-independent half of support for the
|
|
3
|
+
* MicLink/mlzn ODM platform on VID 0x3151 (qmk.top's "GearHub-V5" web tool).
|
|
4
|
+
*
|
|
5
|
+
* This layer knows packet shapes, command ids, the Bit7 checksum, the report-
|
|
6
|
+
* rate table, and the device catalog. It knows nothing about WebHID or the
|
|
7
|
+
* 2.4 GHz relay — that lives in `src/drivers/gearhub/hid.ts`.
|
|
8
|
+
*
|
|
9
|
+
* VID 0x3151 belongs to the ODM, not to any one brand: several unrelated
|
|
10
|
+
* makers ship on it. A GearHub-V5 mouse is identified by the GET_USB_VERSION
|
|
11
|
+
* *device id* (the same key GearHub's own bundle looks its model table up by),
|
|
12
|
+
* never by product id — the receiver's VID:PID is shared. The product id only
|
|
13
|
+
* settles transport (2.4 GHz receiver vs. direct cable).
|
|
14
|
+
*
|
|
15
|
+
* Everything here was read out of GearHub-V5's own JS bundle and confirmed
|
|
16
|
+
* byte for byte on hardware: a Lingbao M5 Pro (PAW3395, device id 2285) and an
|
|
17
|
+
* Attack Shark R2 (PAW3950, device id 1893), both on the 2.4 GHz receiver
|
|
18
|
+
* (0x3151:0x402D), Windows 11.
|
|
19
|
+
*/
|
|
20
|
+
export const GEARHUB_VENDOR_ID = 0x3151;
|
|
21
|
+
export const GEARHUB_REPORT_ID = 0x00;
|
|
22
|
+
export const GEARHUB_REPORT_SIZE = 64;
|
|
23
|
+
export const GEARHUB_CMD_SIZE = 9;
|
|
24
|
+
/** DPI stages the report layout has room for. */
|
|
25
|
+
export const GEARHUB_MAX_DPI_STAGES = 8;
|
|
26
|
+
/**
|
|
27
|
+
* Mouse-class command ids. GearHub groups settings into two 64-byte "option
|
|
28
|
+
* param" blocks that are read whole and written back whole:
|
|
29
|
+
*
|
|
30
|
+
* OPTIONPARAM1 (GET 0xD4 / SET 0x54) — the DPI stage table.
|
|
31
|
+
* OPTIONPARAM0 (GET 0xD3 / SET 0x53) — report rate (byte 9), debounce
|
|
32
|
+
* (byte 10), lift-off / "silent height" (byte 52), sleep, sensitivity.
|
|
33
|
+
*
|
|
34
|
+
* There is no standalone GET/SET report-rate command — an earlier version of
|
|
35
|
+
* this driver used one (0x83 / 0x03) and the firmware silently ignored it.
|
|
36
|
+
*/
|
|
37
|
+
export const CMD = {
|
|
38
|
+
GET_FIRMWARE: 0x80,
|
|
39
|
+
GET_USB_VERSION: 0x8f,
|
|
40
|
+
GET_OPTIONPARAM0: 0xd3,
|
|
41
|
+
SET_OPTIONPARAM0: 0x53,
|
|
42
|
+
GET_DPI: 0xd4, // GET_OPTIONPARAM1
|
|
43
|
+
SET_DPI: 0x54, // SET_OPTIONPARAM1
|
|
44
|
+
GET_KEYMATRIX: 0xd0, // [0xD0, profile] -> 14 slots x 4-byte action, in one reply
|
|
45
|
+
SET_KEYMATRIX: 0x50, // [0x50, profile, slot, 0,0,0,0,0, d0,d1,d2,d3] -> one button
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Receiver-level relay commands. Raw — the Bit7 checksum is NOT applied to
|
|
49
|
+
* these. The relay sequencing itself is the driver's job.
|
|
50
|
+
*/
|
|
51
|
+
export const DONGLE_CMD = {
|
|
52
|
+
SELECT_TARGET: 0xf6,
|
|
53
|
+
GET_STATUS: 0xf7,
|
|
54
|
+
NOTICE_READ: 0xfc,
|
|
55
|
+
};
|
|
56
|
+
export const TARGET_MOUSE = 0x05;
|
|
57
|
+
/**
|
|
58
|
+
* OPTIONPARAM0 report-rate field (byte 9) encoding, from GearHub's
|
|
59
|
+
* `___utils_reportRateToNum` / `___utils_numToReportRate`. NOT a plain 0..6
|
|
60
|
+
* index — a bitmask-style code. Verified on hardware: an R2 at 1000 Hz read
|
|
61
|
+
* back code 1, and writing code 129 set it to 8000 Hz.
|
|
62
|
+
*/
|
|
63
|
+
export const REPORT_RATE_ENCODE = {
|
|
64
|
+
8000: 129,
|
|
65
|
+
4000: 130,
|
|
66
|
+
2000: 132,
|
|
67
|
+
1000: 1,
|
|
68
|
+
500: 2,
|
|
69
|
+
250: 4,
|
|
70
|
+
125: 8,
|
|
71
|
+
};
|
|
72
|
+
export const REPORT_RATE_DECODE = Object.fromEntries(Object.entries(REPORT_RATE_ENCODE).map(([hz, code]) => [code, Number(hz)]));
|
|
73
|
+
/** Every rate the codec can express, ascending. */
|
|
74
|
+
export const GEARHUB_RATES = Object.keys(REPORT_RATE_ENCODE)
|
|
75
|
+
.map(Number)
|
|
76
|
+
.sort((a, b) => a - b);
|
|
77
|
+
/**
|
|
78
|
+
* OPTIONPARAM0 byte offsets (GET reply layout == SET payload layout), from
|
|
79
|
+
* GearHub's `___getMouseOption0` / `___cmdSetMouseOption0`.
|
|
80
|
+
*/
|
|
81
|
+
export const OPT0_REPORT_RATE = 9;
|
|
82
|
+
export const OPT0_DEBOUNCE = 10;
|
|
83
|
+
/** 16-bit LE flags word. Bit 2 is ripple correction ("wave repair"). */
|
|
84
|
+
export const OPT0_FLAGS = 12;
|
|
85
|
+
export const OPT0_FLAG_RIPPLE = 1 << 2;
|
|
86
|
+
/** LE16 idle-before-standby, in seconds. GearHub exposes a per-link timer. */
|
|
87
|
+
export const OPT0_SLEEP_BT = 40;
|
|
88
|
+
export const OPT0_SLEEP_24G = 44;
|
|
89
|
+
/** Straight-line / angle-snapping correction ("line repair"): 0 or 1. */
|
|
90
|
+
export const OPT0_STRAIGHT_CORRECTION = 53;
|
|
91
|
+
/** Lift-off / "silent height": an index into the sensor's lift-off list. */
|
|
92
|
+
export const OPT0_SILENT_HEIGHT = 52;
|
|
93
|
+
/** GearHub's Debounce slider runs 1-10 (ms). */
|
|
94
|
+
export const GEARHUB_DEBOUNCE_MAX_MS = 10;
|
|
95
|
+
/**
|
|
96
|
+
* Standby-time stops offered to the UI, in seconds; 0 = never sleep. GearHub
|
|
97
|
+
* itself takes a free-form seconds value — this is the discrete set the
|
|
98
|
+
* OpenMouse sleep card renders, chosen to cover the useful range.
|
|
99
|
+
*/
|
|
100
|
+
export const GEARHUB_SLEEP_OPTIONS = [0, 15, 30, 60, 120, 300];
|
|
101
|
+
/** DPI table (OPTIONPARAM1) byte offsets, confirmed on hardware:
|
|
102
|
+
* [2] active stage index, [3] stage count,
|
|
103
|
+
* [8 + i*2] X as LE uint16, [24 + i*2] Y as LE uint16,
|
|
104
|
+
* [40 + i*3] that stage's indicator colour as r, g, b. */
|
|
105
|
+
export const DPI_X_OFFSET = 8;
|
|
106
|
+
export const DPI_Y_OFFSET = 24;
|
|
107
|
+
export const DPI_RGB_OFFSET = 40;
|
|
108
|
+
/**
|
|
109
|
+
* Lift-off stops per sensor, ordered by the OPTIONPARAM0 byte-52 index
|
|
110
|
+
* (ascending height). Derived from GearHub's `getLiftOffDistance()`:
|
|
111
|
+
* PAW3950/3955 offer 0.7 / 1 / 2 mm; PAW3395 offers 1 / 2 mm.
|
|
112
|
+
*/
|
|
113
|
+
export const GEARHUB_LIFT_OFF_LEVELS = {
|
|
114
|
+
"PixArt PAW3950": ["Low", "Medium", "High"],
|
|
115
|
+
"PixArt PAW3955": ["Low", "Medium", "High"],
|
|
116
|
+
"PixArt PAW3395": ["Low", "High"],
|
|
117
|
+
// Unidentified GearHub-V5 device: offer the common three stops. The
|
|
118
|
+
// firmware clamps the index if its sensor only has two.
|
|
119
|
+
"PixArt (GearHub-V5)": ["Low", "Medium", "High"],
|
|
120
|
+
};
|
|
121
|
+
export const GEARHUB_BUTTONS = [
|
|
122
|
+
{ name: "Left", slot: 0 },
|
|
123
|
+
{ name: "Right", slot: 1 },
|
|
124
|
+
{ name: "Middle", slot: 2 },
|
|
125
|
+
{ name: "Back", slot: 3 },
|
|
126
|
+
{ name: "Forward", slot: 4 },
|
|
127
|
+
{ name: "DPI", slot: 5 },
|
|
128
|
+
];
|
|
129
|
+
/**
|
|
130
|
+
* Assignable actions, label → 4-byte matrix value, from GearHub's `ia` table.
|
|
131
|
+
* Mouse functions only (no keyboard keys, combos or macros — OpenMouse's
|
|
132
|
+
* generic remapper is a single-choice dropdown). Left…Forward and DPI Loop
|
|
133
|
+
* were confirmed on hardware; DPI ± come straight from the bundle.
|
|
134
|
+
*/
|
|
135
|
+
export const GEARHUB_BUTTON_ACTIONS = [
|
|
136
|
+
["Left Click", [1, 0, 0xf0, 0]],
|
|
137
|
+
["Right Click", [1, 0, 0xf1, 0]],
|
|
138
|
+
["Middle Click", [1, 0, 0xf2, 0]],
|
|
139
|
+
["Back", [1, 0, 0xf3, 0]],
|
|
140
|
+
["Forward", [1, 0, 0xf4, 0]],
|
|
141
|
+
["DPI Loop", [20, 0, 0, 0]],
|
|
142
|
+
["DPI +", [20, 0, 1, 0]],
|
|
143
|
+
["DPI -", [0, 2, 0, 20]],
|
|
144
|
+
["Disabled", [0, 0, 0, 0]],
|
|
145
|
+
];
|
|
146
|
+
/** Decode a 4-byte slot to an action label; "Custom" for anything else
|
|
147
|
+
* (a keyboard key / macro set in GearHub — left untouched). */
|
|
148
|
+
export function decodeButtonAction(bytes) {
|
|
149
|
+
for (const [label, value] of GEARHUB_BUTTON_ACTIONS) {
|
|
150
|
+
if (value.every((b, i) => b === bytes[i]))
|
|
151
|
+
return label;
|
|
152
|
+
}
|
|
153
|
+
return "Custom";
|
|
154
|
+
}
|
|
155
|
+
/** Encode an action label to its 4-byte slot value, or null if unknown. */
|
|
156
|
+
export function encodeButtonAction(label) {
|
|
157
|
+
return GEARHUB_BUTTON_ACTIONS.find(([l]) => l === label)?.[1] ?? null;
|
|
158
|
+
}
|
|
159
|
+
/** Pad to 9 bytes and stamp the Bit7 checksum into byte 7. */
|
|
160
|
+
export function encodeCommand(bytes) {
|
|
161
|
+
const out = new Uint8Array(Math.max(GEARHUB_CMD_SIZE, bytes.length));
|
|
162
|
+
out.set(bytes);
|
|
163
|
+
let sum = 0;
|
|
164
|
+
for (let i = 0; i < 7; i++)
|
|
165
|
+
sum = (sum + out[i]) & 0xff;
|
|
166
|
+
out[7] = (255 - sum) & 0xff;
|
|
167
|
+
return out;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Product ids on VID 0x3151 for this family, and the only thing the id itself
|
|
171
|
+
* settles: transport. The M5 Pro presents the 2.4 GHz receiver (0x402D) and,
|
|
172
|
+
* by cable, the mouse directly (0x4026).
|
|
173
|
+
*
|
|
174
|
+
* Bluetooth is a third mode not listed here: over BLE the device enumerates on
|
|
175
|
+
* a different usage page entirely (0xFF35/0xFF66) and GearHub drives it through
|
|
176
|
+
* a separate read path this driver does not implement.
|
|
177
|
+
*/
|
|
178
|
+
export const GEARHUB_PRODUCTS = new Map([
|
|
179
|
+
[0x402d, { transport: "dongle" }],
|
|
180
|
+
[0x4026, { transport: "direct", wiredPollingCeilingHz: 1000 }],
|
|
181
|
+
]);
|
|
182
|
+
/**
|
|
183
|
+
* The M5 Pro receiver is an 8K part — GearHub flags 0x402D `reportRate: 8e3`
|
|
184
|
+
* and the mouse answered code 0 (8000 Hz) live. Lingbao's own base-M5-Pro
|
|
185
|
+
* sheet says 1000 Hz, so either it undersells the receiver or the bundle
|
|
186
|
+
* varies; this follows the hardware. Wired mode is capped to 1000 Hz by the
|
|
187
|
+
* `GEARHUB_PRODUCTS` entry, not here.
|
|
188
|
+
*/
|
|
189
|
+
export const LINGBAO_M5_PRO_PROFILE = {
|
|
190
|
+
deviceId: 2285,
|
|
191
|
+
brand: "Lingbao",
|
|
192
|
+
model: "M5 Pro",
|
|
193
|
+
sensor: "PixArt PAW3395",
|
|
194
|
+
maxPollingHz: 8000,
|
|
195
|
+
minDpi: 50,
|
|
196
|
+
maxDpi: 26000,
|
|
197
|
+
dpiStep: 50,
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Attack Shark R2. Same GearHub-V5 platform and VID:PID as the M5 Pro,
|
|
201
|
+
* distinguished only by device id 1893 (Attack Shark's own web driver shows it
|
|
202
|
+
* as `ID1893_v201`). Verified on retail hardware, both over the 2.4 GHz
|
|
203
|
+
* receiver and by cable (PID 0x4026): identity, firmware v2.01, the
|
|
204
|
+
* six-stage DPI table (top stage ~42000), 8000 Hz polling, DPI / lift-off /
|
|
205
|
+
* debounce / correction / sleep read + write, and 6-button remapping.
|
|
206
|
+
*
|
|
207
|
+
* qmk.top's catalog carries three R2 device ids: 1893 and 3009 on the
|
|
208
|
+
* original 0x40xx MCU (PID 0x4026 / 0x402D), and 3016 on the newer 0x50xx
|
|
209
|
+
* MCU (PID 0x5043). 1893 and 3009 share this profile; 3016 is not handled
|
|
210
|
+
* here - its PID is not in GEARHUB_PRODUCTS and it is most likely the
|
|
211
|
+
* individual-command firmware this block-protocol driver cannot drive.
|
|
212
|
+
*/
|
|
213
|
+
export const ATTACK_SHARK_R2_PROFILE = {
|
|
214
|
+
deviceId: 1893,
|
|
215
|
+
brand: "Attack Shark",
|
|
216
|
+
model: "R2",
|
|
217
|
+
sensor: "PixArt PAW3950",
|
|
218
|
+
maxPollingHz: 8000,
|
|
219
|
+
minDpi: 50,
|
|
220
|
+
maxDpi: 42000,
|
|
221
|
+
dpiStep: 50,
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* Attack Shark R3. Same GearHub-V5 platform, VID:PID and block protocol as
|
|
225
|
+
* the R2. qmk.top's catalog carries it under four device ids: 1643 and 3485
|
|
226
|
+
* with the PixArt PAW3395 (26000 DPI), 3309 and 3310 with the PAW3950
|
|
227
|
+
* (42000 DPI). Device id 1643 confirmed from a user diagnostic - firmware
|
|
228
|
+
* v3.00, on 0x3151:0x402D, every relay read (D3/D4/D0/8F/80) answering and
|
|
229
|
+
* a full status; it was falling back to the M5 Pro name only. The other
|
|
230
|
+
* three ids are catalog-derived.
|
|
231
|
+
*/
|
|
232
|
+
export const ATTACK_SHARK_R3_PROFILE = {
|
|
233
|
+
deviceId: 1643,
|
|
234
|
+
brand: "Attack Shark",
|
|
235
|
+
model: "R3",
|
|
236
|
+
sensor: "PixArt PAW3395",
|
|
237
|
+
maxPollingHz: 8000,
|
|
238
|
+
minDpi: 50,
|
|
239
|
+
maxDpi: 26000,
|
|
240
|
+
dpiStep: 50,
|
|
241
|
+
};
|
|
242
|
+
/** The PixArt PAW3950 R3 revision (device ids 3309 / 3310, catalog-derived). */
|
|
243
|
+
export const ATTACK_SHARK_R3_3950_PROFILE = {
|
|
244
|
+
...ATTACK_SHARK_R3_PROFILE,
|
|
245
|
+
deviceId: 3309,
|
|
246
|
+
sensor: "PixArt PAW3950",
|
|
247
|
+
maxDpi: 42000,
|
|
248
|
+
};
|
|
249
|
+
export const GEARHUB_DEVICE_PROFILES = new Map([
|
|
250
|
+
[LINGBAO_M5_PRO_PROFILE.deviceId, LINGBAO_M5_PRO_PROFILE],
|
|
251
|
+
[ATTACK_SHARK_R2_PROFILE.deviceId, ATTACK_SHARK_R2_PROFILE],
|
|
252
|
+
// A later R2 firmware batch on the same 0x40xx silicon, PID and PAW3950
|
|
253
|
+
// sensor as 1893. Block protocol assumed identical; not hardware-verified.
|
|
254
|
+
[3009, ATTACK_SHARK_R2_PROFILE],
|
|
255
|
+
[ATTACK_SHARK_R3_PROFILE.deviceId, ATTACK_SHARK_R3_PROFILE],
|
|
256
|
+
[3485, ATTACK_SHARK_R3_PROFILE],
|
|
257
|
+
[ATTACK_SHARK_R3_3950_PROFILE.deviceId, ATTACK_SHARK_R3_3950_PROFILE],
|
|
258
|
+
[3310, ATTACK_SHARK_R3_3950_PROFILE],
|
|
259
|
+
]);
|
|
260
|
+
/**
|
|
261
|
+
* Identity for a GearHub-V5 device this driver reached but could not name:
|
|
262
|
+
* GET_USB_VERSION failed, or it answered a device id not in the catalog.
|
|
263
|
+
* Deliberately generic - naming a concrete model here (it used to borrow the
|
|
264
|
+
* M5 Pro's) is a guess that is wrong for every sibling that is not an M5 Pro.
|
|
265
|
+
* The DPI/polling bounds are the platform ceilings so a real device's range
|
|
266
|
+
* is never clamped; the live DPI stages still come from the device's table.
|
|
267
|
+
*/
|
|
268
|
+
export const GEARHUB_FALLBACK_PROFILE = {
|
|
269
|
+
deviceId: 0,
|
|
270
|
+
brand: "GearHub",
|
|
271
|
+
model: "V5 mouse",
|
|
272
|
+
sensor: "PixArt (GearHub-V5)",
|
|
273
|
+
maxPollingHz: 8000,
|
|
274
|
+
minDpi: 50,
|
|
275
|
+
maxDpi: 42000,
|
|
276
|
+
dpiStep: 50,
|
|
277
|
+
};
|
|
278
|
+
/** Resolve a device id to its profile, or the fallback. */
|
|
279
|
+
export function gearHubProfileFor(deviceId) {
|
|
280
|
+
return (deviceId != null && GEARHUB_DEVICE_PROFILES.get(deviceId)) || GEARHUB_FALLBACK_PROFILE;
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gearhub/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure encoding rules of the Glorious Model O 2 / I 2 family (Pixart firmware,
|
|
3
|
+
* VID 0x093a). The configuration interface is write-only: the firmware accepts
|
|
4
|
+
* a 256-byte settings payload assembled from four 64-byte feature reports
|
|
5
|
+
* (report ID 0x03) on USB interface 1, but never echoes settings back.
|
|
6
|
+
* Reverse-engineered layout: https://github.com/zeppybabe/gloriousctl-linux.
|
|
7
|
+
*/
|
|
8
|
+
export declare const GLORIOUS_CONFIG_REPORT_ID = 3;
|
|
9
|
+
export declare const GLORIOUS_PACKET_LENGTH = 64;
|
|
10
|
+
export declare const GLORIOUS_DPI_UNIT = 50;
|
|
11
|
+
export declare const GLORIOUS_DPI_MIN = 100;
|
|
12
|
+
export declare const GLORIOUS_DPI_MAX = 26000;
|
|
13
|
+
/** Payload byte [9]: 0x01(1k), 0x02(125), 0x03(250), 0x04(500). */
|
|
14
|
+
export declare const GLORIOUS_POLLING_RATES: ReadonlyArray<readonly [code: number, hertz: number]>;
|
|
15
|
+
/** Payload byte [7]: 0x01 (1 mm) or 0x02 (2 mm); 0.7 mm is not exposed. */
|
|
16
|
+
export declare const GLORIOUS_LOD_MEDIUM_MM = 1;
|
|
17
|
+
export declare const GLORIOUS_LOD_HIGH_MM = 2;
|
|
18
|
+
/** Payload byte [8]: debounce in milliseconds, even numbers, 0x00-0x10. */
|
|
19
|
+
export declare const GLORIOUS_DEBOUNCE_MAX_MS = 16;
|
|
20
|
+
export declare const GLORIOUS_MAX_STAGES = 6;
|
|
21
|
+
/** Lighting payload (cmd 02 fb) RGB effect ids ([5]). */
|
|
22
|
+
export declare const GLORIOUS_RGB_EFFECTS: {
|
|
23
|
+
readonly off: 0;
|
|
24
|
+
readonly glorious: 1;
|
|
25
|
+
readonly seamlessBreathing: 2;
|
|
26
|
+
readonly breathing: 3;
|
|
27
|
+
readonly normallyOn: 4;
|
|
28
|
+
readonly breathingSingle: 5;
|
|
29
|
+
readonly tail: 6;
|
|
30
|
+
readonly rave: 7;
|
|
31
|
+
readonly wave: 8;
|
|
32
|
+
};
|
|
33
|
+
export type GloriousRgbEffectId = keyof typeof GLORIOUS_RGB_EFFECTS;
|
|
34
|
+
export declare const GLORIOUS_EFFECT_OPTIONS: ReadonlyArray<readonly [id: GloriousRgbEffectId, label: string]>;
|
|
35
|
+
/** Brightness ([6]/[7]) and speed ([9]) map onto five/four CORE levels. */
|
|
36
|
+
export declare const GLORIOUS_BRIGHTNESS_LEVELS: ReadonlyArray<number>;
|
|
37
|
+
export declare const GLORIOUS_SPEED_LEVELS: ReadonlyArray<number>;
|
|
38
|
+
export interface GloriousLighting {
|
|
39
|
+
/** One of GLORIOUS_RGB_EFFECTS values. */
|
|
40
|
+
effect: number;
|
|
41
|
+
brightnessWired: number;
|
|
42
|
+
brightnessWireless: number;
|
|
43
|
+
speed: number;
|
|
44
|
+
/** "#rrggbb" strings: [0] primary plus up to six cycle colors. */
|
|
45
|
+
colors: string[];
|
|
46
|
+
}
|
|
47
|
+
export declare const GLORIOUS_DEFAULT_LIGHTING: GloriousLighting;
|
|
48
|
+
/** Number of palette slots an effect consumes ([8]): solid 1, rave 2, rainbow 7. */
|
|
49
|
+
export declare function gloriousLightingColorCount(effect: number): number;
|
|
50
|
+
/**
|
|
51
|
+
* Builds the three 64-byte feature-report fragments of the lighting payload:
|
|
52
|
+
* fragment 0 carries effect, wireless/wired brightness, color count, speed,
|
|
53
|
+
* modifier, and the primary color; fragment 1 echoes the effect and holds the
|
|
54
|
+
* six-cycle palette; fragment 2 echoes the effect again.
|
|
55
|
+
*/
|
|
56
|
+
export declare function buildGloriousLightingPayload(lighting: GloriousLighting): Uint8Array<ArrayBuffer>[];
|
|
57
|
+
/** Repairs untrusted persisted lighting state into a payload-safe object. */
|
|
58
|
+
export declare function gloriousNormalizeLighting(value: unknown): GloriousLighting;
|
|
59
|
+
export interface GloriousSettings {
|
|
60
|
+
/** Zero-indexed active DPI stage ([5]). */
|
|
61
|
+
activeStage: number;
|
|
62
|
+
/** Enabled stages, 4-6 ([6]). */
|
|
63
|
+
stageCount: number;
|
|
64
|
+
/** Six DPI stage values; unused stages stay at 0. */
|
|
65
|
+
stageDpis: number[];
|
|
66
|
+
/** "#rrggbb" LED color shown while the DPI button cycles through a stage. */
|
|
67
|
+
stageColors: string[];
|
|
68
|
+
lodMm: number;
|
|
69
|
+
debounceMs: number;
|
|
70
|
+
pollingCode: number;
|
|
71
|
+
}
|
|
72
|
+
/** Factory per-stage indicator colors (red, blue, green, yellow), then unset. */
|
|
73
|
+
export declare const GLORIOUS_DEFAULT_STAGE_COLORS: ReadonlyArray<string>;
|
|
74
|
+
export declare const GLORIOUS_DEFAULT_SETTINGS: GloriousSettings;
|
|
75
|
+
export declare function gloriousEncodeDpi(dpi: number): number;
|
|
76
|
+
export declare function gloriousIsSupportedDpi(dpi: number): boolean;
|
|
77
|
+
export declare function gloriousEncodePolling(hertz: number): number | null;
|
|
78
|
+
export declare function gloriousDecodePolling(code: number): number | null;
|
|
79
|
+
export declare function gloriousSanitizeDebounce(milliseconds: number): number;
|
|
80
|
+
/**
|
|
81
|
+
* Builds the four 64-byte feature-report fragments of the settings payload:
|
|
82
|
+
* header (report ID 0x03, cmd 04 fb, sequence, pad 0x01), then the global
|
|
83
|
+
* bytes ([5] active stage, [6] total stages, [7] LOD, [8] debounce, [9]
|
|
84
|
+
* polling) followed by little-endian DPI u16 divided by 50 plus RGB per stage.
|
|
85
|
+
*/
|
|
86
|
+
export declare function buildGloriousSettingsPayload(settings: GloriousSettings): Uint8Array<ArrayBuffer>[];
|
|
87
|
+
/** Repairs untrusted persisted state into a payload-safe settings object. */
|
|
88
|
+
export declare function gloriousNormalizeSettings(value: unknown): GloriousSettings;
|
|
89
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/glorious/index.ts"],"names":[],"mappings":"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"}
|