@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,608 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCHOSE's **second** mouse protocol — the one the A7 V3 generation speaks.
|
|
3
|
+
*
|
|
4
|
+
* Read out of the same M HUB bundle as the A7 V2 codec in `./index.ts`, which
|
|
5
|
+
* carries two complete mouse UIs side by side: an older one driving the V2
|
|
6
|
+
* models and a newer one driving everything in {@link MCHOSE_V3_PRODUCTS}.
|
|
7
|
+
* They share a vendor id and even a usage page, and share nothing else.
|
|
8
|
+
*
|
|
9
|
+
* | | A7 V2 (`./index.ts`) | A7 V3 (this file) |
|
|
10
|
+
* | --- | --- | --- |
|
|
11
|
+
* | transport | feature reports `0x11` / `0x12` | **output report `0x4d`**, replies on the input report |
|
|
12
|
+
* | encoding | every body byte inverted (XOR `0xff`) | plain bytes, XOR checksum |
|
|
13
|
+
* | commands | one byte | **two bytes, little-endian** |
|
|
14
|
+
* | settings | one 64-byte blob (`0x67`) | several focused commands |
|
|
15
|
+
*
|
|
16
|
+
* The framing is a 64-byte frame whose first byte is both the `'M'` magic and
|
|
17
|
+
* the HID report id, so the body that actually goes out over
|
|
18
|
+
* `sendReport(0x4d, body)` is the remaining 63 bytes — which is what every
|
|
19
|
+
* function here encodes and decodes:
|
|
20
|
+
*
|
|
21
|
+
* ```
|
|
22
|
+
* frame[0] = 0x4d report id, not part of the body
|
|
23
|
+
* body[0] = 0x01 protocol version
|
|
24
|
+
* body[1] = flags 1 when a trailing checksum is present
|
|
25
|
+
* body[2] = data length
|
|
26
|
+
* body[3] = command low byte
|
|
27
|
+
* body[4] = command high byte
|
|
28
|
+
* body[5] = business code
|
|
29
|
+
* body[6] = sequence
|
|
30
|
+
* body[7…] = data, then the checksum at body[7 + length]
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* The checksum is an XOR of `body[1]` through `body[6 + length]`.
|
|
34
|
+
*
|
|
35
|
+
* The **decoders** are confirmed against a real A7 V3 Ultra+; the framing that
|
|
36
|
+
* carries them is therefore confirmed too, since the mouse answered these
|
|
37
|
+
* frames. The **encoders below them have never been sent to a device.** Every
|
|
38
|
+
* write in this protocol replaces a whole block, so each one takes a structure
|
|
39
|
+
* a caller has just read back rather than a set of changes — see the Writes
|
|
40
|
+
* section and docs/mchose-protocol.md.
|
|
41
|
+
*/
|
|
42
|
+
/** Output report the whole V3 command set rides on; also the `'M'` magic. */
|
|
43
|
+
export const MCHOSE_V3_REPORT_ID = 0x4d;
|
|
44
|
+
/** Full frame including the report id. The body sent over WebHID is one less. */
|
|
45
|
+
export const MCHOSE_V3_FRAME_LENGTH = 64;
|
|
46
|
+
export const MCHOSE_V3_BODY_LENGTH = MCHOSE_V3_FRAME_LENGTH - 1;
|
|
47
|
+
/**
|
|
48
|
+
* The V3 config channel sits on the **same collection as the V2's** — the
|
|
49
|
+
* vendor's own WebHID filters ask for `0xff01`/`0x0001` for both generations.
|
|
50
|
+
* Spelled out rather than imported from `./index.ts` to keep the two codecs
|
|
51
|
+
* free of a circular import; they are the same numbers because the hardware
|
|
52
|
+
* uses the same numbers, not because one derives from the other.
|
|
53
|
+
*/
|
|
54
|
+
export const MCHOSE_V3_USAGE_PAGE = 0xff01;
|
|
55
|
+
export const MCHOSE_V3_USAGE = 0x0001;
|
|
56
|
+
const VERSION_OFFSET = 0;
|
|
57
|
+
const FLAGS_OFFSET = 1;
|
|
58
|
+
const LENGTH_OFFSET = 2;
|
|
59
|
+
const COMMAND_LOW_OFFSET = 3;
|
|
60
|
+
const COMMAND_HIGH_OFFSET = 4;
|
|
61
|
+
const BIZ_CODE_OFFSET = 5;
|
|
62
|
+
const SEQUENCE_OFFSET = 6;
|
|
63
|
+
const DATA_OFFSET = 7;
|
|
64
|
+
const PROTOCOL_VERSION = 0x01;
|
|
65
|
+
const FLAG_CHECKSUM = 0x01;
|
|
66
|
+
/**
|
|
67
|
+
* Command ids, little-endian in the frame. The `0x00xx` block is settings and
|
|
68
|
+
* the `0x09xx` block is device-level; a write is its read plus `0x0100`.
|
|
69
|
+
*/
|
|
70
|
+
export const MCHOSE_V3_COMMAND = {
|
|
71
|
+
/** Button assignments for one profile: `[profileIndex, 0, buttonCount]`. */
|
|
72
|
+
readButtons: 0x0001,
|
|
73
|
+
/** Profile, DPI/rate indices, sleep, sensor flags, debounce: `[]`. */
|
|
74
|
+
readSettings: 0x0002,
|
|
75
|
+
/** DPI stage table for one axis: `[profileIndex, axis]`. */
|
|
76
|
+
readDpi: 0x0003,
|
|
77
|
+
/** Lift-off index, on models that keep it outside the sensor byte. */
|
|
78
|
+
readLiftOff: 0x0009,
|
|
79
|
+
/** Identity and power: vendor/product id, charge state, battery. */
|
|
80
|
+
readDeviceInfo: 0x0900,
|
|
81
|
+
/** Firmware version, returned as a hex string the vendor trims. */
|
|
82
|
+
readVersion: 0x0901,
|
|
83
|
+
/** Macro storage, read 22 bytes at a time. */
|
|
84
|
+
readMacro: 0x090c,
|
|
85
|
+
writeButtons: 0x0101,
|
|
86
|
+
writeSettings: 0x0102,
|
|
87
|
+
writeDpi: 0x0103,
|
|
88
|
+
/** One stage without rewriting the table: `[profile, stage, axis, dpi u16]`. */
|
|
89
|
+
writeSingleDpi: 0x0104,
|
|
90
|
+
/** Factory reset, whole device or one profile. */
|
|
91
|
+
reset: 0x0105,
|
|
92
|
+
writeLiftOff: 0x0109,
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Physical buttons, in the fixed order the button commands walk them. Matches
|
|
96
|
+
* the V2 vocabulary in `./buttons.ts` apart from the vendor's own spelling.
|
|
97
|
+
*/
|
|
98
|
+
export const MCHOSE_V3_BUTTONS = ["Left", "Right", "Middle", "Forward", "Back", "DPI"];
|
|
99
|
+
/** XOR of `body[from]` through `body[to]`, inclusive. */
|
|
100
|
+
function checksum(body, from, to) {
|
|
101
|
+
let value = 0;
|
|
102
|
+
for (let index = from; index <= to; index += 1)
|
|
103
|
+
value ^= body[index] ?? 0;
|
|
104
|
+
return value & 0xff;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Build the 63-byte body for `sendReport(MCHOSE_V3_REPORT_ID, body)`.
|
|
108
|
+
*
|
|
109
|
+
* Throws rather than silently truncating: a command whose data does not fit
|
|
110
|
+
* would otherwise go out with a valid checksum over the wrong bytes.
|
|
111
|
+
*/
|
|
112
|
+
export function mchoseV3Encode(command, data = [], options = {}) {
|
|
113
|
+
const flags = options.flags ?? FLAG_CHECKSUM;
|
|
114
|
+
// The checksum needs a byte of its own past the data.
|
|
115
|
+
if (DATA_OFFSET + data.length + 1 > MCHOSE_V3_BODY_LENGTH) {
|
|
116
|
+
throw new RangeError(`mchoseV3Encode: ${data.length} data bytes do not fit in a frame`);
|
|
117
|
+
}
|
|
118
|
+
const body = new Uint8Array(MCHOSE_V3_BODY_LENGTH);
|
|
119
|
+
body[VERSION_OFFSET] = PROTOCOL_VERSION;
|
|
120
|
+
body[FLAGS_OFFSET] = flags & 0xff;
|
|
121
|
+
body[LENGTH_OFFSET] = data.length & 0xff;
|
|
122
|
+
body[COMMAND_LOW_OFFSET] = command & 0xff;
|
|
123
|
+
body[COMMAND_HIGH_OFFSET] = (command >> 8) & 0xff;
|
|
124
|
+
body[BIZ_CODE_OFFSET] = (options.bizCode ?? 0) & 0xff;
|
|
125
|
+
body[SEQUENCE_OFFSET] = (options.sequence ?? 0) & 0xff;
|
|
126
|
+
for (let index = 0; index < data.length; index += 1) {
|
|
127
|
+
body[DATA_OFFSET + index] = data[index] & 0xff;
|
|
128
|
+
}
|
|
129
|
+
if (flags === FLAG_CHECKSUM) {
|
|
130
|
+
body[DATA_OFFSET + data.length] = checksum(body, FLAGS_OFFSET, SEQUENCE_OFFSET + data.length);
|
|
131
|
+
}
|
|
132
|
+
return body;
|
|
133
|
+
}
|
|
134
|
+
/** Command id carried by a reply body, or null if it is too short to hold one. */
|
|
135
|
+
export function mchoseV3ReplyCommand(body) {
|
|
136
|
+
if (body.length <= COMMAND_HIGH_OFFSET)
|
|
137
|
+
return null;
|
|
138
|
+
return (body[COMMAND_LOW_OFFSET] | (body[COMMAND_HIGH_OFFSET] << 8)) & 0xffff;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Data slice of a reply, or null when the frame is malformed or answers a
|
|
142
|
+
* different command.
|
|
143
|
+
*
|
|
144
|
+
* The vendor's own reader trusts the command id alone and never checks the
|
|
145
|
+
* checksum. This does check it, but only when the reply claims to carry one:
|
|
146
|
+
* a reply with other flags is accepted on its command id, the way M HUB
|
|
147
|
+
* accepts it.
|
|
148
|
+
*/
|
|
149
|
+
export function mchoseV3Payload(body, command) {
|
|
150
|
+
if (mchoseV3ReplyCommand(body) !== command)
|
|
151
|
+
return null;
|
|
152
|
+
const length = body[LENGTH_OFFSET] ?? 0;
|
|
153
|
+
if (DATA_OFFSET + length > body.length)
|
|
154
|
+
return null;
|
|
155
|
+
if ((body[FLAGS_OFFSET] ?? 0) === FLAG_CHECKSUM) {
|
|
156
|
+
const expected = checksum(body, FLAGS_OFFSET, SEQUENCE_OFFSET + length);
|
|
157
|
+
if (body[DATA_OFFSET + length] !== expected)
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return body.slice(DATA_OFFSET, DATA_OFFSET + length);
|
|
161
|
+
}
|
|
162
|
+
const u16 = (data, offset) => (data[offset] ?? 0) | ((data[offset + 1] ?? 0) << 8);
|
|
163
|
+
/** `0x0900` — identity and power. This is how a model is resolved. */
|
|
164
|
+
export function mchoseV3DecodeDeviceInfo(data) {
|
|
165
|
+
if (data.length < 14)
|
|
166
|
+
return null;
|
|
167
|
+
return {
|
|
168
|
+
vendorId: u16(data, 0),
|
|
169
|
+
productId: u16(data, 2),
|
|
170
|
+
profileCount: data[4],
|
|
171
|
+
macroSaveType: data[5],
|
|
172
|
+
shareMacroDataSize: u16(data, 6),
|
|
173
|
+
macroUnitSize: u16(data, 8),
|
|
174
|
+
connectStatus: data[10],
|
|
175
|
+
chargeStatus: data[11],
|
|
176
|
+
batteryPercent: data[12],
|
|
177
|
+
gameMode: data[13],
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* The firmware's polling table has a slot M HUB never offers, so a stored rate
|
|
182
|
+
* index is not an index into the model's rate list. The vendor maps around it
|
|
183
|
+
* in both directions; these two are those maps.
|
|
184
|
+
*
|
|
185
|
+
* Device slot 1 is the hidden one — it reads back as option 1 but is never
|
|
186
|
+
* written, which is what makes the pair asymmetric.
|
|
187
|
+
*/
|
|
188
|
+
export function mchoseV3RateIndexToOption(deviceIndex) {
|
|
189
|
+
return deviceIndex > 1 ? deviceIndex - 1 : deviceIndex;
|
|
190
|
+
}
|
|
191
|
+
export function mchoseV3OptionToRateIndex(optionIndex) {
|
|
192
|
+
return optionIndex > 0 ? optionIndex + 1 : optionIndex;
|
|
193
|
+
}
|
|
194
|
+
/** `0x0002` — the settings the V2 kept in its one big config blob. */
|
|
195
|
+
export function mchoseV3DecodeSettings(data) {
|
|
196
|
+
if (data.length < 9)
|
|
197
|
+
return null;
|
|
198
|
+
const wired = data[1];
|
|
199
|
+
const wireless = data[2];
|
|
200
|
+
return {
|
|
201
|
+
profileIndex: data[0],
|
|
202
|
+
dpiIndex: wired & 0x0f,
|
|
203
|
+
wiredRateIndex: mchoseV3RateIndexToOption((wired >> 4) & 0x0f),
|
|
204
|
+
wirelessRateIndex: mchoseV3RateIndexToOption((wireless >> 4) & 0x0f),
|
|
205
|
+
sleep: data[3],
|
|
206
|
+
sleepMode: data[4] & 1,
|
|
207
|
+
sensor: data[5],
|
|
208
|
+
angleTuning: (data[6] << 24) >> 24,
|
|
209
|
+
leftDebounceMs: data[7],
|
|
210
|
+
rightDebounceMs: data[8],
|
|
211
|
+
extra: [...data.slice(9)],
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Encode the settings block back. Every field is required because the command
|
|
216
|
+
* replaces the whole block — there is no read-modify-write on the device side,
|
|
217
|
+
* so a caller must pass a freshly read {@link MchoseV3Settings} with its edits
|
|
218
|
+
* applied rather than a partial object.
|
|
219
|
+
*/
|
|
220
|
+
export function mchoseV3EncodeSettings(settings) {
|
|
221
|
+
const wired = ((mchoseV3OptionToRateIndex(settings.wiredRateIndex) & 0x0f) << 4)
|
|
222
|
+
| (settings.dpiIndex & 0x0f);
|
|
223
|
+
const wireless = ((mchoseV3OptionToRateIndex(settings.wirelessRateIndex) & 0x0f) << 4)
|
|
224
|
+
| (settings.dpiIndex & 0x0f);
|
|
225
|
+
return [
|
|
226
|
+
settings.profileIndex & 0xff,
|
|
227
|
+
wired,
|
|
228
|
+
wireless,
|
|
229
|
+
settings.sleep & 0xff,
|
|
230
|
+
settings.sleepMode & 0xff,
|
|
231
|
+
settings.sensor & 0xff,
|
|
232
|
+
settings.angleTuning & 0xff,
|
|
233
|
+
settings.leftDebounceMs & 0xff,
|
|
234
|
+
settings.rightDebounceMs & 0xff,
|
|
235
|
+
// Whatever the mouse had here goes straight back. Ten zeros only when a
|
|
236
|
+
// caller built settings from nothing, which matches M HUB's own padding.
|
|
237
|
+
...(settings.extra.length ? settings.extra.map((byte) => byte & 0xff)
|
|
238
|
+
: new Array(SETTINGS_EXTRA_BYTES).fill(0)),
|
|
239
|
+
];
|
|
240
|
+
}
|
|
241
|
+
/** Bytes past the nine named settings fields, as M HUB pads them. */
|
|
242
|
+
const SETTINGS_EXTRA_BYTES = 10;
|
|
243
|
+
/**
|
|
244
|
+
* Sensor byte layout — **note that it is not the V2's**. The V2 puts lift-off
|
|
245
|
+
* in bits 0-1 and the performance mode in bits 6-7; this generation swaps
|
|
246
|
+
* them, and adds a glass-surface flag on the top bit. Getting the two mixed up
|
|
247
|
+
* reads a lift-off level as a power mode.
|
|
248
|
+
*/
|
|
249
|
+
export const MCHOSE_V3_SENSOR_MODE_MASK = 0x03;
|
|
250
|
+
export const MCHOSE_V3_SENSOR_RIPPLE = 0x04;
|
|
251
|
+
export const MCHOSE_V3_SENSOR_LINEAR = 0x08;
|
|
252
|
+
export const MCHOSE_V3_SENSOR_MOTION_SYNC = 0x10;
|
|
253
|
+
export const MCHOSE_V3_SENSOR_LOD_MASK = 0x60;
|
|
254
|
+
export const MCHOSE_V3_SENSOR_LOD_SHIFT = 5;
|
|
255
|
+
export const MCHOSE_V3_SENSOR_GLASS = 0x80;
|
|
256
|
+
export function mchoseV3DecodeSensor(sensor) {
|
|
257
|
+
return {
|
|
258
|
+
liftOffIndex: (sensor & MCHOSE_V3_SENSOR_LOD_MASK) >> MCHOSE_V3_SENSOR_LOD_SHIFT,
|
|
259
|
+
rippleControl: (sensor & MCHOSE_V3_SENSOR_RIPPLE) !== 0,
|
|
260
|
+
angleSnapping: (sensor & MCHOSE_V3_SENSOR_LINEAR) !== 0,
|
|
261
|
+
motionSync: (sensor & MCHOSE_V3_SENSOR_MOTION_SYNC) !== 0,
|
|
262
|
+
glassMode: (sensor & MCHOSE_V3_SENSOR_GLASS) !== 0,
|
|
263
|
+
modeIndex: sensor & MCHOSE_V3_SENSOR_MODE_MASK,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/** Same three-way choice the V2 offers, in the same order. */
|
|
267
|
+
export const MCHOSE_V3_MODES = ["Performance", "eSports", "Ultra"];
|
|
268
|
+
export const MCHOSE_V3_DPI_STAGES = 6;
|
|
269
|
+
/** `0x0003` — one axis of the DPI table. */
|
|
270
|
+
export function mchoseV3DecodeDpi(data) {
|
|
271
|
+
if (data.length < 5 + MCHOSE_V3_DPI_STAGES * 2)
|
|
272
|
+
return null;
|
|
273
|
+
const stages = [];
|
|
274
|
+
for (let stage = 0; stage < MCHOSE_V3_DPI_STAGES; stage += 1) {
|
|
275
|
+
stages.push(u16(data, 5 + stage * 2));
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
profileIndex: data[0],
|
|
279
|
+
axis: data[1],
|
|
280
|
+
stageCount: data[2],
|
|
281
|
+
activeStage: data[3],
|
|
282
|
+
hasSeparateY: data[4] === 1,
|
|
283
|
+
stages,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/** `0x0009` — lift-off on the models that moved it out of the sensor byte. */
|
|
287
|
+
export function mchoseV3DecodeLiftOff(data) {
|
|
288
|
+
if (data.length < 1)
|
|
289
|
+
return null;
|
|
290
|
+
return data[0];
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Button action types are **not** the A7 V2's numbering; the vocabulary and
|
|
294
|
+
* the width of each value live in `./v3-buttons.ts`, which this file
|
|
295
|
+
* re-exports at the bottom.
|
|
296
|
+
*/
|
|
297
|
+
/** Value byte counts by type; anything unlisted carries two. */
|
|
298
|
+
const BUTTON_VALUE_WIDTH = {
|
|
299
|
+
0x01: 3,
|
|
300
|
+
0x22: 3,
|
|
301
|
+
0x23: 7,
|
|
302
|
+
0x24: 7,
|
|
303
|
+
};
|
|
304
|
+
/** Types whose value bytes are already in order rather than little-endian. */
|
|
305
|
+
const BUTTON_BIG_ENDIAN_TYPES = new Set([0x13, 0x16]);
|
|
306
|
+
/**
|
|
307
|
+
* `0x0001` — the button table, which is a variable-width walk rather than a
|
|
308
|
+
* fixed record: each entry's width depends on the type byte in front of it.
|
|
309
|
+
*
|
|
310
|
+
* Returns null if the walk would run past the payload, so a short or stale
|
|
311
|
+
* reply is rejected instead of yielding half a table.
|
|
312
|
+
*/
|
|
313
|
+
export function mchoseV3DecodeButtons(data) {
|
|
314
|
+
const result = {};
|
|
315
|
+
let offset = 0;
|
|
316
|
+
for (const name of MCHOSE_V3_BUTTONS) {
|
|
317
|
+
if (offset >= data.length)
|
|
318
|
+
return null;
|
|
319
|
+
const type = data[offset];
|
|
320
|
+
const width = BUTTON_VALUE_WIDTH[type] ?? 2;
|
|
321
|
+
if (offset + 1 + width > data.length)
|
|
322
|
+
return null;
|
|
323
|
+
const raw = Array.from(data.slice(offset + 1, offset + 1 + width));
|
|
324
|
+
result[name] = {
|
|
325
|
+
type,
|
|
326
|
+
value: BUTTON_BIG_ENDIAN_TYPES.has(type) ? raw : raw.reverse(),
|
|
327
|
+
};
|
|
328
|
+
offset += 1 + width;
|
|
329
|
+
}
|
|
330
|
+
return result;
|
|
331
|
+
}
|
|
332
|
+
const LOD_TWO = [1, 2];
|
|
333
|
+
const LOD_THREE = [0.7, 1, 2];
|
|
334
|
+
const LOD_FIVE = [0.7, 0.9, 1.2, 1.4, 1.7];
|
|
335
|
+
/**
|
|
336
|
+
* Every model on this protocol, from the bundle's own table. The A7 V3 family
|
|
337
|
+
* is what this was written for; the rest share the wire format and the same
|
|
338
|
+
* receivers, so leaving them out would mean resolving one of them to the wrong
|
|
339
|
+
* DPI ceiling rather than not claiming it at all.
|
|
340
|
+
*/
|
|
341
|
+
export const MCHOSE_V3_PRODUCTS = [
|
|
342
|
+
{ name: "A5 V3 Pro", productId: 0x4035, dpiMax: 26000, liftOffDistances: LOD_TWO, maxPollingRate: 8000, liftOffCommand: false },
|
|
343
|
+
{ name: "A5 V3 Ultra+", productId: 0x4026, dpiMax: 42000, liftOffDistances: LOD_THREE, maxPollingRate: 8000, liftOffCommand: false },
|
|
344
|
+
{ name: "A5 V3 Ultra+ (3955)", productId: 0x4034, dpiMax: 50000, liftOffDistances: LOD_FIVE, maxPollingRate: 8000, liftOffCommand: true },
|
|
345
|
+
{ name: "K7 V2 Pro+", productId: 0x4027, dpiMax: 42000, liftOffDistances: LOD_THREE, maxPollingRate: 8000, liftOffCommand: false },
|
|
346
|
+
{ name: "K7 V2 Ultra+", productId: 0x4028, dpiMax: 50000, liftOffDistances: LOD_FIVE, maxPollingRate: 8000, liftOffCommand: true },
|
|
347
|
+
{ name: "A7 V3", productId: 0x4030, dpiMax: 26000, liftOffDistances: LOD_TWO, maxPollingRate: 8000, liftOffCommand: false },
|
|
348
|
+
{ name: "A7 V3 Pro", productId: 0x4031, dpiMax: 42000, liftOffDistances: LOD_THREE, maxPollingRate: 8000, liftOffCommand: false },
|
|
349
|
+
{ name: "A7 V3 Pro+", productId: 0x4032, dpiMax: 42000, liftOffDistances: LOD_THREE, maxPollingRate: 8000, liftOffCommand: false },
|
|
350
|
+
{ name: "A7 V3 Ultra+", productId: 0x4033, dpiMax: 50000, liftOffDistances: LOD_FIVE, maxPollingRate: 8000, liftOffCommand: true },
|
|
351
|
+
{ name: "K5 Pro", productId: 0x4037, dpiMax: 26000, liftOffDistances: LOD_TWO, maxPollingRate: 8000, liftOffCommand: false },
|
|
352
|
+
{ name: "K5 Ultra", productId: 0x4038, dpiMax: 50000, liftOffDistances: LOD_FIVE, maxPollingRate: 8000, liftOffCommand: true },
|
|
353
|
+
{ name: "R7 Ultra", productId: 0x4036, dpiMax: 50000, liftOffDistances: LOD_FIVE, maxPollingRate: 8000, liftOffCommand: true },
|
|
354
|
+
{ name: "V7", productId: 0x402a, dpiMax: 26000, liftOffDistances: LOD_TWO, maxPollingRate: 1000, liftOffCommand: false },
|
|
355
|
+
{ name: "G3 V3", productId: 0x4029, dpiMax: 12000, liftOffDistances: LOD_TWO, maxPollingRate: 1000, liftOffCommand: false },
|
|
356
|
+
];
|
|
357
|
+
/**
|
|
358
|
+
* Receivers, shared across the whole generation — which is exactly why a model
|
|
359
|
+
* cannot be resolved from the host-facing product id and `0x0900` has to be
|
|
360
|
+
* asked. `receiver1k` serves the two 1000 Hz models.
|
|
361
|
+
*/
|
|
362
|
+
export const MCHOSE_V3_LINK_PRODUCT_IDS = {
|
|
363
|
+
receiver: 0x1014,
|
|
364
|
+
receiver8k: 0x1018,
|
|
365
|
+
receiver1k: 0x1016,
|
|
366
|
+
};
|
|
367
|
+
const V3_LINK_IDS = Object.values(MCHOSE_V3_LINK_PRODUCT_IDS);
|
|
368
|
+
/**
|
|
369
|
+
* Every product id this protocol answers on: the mice over their own cable,
|
|
370
|
+
* plus the receivers. The V2 driver subtracts this set from its own match, so
|
|
371
|
+
* anything added here has to be a V3 device.
|
|
372
|
+
*/
|
|
373
|
+
export const MCHOSE_V3_PRODUCT_IDS = [
|
|
374
|
+
...MCHOSE_V3_PRODUCTS.map((product) => product.productId),
|
|
375
|
+
...V3_LINK_IDS,
|
|
376
|
+
];
|
|
377
|
+
export function mchoseV3IsProductId(productId) {
|
|
378
|
+
return MCHOSE_V3_PRODUCT_IDS.includes(productId);
|
|
379
|
+
}
|
|
380
|
+
/** Rate lists the firmware exposes, keyed by the model's maximum. */
|
|
381
|
+
export const MCHOSE_V3_POLLING_RATES = {
|
|
382
|
+
1000: [125, 500, 1000],
|
|
383
|
+
8000: [125, 500, 1000, 2000, 4000, 8000],
|
|
384
|
+
};
|
|
385
|
+
/**
|
|
386
|
+
* Resolve a model, **preferring the USB product string over the id `0x0900`
|
|
387
|
+
* reports**. An unrecognised device yields null rather than a wrong DPI ceiling.
|
|
388
|
+
*
|
|
389
|
+
* The id ordering is the opposite of the A7 V2's, and deliberately so. On the
|
|
390
|
+
* V2, the id inside the battery reply is decisive because the host-facing id is
|
|
391
|
+
* shared. Here that reasoning does not hold: a capture from a real **A7 V3
|
|
392
|
+
* Ultra+** has `0x0900` reporting `0x4026`, which this table — and MCHOSE's own
|
|
393
|
+
* — lists against the *A5 V3 Ultra+*. Trusting it named the wrong mouse and,
|
|
394
|
+
* through it, handed out a 42,000 DPI ceiling and a three-step lift-off ladder
|
|
395
|
+
* to a 50,000 DPI five-step model.
|
|
396
|
+
*
|
|
397
|
+
* Whatever `0x0900` byte 2 is — a sensor or platform id, shared across shells —
|
|
398
|
+
* it is not a model id. M HUB agrees: every model lookup in the vendor bundle
|
|
399
|
+
* keys off `navigator.device.productName`, never off this field. The id is kept
|
|
400
|
+
* only as a fallback for a device whose product string says nothing useful.
|
|
401
|
+
*/
|
|
402
|
+
export function mchoseV3FindProduct(mouseProductId, productName) {
|
|
403
|
+
const name = productName?.trim().toUpperCase() ?? "";
|
|
404
|
+
if (name) {
|
|
405
|
+
// Longest name first so "A7 V3 Pro+" is not swallowed by "A7 V3 Pro".
|
|
406
|
+
const byName = [...MCHOSE_V3_PRODUCTS]
|
|
407
|
+
.sort((a, b) => b.name.length - a.name.length)
|
|
408
|
+
.find((product) => name.includes(product.name.toUpperCase()));
|
|
409
|
+
if (byName)
|
|
410
|
+
return byName;
|
|
411
|
+
}
|
|
412
|
+
return MCHOSE_V3_PRODUCTS.find((product) => product.productId === mouseProductId) ?? null;
|
|
413
|
+
}
|
|
414
|
+
/** Polling rates available to a model. */
|
|
415
|
+
export function mchoseV3PollingRates(product) {
|
|
416
|
+
return MCHOSE_V3_POLLING_RATES[product.maxPollingRate] ?? MCHOSE_V3_POLLING_RATES[1000];
|
|
417
|
+
}
|
|
418
|
+
/** Lift-off labels, matching the ladder the model actually has. */
|
|
419
|
+
export function mchoseV3LiftOffLabels(product) {
|
|
420
|
+
return product.liftOffDistances.map((mm) => `${mm} mm`);
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Position a lift-off index on the shell's three-stop Low/Medium/High scale.
|
|
424
|
+
*
|
|
425
|
+
* The five-step models do not fit that scale, so this buckets them: the lowest
|
|
426
|
+
* step is Low, the highest is High, everything in between is Medium. The exact
|
|
427
|
+
* millimetre figure is the thing actually worth reporting and it survives in
|
|
428
|
+
* {@link mchoseV3LiftOffLabels}; this is only what the shared status field can
|
|
429
|
+
* carry.
|
|
430
|
+
*/
|
|
431
|
+
export function mchoseV3LiftOffStop(product, index) {
|
|
432
|
+
const steps = product.liftOffDistances.length;
|
|
433
|
+
if (index < 0 || index >= steps)
|
|
434
|
+
return null;
|
|
435
|
+
if (index === 0)
|
|
436
|
+
return "Low";
|
|
437
|
+
if (index === steps - 1)
|
|
438
|
+
return "High";
|
|
439
|
+
return "Medium";
|
|
440
|
+
}
|
|
441
|
+
// ── Writes ───────────────────────────────────────────────────────────────────
|
|
442
|
+
//
|
|
443
|
+
// Every write below replaces a whole block: this protocol has no partial
|
|
444
|
+
// update, so a caller must read, edit the decoded object and send it back.
|
|
445
|
+
// That is why each encoder takes a full structure rather than a set of changes.
|
|
446
|
+
/** DPI bounds. The vendor's own slider starts at 200 and steps in 50s. */
|
|
447
|
+
export const MCHOSE_V3_DPI_MIN = 200;
|
|
448
|
+
export const MCHOSE_V3_DPI_STEP = 50;
|
|
449
|
+
/** The firmware takes 0-20 ms, the same window as the A7 V2's. */
|
|
450
|
+
export const MCHOSE_V3_DEBOUNCE_MAX_MS = 20;
|
|
451
|
+
/** Auto-sleep in minutes, where 0 means never. */
|
|
452
|
+
export const MCHOSE_V3_SLEEP_MAX_MINUTES = 60;
|
|
453
|
+
export const MCHOSE_V3_ANGLE_TUNING_MIN = -30;
|
|
454
|
+
export const MCHOSE_V3_ANGLE_TUNING_MAX = 30;
|
|
455
|
+
function checkRange(name, value, min, max) {
|
|
456
|
+
if (!Number.isInteger(value) || value < min || value > max) {
|
|
457
|
+
throw new RangeError(`${name} must be an integer from ${min} to ${max}.`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Round a DPI to something the firmware stores exactly, and refuse anything
|
|
462
|
+
* outside the model's range rather than clamping — a silently clamped value
|
|
463
|
+
* reads back as a mismatch and looks like a protocol fault.
|
|
464
|
+
*/
|
|
465
|
+
export function mchoseV3RoundDpi(dpi, product) {
|
|
466
|
+
checkRange("DPI", Math.round(dpi), MCHOSE_V3_DPI_MIN, product.dpiMax);
|
|
467
|
+
const rounded = Math.round(dpi / MCHOSE_V3_DPI_STEP) * MCHOSE_V3_DPI_STEP;
|
|
468
|
+
return Math.min(Math.max(rounded, MCHOSE_V3_DPI_MIN), product.dpiMax);
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Validate a settings block before it goes near the wire. The block is written
|
|
472
|
+
* whole, so one bad field would be written alongside eight good ones.
|
|
473
|
+
*/
|
|
474
|
+
export function mchoseV3CheckSettings(settings) {
|
|
475
|
+
checkRange("Profile", settings.profileIndex, 0, 15);
|
|
476
|
+
checkRange("DPI stage", settings.dpiIndex, 0, MCHOSE_V3_DPI_STAGES - 1);
|
|
477
|
+
checkRange("Wired polling", settings.wiredRateIndex, 0, 15);
|
|
478
|
+
checkRange("Wireless polling", settings.wirelessRateIndex, 0, 15);
|
|
479
|
+
checkRange("Sleep", settings.sleep, 0, MCHOSE_V3_SLEEP_MAX_MINUTES);
|
|
480
|
+
checkRange("Left debounce", settings.leftDebounceMs, 0, MCHOSE_V3_DEBOUNCE_MAX_MS);
|
|
481
|
+
checkRange("Right debounce", settings.rightDebounceMs, 0, MCHOSE_V3_DEBOUNCE_MAX_MS);
|
|
482
|
+
checkRange("Angle tuning", settings.angleTuning, MCHOSE_V3_ANGLE_TUNING_MIN, MCHOSE_V3_ANGLE_TUNING_MAX);
|
|
483
|
+
checkRange("Sensor flags", settings.sensor, 0, 0xff);
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Rewrite the sensor byte, changing only the named fields and **preserving
|
|
487
|
+
* every bit this codec does not claim**. The A7 V2 taught this the hard way:
|
|
488
|
+
* its bit 5 was never explained, and assigning the byte rather than masking it
|
|
489
|
+
* would have cleared whatever it meant.
|
|
490
|
+
*/
|
|
491
|
+
export function mchoseV3EncodeSensor(current, changes) {
|
|
492
|
+
let sensor = current & 0xff;
|
|
493
|
+
const set = (mask, on) => {
|
|
494
|
+
sensor = on ? (sensor | mask) : (sensor & ~mask & 0xff);
|
|
495
|
+
};
|
|
496
|
+
if (changes.rippleControl !== undefined)
|
|
497
|
+
set(MCHOSE_V3_SENSOR_RIPPLE, changes.rippleControl);
|
|
498
|
+
if (changes.angleSnapping !== undefined)
|
|
499
|
+
set(MCHOSE_V3_SENSOR_LINEAR, changes.angleSnapping);
|
|
500
|
+
if (changes.motionSync !== undefined)
|
|
501
|
+
set(MCHOSE_V3_SENSOR_MOTION_SYNC, changes.motionSync);
|
|
502
|
+
if (changes.glassMode !== undefined)
|
|
503
|
+
set(MCHOSE_V3_SENSOR_GLASS, changes.glassMode);
|
|
504
|
+
if (changes.modeIndex !== undefined) {
|
|
505
|
+
// Bounded by the field, not by the label table: the mode is two bits and
|
|
506
|
+
// MCHOSE names only three of the four, so a faithful decode of an unknown
|
|
507
|
+
// 0b11 has to survive being written straight back. Picking a *new* mode
|
|
508
|
+
// goes through the name lookup in the driver, which cannot produce a 3.
|
|
509
|
+
checkRange("Mode", changes.modeIndex, 0, MCHOSE_V3_SENSOR_MODE_MASK);
|
|
510
|
+
sensor = (sensor & ~MCHOSE_V3_SENSOR_MODE_MASK & 0xff) | changes.modeIndex;
|
|
511
|
+
}
|
|
512
|
+
if (changes.liftOffIndex !== undefined) {
|
|
513
|
+
// Only the models that keep lift-off here, and only two bits of it.
|
|
514
|
+
checkRange("Lift-off", changes.liftOffIndex, 0, MCHOSE_V3_SENSOR_LOD_MASK >> MCHOSE_V3_SENSOR_LOD_SHIFT);
|
|
515
|
+
sensor = (sensor & ~MCHOSE_V3_SENSOR_LOD_MASK & 0xff)
|
|
516
|
+
| ((changes.liftOffIndex << MCHOSE_V3_SENSOR_LOD_SHIFT) & MCHOSE_V3_SENSOR_LOD_MASK);
|
|
517
|
+
}
|
|
518
|
+
return sensor;
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* `0x0103` — the whole DPI table for one axis. Six stages go out every time,
|
|
522
|
+
* so the untouched ones must be the values just read back.
|
|
523
|
+
*/
|
|
524
|
+
export function mchoseV3EncodeDpiTable(dpi, product) {
|
|
525
|
+
checkRange("Stage count", dpi.stageCount, 1, MCHOSE_V3_DPI_STAGES);
|
|
526
|
+
checkRange("Active stage", dpi.activeStage, 0, dpi.stageCount - 1);
|
|
527
|
+
if (dpi.stages.length !== MCHOSE_V3_DPI_STAGES) {
|
|
528
|
+
throw new RangeError(`The DPI table needs all ${MCHOSE_V3_DPI_STAGES} stages.`);
|
|
529
|
+
}
|
|
530
|
+
const data = [
|
|
531
|
+
dpi.profileIndex & 0xff,
|
|
532
|
+
dpi.axis & 0xff,
|
|
533
|
+
dpi.hasSeparateY ? 1 : 0,
|
|
534
|
+
dpi.stageCount & 0xff,
|
|
535
|
+
dpi.activeStage & 0xff,
|
|
536
|
+
];
|
|
537
|
+
for (const stage of dpi.stages) {
|
|
538
|
+
const value = mchoseV3RoundDpi(stage, product);
|
|
539
|
+
data.push(value & 0xff, (value >> 8) & 0xff);
|
|
540
|
+
}
|
|
541
|
+
return data;
|
|
542
|
+
}
|
|
543
|
+
/** `0x0104` — one stage, without rewriting the table around it. */
|
|
544
|
+
export function mchoseV3EncodeSingleDpi(profileIndex, stage, axis, dpi, product) {
|
|
545
|
+
checkRange("Stage", stage, 0, MCHOSE_V3_DPI_STAGES - 1);
|
|
546
|
+
const value = mchoseV3RoundDpi(dpi, product);
|
|
547
|
+
return [profileIndex & 0xff, stage & 0xff, axis & 0xff, value & 0xff, (value >> 8) & 0xff];
|
|
548
|
+
}
|
|
549
|
+
/** `0x0109` — lift-off on the models that keep it outside the sensor byte. */
|
|
550
|
+
export function mchoseV3EncodeLiftOff(profileIndex, index, product) {
|
|
551
|
+
checkRange("Lift-off", index, 0, product.liftOffDistances.length - 1);
|
|
552
|
+
return [profileIndex & 0xff, index & 0xff];
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* `0x0101` — the button table, written whole in the same variable-width shape
|
|
556
|
+
* it is read in. Every button goes out, so the ones not being changed must be
|
|
557
|
+
* the assignments just read back.
|
|
558
|
+
*/
|
|
559
|
+
export function mchoseV3EncodeButtons(profileIndex, buttons) {
|
|
560
|
+
const data = [profileIndex & 0xff, 0, MCHOSE_V3_BUTTONS.length];
|
|
561
|
+
for (const name of MCHOSE_V3_BUTTONS) {
|
|
562
|
+
const action = buttons[name];
|
|
563
|
+
if (!action)
|
|
564
|
+
throw new Error(`The button table is missing "${name}".`);
|
|
565
|
+
const width = BUTTON_VALUE_WIDTH[action.type] ?? 2;
|
|
566
|
+
if (action.value.length !== width) {
|
|
567
|
+
throw new RangeError(`"${name}": type 0x${action.type.toString(16)} takes ${width} value bytes, not ${action.value.length}.`);
|
|
568
|
+
}
|
|
569
|
+
data.push(action.type & 0xff);
|
|
570
|
+
// Decode reversed all but the two big-endian types, so encoding mirrors it.
|
|
571
|
+
const value = BUTTON_BIG_ENDIAN_TYPES.has(action.type)
|
|
572
|
+
? [...action.value]
|
|
573
|
+
: [...action.value].reverse();
|
|
574
|
+
for (const byte of value)
|
|
575
|
+
data.push(byte & 0xff);
|
|
576
|
+
}
|
|
577
|
+
return data;
|
|
578
|
+
}
|
|
579
|
+
/** Sleep timeouts the panel offers, in seconds; 0 is "never". */
|
|
580
|
+
export const MCHOSE_V3_SLEEP_OPTIONS = [0, 60, 120, 180, 300, 600, 1800];
|
|
581
|
+
export * from "./v3-buttons.js";
|
|
582
|
+
/**
|
|
583
|
+
* A reply the firmware sends to refuse a command outright: command id `0x0000`
|
|
584
|
+
* with the checksum flag clear and `0xff` in the sequence byte. It is not a
|
|
585
|
+
* malformed frame and not noise — an A7 V3 Ultra+ answers `0x0901` with one,
|
|
586
|
+
* about a second after the request, every time.
|
|
587
|
+
*
|
|
588
|
+
* Worth recognising because the alternative is spending the whole retry budget
|
|
589
|
+
* waiting for an answer that has already arrived.
|
|
590
|
+
*/
|
|
591
|
+
export function mchoseV3IsRejection(body) {
|
|
592
|
+
return mchoseV3ReplyCommand(body) === 0x0000
|
|
593
|
+
&& (body[FLAGS_OFFSET] ?? 0) === 0
|
|
594
|
+
&& (body[LENGTH_OFFSET] ?? 0) === 0;
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* A one-byte `0xff` payload, which means "ask again" rather than carrying data.
|
|
598
|
+
* A receiver whose mouse is not currently reachable answers `0x0900` with it.
|
|
599
|
+
*
|
|
600
|
+
* M HUB's own retry helper loops while the first payload byte is `0xff`. This
|
|
601
|
+
* is stricter — it requires the payload to be *only* that byte — because a
|
|
602
|
+
* button table legitimately starts with `0xff` when the first button carries no
|
|
603
|
+
* assignment, and the vendor's looser test would reject that as busy.
|
|
604
|
+
*/
|
|
605
|
+
export function mchoseV3IsBusy(payload) {
|
|
606
|
+
return payload.length === 1 && payload[0] === 0xff;
|
|
607
|
+
}
|
|
608
|
+
//# sourceMappingURL=v3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3.js","sourceRoot":"","sources":["../../src/mchose/v3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const MICROSOFT_VENDOR_ID = 1118;
|
|
2
|
+
export declare const MICROSOFT_PRODUCT_CLASSIC = 2083;
|
|
3
|
+
export declare const MICROSOFT_PRODUCT_PRO = 2090;
|
|
4
|
+
export declare const MICROSOFT_PRODUCTS: ReadonlySet<number>;
|
|
5
|
+
export declare const REPORT_ID_WRITE = 36;
|
|
6
|
+
export declare const REPORT_ID_READ = 39;
|
|
7
|
+
export declare const PROPERTY_DPI_WRITE = 150;
|
|
8
|
+
export declare const PROPERTY_DPI_READ = 151;
|
|
9
|
+
export declare const PROPERTY_COLOR_WRITE = 178;
|
|
10
|
+
export declare const PROPERTY_COLOR_READ = 179;
|
|
11
|
+
export declare const PROPERTY_POLLING_WRITE = 131;
|
|
12
|
+
export declare const PROPERTY_POLLING_READ = 132;
|
|
13
|
+
export declare const PROPERTY_DISTANCE_WRITE = 184;
|
|
14
|
+
export declare const PROPERTY_DISTANCE_READ = 182;
|
|
15
|
+
export declare const MICROSOFT_CLASSIC_USAGE_PAGE = 12;
|
|
16
|
+
export declare const MICROSOFT_CLASSIC_USAGE = 1;
|
|
17
|
+
export declare const MICROSOFT_PRO_USAGE_PAGE = 65287;
|
|
18
|
+
export declare const MICROSOFT_PRO_USAGE = 530;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/microsoft/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,OAAS,CAAC;AAE1C,eAAO,MAAM,yBAAyB,OAAS,CAAC;AAChD,eAAO,MAAM,qBAAqB,OAAS,CAAC;AAE5C,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAGjD,CAAC;AAEH,eAAO,MAAM,eAAe,KAAO,CAAC;AACpC,eAAO,MAAM,cAAc,KAAO,CAAC;AAEnC,eAAO,MAAM,kBAAkB,MAAO,CAAC;AACvC,eAAO,MAAM,iBAAiB,MAAO,CAAC;AAEtC,eAAO,MAAM,oBAAoB,MAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,MAAO,CAAC;AAExC,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAC3C,eAAO,MAAM,qBAAqB,MAAO,CAAC;AAE1C,eAAO,MAAM,uBAAuB,MAAO,CAAC;AAC5C,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAE3C,eAAO,MAAM,4BAA4B,KAAS,CAAC;AACnD,eAAO,MAAM,uBAAuB,IAAS,CAAC;AAC9C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,mBAAmB,MAAS,CAAC"}
|