@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,429 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure MCHOSE codecs, unit-tested without WebHID.
|
|
3
|
+
*
|
|
4
|
+
* Reverse-engineered from MCHOSE's own M HUB web driver and verified against an
|
|
5
|
+
* A7 V2 Ultra+ on its 2.4 GHz receiver; see docs/mchose-protocol.md for the
|
|
6
|
+
* capture notes and the dead ends.
|
|
7
|
+
*
|
|
8
|
+
* Transport: feature reports on the `0xff01` vendor collection. Report `0x11`
|
|
9
|
+
* carries the short (20-byte) command set, report `0x12` the long (64-byte)
|
|
10
|
+
* one. The distinguishing quirk is that **the whole command body is sent
|
|
11
|
+
* bit-inverted, and replies come back inverted too**:
|
|
12
|
+
*
|
|
13
|
+
* sendFeatureReport(0x11, [~cmd, ~arg0, …])
|
|
14
|
+
* receiveFeatureReport(0x11) -> [reportId, ~cmd, ~payload0, …]
|
|
15
|
+
*
|
|
16
|
+
* Only the bytes the vendor actually spells out are inverted; the rest of the
|
|
17
|
+
* report is zero-padded, which is why replies carry unrelated trailing bytes —
|
|
18
|
+
* the firmware leaves stale scratch data past the meaningful fields.
|
|
19
|
+
*/
|
|
20
|
+
export const MCHOSE_VENDOR_ID = 0x3837;
|
|
21
|
+
/** Vendor configuration collection. */
|
|
22
|
+
export const MCHOSE_CONFIG_USAGE_PAGE = 0xff01;
|
|
23
|
+
export const MCHOSE_CONFIG_USAGE = 0x0001;
|
|
24
|
+
/** Short command channel: command + 19 argument bytes. */
|
|
25
|
+
export const MCHOSE_SHORT_REPORT_ID = 0x11;
|
|
26
|
+
export const MCHOSE_SHORT_TOKENS = 20;
|
|
27
|
+
/** Long command channel: command + 63 argument bytes. */
|
|
28
|
+
export const MCHOSE_LONG_REPORT_ID = 0x12;
|
|
29
|
+
export const MCHOSE_LONG_TOKENS = 64;
|
|
30
|
+
export const MCHOSE_REPORT_LENGTH = 64;
|
|
31
|
+
export const MCHOSE_COMMAND = {
|
|
32
|
+
/** Receiver identity: bond flag, ids, link state. */
|
|
33
|
+
identity: 0x03,
|
|
34
|
+
/** Firmware version, as a length-prefixed ASCII string. */
|
|
35
|
+
version: 0x04,
|
|
36
|
+
/** Mouse identity plus battery level and charge state. */
|
|
37
|
+
battery: 0x06,
|
|
38
|
+
/** Whole configuration blob: DPI stages, per-link indices, debounce, sleep. */
|
|
39
|
+
config: 0x67,
|
|
40
|
+
/** Writes the same blob back, one command byte in front of the same layout. */
|
|
41
|
+
writeConfig: 0x57,
|
|
42
|
+
/** Switches the active onboard profile; takes a single 0-based index. */
|
|
43
|
+
setProfile: 0x58,
|
|
44
|
+
/** Reassigns one button: `[buttonIndex, reserved, type, value u24 BE]`. */
|
|
45
|
+
setButton: 0x52,
|
|
46
|
+
/** Reads one button's name, which is where a macro's name lives. */
|
|
47
|
+
readButtonName: 0x63,
|
|
48
|
+
/** Reads one profile's name: `[index]`, replying index + ASCII. */
|
|
49
|
+
readProfileName: 0x68,
|
|
50
|
+
/** Sets the auto-sleep timer: `[enabled, minutes]`. */
|
|
51
|
+
setSleep: 0x0a,
|
|
52
|
+
/**
|
|
53
|
+
* Performance block: `[lod, ripple, line, motionSync, _, _, mode,
|
|
54
|
+
* rotateOpen, rotateVal]`.
|
|
55
|
+
*/
|
|
56
|
+
setPerformance: 0x42,
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* The config blob's `sensor` byte (offset 17) is a bitfield holding lift-off
|
|
60
|
+
* distance *and* the three processing toggles. Every one of these is written
|
|
61
|
+
* through the performance command rather than the config write, and read back
|
|
62
|
+
* out of this byte. Mapped bit by bit on hardware:
|
|
63
|
+
*
|
|
64
|
+
* 0x80 -> 0x90 motion sync on (bit 4)
|
|
65
|
+
* 0x90 -> 0x94 ripple control on (bit 2)
|
|
66
|
+
* 0x94 -> 0x9c linear correction on (bit 3)
|
|
67
|
+
*
|
|
68
|
+
* Bits 6-7 are the performance mode — see `MCHOSE_SENSOR_MODE_MASK` below. An
|
|
69
|
+
* earlier reading of this byte took bit 7 alone to be a boolean "game mode",
|
|
70
|
+
* which is wrong: M HUB offers three modes, and bit 6 is the other half.
|
|
71
|
+
*
|
|
72
|
+
* Lift-off therefore occupies only **bits 0-1**; treating it as three bits
|
|
73
|
+
* would read ripple as part of the level. Bit 5 is still unexplained, so
|
|
74
|
+
* writers must preserve the rest of the byte rather than assign it.
|
|
75
|
+
*/
|
|
76
|
+
export const MCHOSE_LOD_MASK = 0x03;
|
|
77
|
+
export const MCHOSE_SENSOR_RIPPLE = 0x04;
|
|
78
|
+
export const MCHOSE_SENSOR_LINEAR = 0x08;
|
|
79
|
+
export const MCHOSE_SENSOR_MOTION_SYNC = 0x10;
|
|
80
|
+
/**
|
|
81
|
+
* Bits 6-7 hold the **performance mode**, which M HUB presents as a three-way
|
|
82
|
+
* choice rather than a switch. Mapped on hardware by writing each value:
|
|
83
|
+
*
|
|
84
|
+
* field 7 = 1 -> bits 00 -> Performance
|
|
85
|
+
* field 7 = 2 -> bits 10 -> eSports
|
|
86
|
+
* field 7 = 3 -> bits 11 -> Ultra
|
|
87
|
+
*
|
|
88
|
+
* Note the gap: the stored bit pattern is the mode number except for
|
|
89
|
+
* Performance, which stores 0 rather than 1.
|
|
90
|
+
*/
|
|
91
|
+
export const MCHOSE_SENSOR_MODE_MASK = 0xc0;
|
|
92
|
+
export const MCHOSE_MODES = ["Performance", "eSports", "Ultra"];
|
|
93
|
+
/** Decode bits 6-7 into a 1-based mode number. */
|
|
94
|
+
export function mchoseDecodeMode(sensor) {
|
|
95
|
+
const stored = (sensor & MCHOSE_SENSOR_MODE_MASK) >> 6;
|
|
96
|
+
return stored === 0 ? 1 : stored;
|
|
97
|
+
}
|
|
98
|
+
export function mchoseModeName(sensor) {
|
|
99
|
+
return MCHOSE_MODES[mchoseDecodeMode(sensor) - 1] ?? MCHOSE_MODES[0];
|
|
100
|
+
}
|
|
101
|
+
export function mchoseModeNumber(name) {
|
|
102
|
+
const index = MCHOSE_MODES.indexOf(name);
|
|
103
|
+
return index < 0 ? null : index + 1;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Angle tuning, in the config blob at offset 49. M HUB offers -30 to +30
|
|
107
|
+
* degrees; the byte is stored as-is, so negatives are two's complement. The
|
|
108
|
+
* firmware does not validate the value — it stored 0xf1 and 0x8f unchanged —
|
|
109
|
+
* so the range has to be enforced here.
|
|
110
|
+
*
|
|
111
|
+
* M HUB flags this control with "update the mouse firmware", so older firmware
|
|
112
|
+
* may ignore it.
|
|
113
|
+
*/
|
|
114
|
+
export const MCHOSE_ANGLE_TUNING_OFFSET = 49;
|
|
115
|
+
export const MCHOSE_ANGLE_TUNING_MIN = -30;
|
|
116
|
+
export const MCHOSE_ANGLE_TUNING_MAX = 30;
|
|
117
|
+
export function mchoseDecodeAngleTuning(raw) {
|
|
118
|
+
const byte = raw & 0xff;
|
|
119
|
+
return byte > 0x7f ? byte - 0x100 : byte;
|
|
120
|
+
}
|
|
121
|
+
export function mchoseEncodeAngleTuning(degrees) {
|
|
122
|
+
return degrees < 0 ? (degrees + 0x100) & 0xff : degrees & 0xff;
|
|
123
|
+
}
|
|
124
|
+
export function mchoseDecodeLiftOffIndex(sensor) {
|
|
125
|
+
return sensor & MCHOSE_LOD_MASK;
|
|
126
|
+
}
|
|
127
|
+
export function mchoseDecodeProcessing(sensor) {
|
|
128
|
+
return {
|
|
129
|
+
angleSnapping: (sensor & MCHOSE_SENSOR_LINEAR) !== 0,
|
|
130
|
+
rippleControl: (sensor & MCHOSE_SENSOR_RIPPLE) !== 0,
|
|
131
|
+
motionSync: (sensor & MCHOSE_SENSOR_MOTION_SYNC) !== 0,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Ripple, linear correction and motion sync use 1 = on and 2 = off, with 0
|
|
136
|
+
* meaning "leave this one alone".
|
|
137
|
+
*/
|
|
138
|
+
const toggle = (value) => value === undefined ? 0 : value ? 1 : 2;
|
|
139
|
+
/**
|
|
140
|
+
* Build the performance write.
|
|
141
|
+
*
|
|
142
|
+
* Lift-off must be supplied every time, because index 0 is a real level and so
|
|
143
|
+
* cannot double as "unchanged" the way the toggles' 0 does. Pass only the
|
|
144
|
+
* toggles being changed and the rest are left as they are.
|
|
145
|
+
*/
|
|
146
|
+
export function mchoseEncodePerformance(liftOffIndex, changes = {}) {
|
|
147
|
+
if (!Number.isInteger(liftOffIndex) || liftOffIndex < 0 || liftOffIndex > MCHOSE_LOD_MASK) {
|
|
148
|
+
throw new Error(`Lift-off index must be 0-${MCHOSE_LOD_MASK}.`);
|
|
149
|
+
}
|
|
150
|
+
const tuning = changes.angleTuning;
|
|
151
|
+
if (tuning !== undefined
|
|
152
|
+
&& (!Number.isInteger(tuning) || tuning < MCHOSE_ANGLE_TUNING_MIN || tuning > MCHOSE_ANGLE_TUNING_MAX)) {
|
|
153
|
+
throw new Error(`Angle tuning must be ${MCHOSE_ANGLE_TUNING_MIN} to ${MCHOSE_ANGLE_TUNING_MAX} degrees.`);
|
|
154
|
+
}
|
|
155
|
+
const mode = changes.mode;
|
|
156
|
+
if (mode !== undefined && (!Number.isInteger(mode) || mode < 1 || mode > MCHOSE_MODES.length)) {
|
|
157
|
+
throw new Error(`Mode must be 1-${MCHOSE_MODES.length}.`);
|
|
158
|
+
}
|
|
159
|
+
// [command, lod, ripple, line, motionSync, _, _, mode, rotateOpen, rotateVal]
|
|
160
|
+
return [
|
|
161
|
+
MCHOSE_COMMAND.setPerformance,
|
|
162
|
+
liftOffIndex,
|
|
163
|
+
toggle(changes.rippleControl),
|
|
164
|
+
toggle(changes.angleSnapping),
|
|
165
|
+
toggle(changes.motionSync),
|
|
166
|
+
0,
|
|
167
|
+
0,
|
|
168
|
+
mode ?? 0,
|
|
169
|
+
tuning === undefined ? 0 : 1,
|
|
170
|
+
tuning === undefined ? 0 : mchoseEncodeAngleTuning(tuning),
|
|
171
|
+
];
|
|
172
|
+
}
|
|
173
|
+
/** Lift-off on its own, leaving every processing toggle untouched. */
|
|
174
|
+
export function mchoseEncodeLiftOff(index) {
|
|
175
|
+
return mchoseEncodePerformance(index);
|
|
176
|
+
}
|
|
177
|
+
export function mchoseLiftOffLabels(steps) {
|
|
178
|
+
if (steps >= 3)
|
|
179
|
+
return ["Low", "Medium", "High"];
|
|
180
|
+
if (steps === 2)
|
|
181
|
+
return ["Low", "High"];
|
|
182
|
+
return ["Low"];
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Auto-sleep is stored in whole minutes at offset 19 of the config blob, and
|
|
186
|
+
* written with its own command rather than through the config write. Confirmed
|
|
187
|
+
* on hardware: sending `0x0a 01 09` moved that byte from 0 to 9.
|
|
188
|
+
*
|
|
189
|
+
* The device is slower to apply this than a config write — it needs roughly a
|
|
190
|
+
* second before the new value reads back.
|
|
191
|
+
*/
|
|
192
|
+
export const MCHOSE_SLEEP_MAX_MINUTES = 0xff;
|
|
193
|
+
/** Sleep timeouts offered in the UI, in seconds; 0 disables the timer. */
|
|
194
|
+
export const MCHOSE_SLEEP_OPTIONS = [0, 60, 120, 180, 300, 600, 1800];
|
|
195
|
+
/** Longest debounce the firmware accepts, in milliseconds. */
|
|
196
|
+
export const MCHOSE_DEBOUNCE_MAX_MS = 20;
|
|
197
|
+
export function mchoseEncodeSleep(minutes) {
|
|
198
|
+
if (!Number.isInteger(minutes) || minutes < 0 || minutes > MCHOSE_SLEEP_MAX_MINUTES) {
|
|
199
|
+
throw new Error(`Sleep must be 0-${MCHOSE_SLEEP_MAX_MINUTES} minutes.`);
|
|
200
|
+
}
|
|
201
|
+
// The vendor pairs a "sleep enabled" flag with the value; 0 minutes is off.
|
|
202
|
+
return [MCHOSE_COMMAND.setSleep, minutes > 0 ? 1 : 0, minutes];
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Onboard profiles, 0-based on the wire. The mouse holds three, each with its
|
|
206
|
+
* own DPI stage table and its own per-link rate/stage pair — confirmed by
|
|
207
|
+
* switching an A7 V2 Ultra+ through all three and reading each back.
|
|
208
|
+
*
|
|
209
|
+
* `0x67` has no profile argument: it always answers for whichever profile is
|
|
210
|
+
* active, so reading another one means switching to it first.
|
|
211
|
+
*/
|
|
212
|
+
export const MCHOSE_PROFILE_COUNT = 3;
|
|
213
|
+
/** Build the `0x58` payload. `index` is 0-based, as the firmware expects. */
|
|
214
|
+
export function mchoseEncodeSetProfile(index) {
|
|
215
|
+
if (!Number.isInteger(index) || index < 0 || index >= MCHOSE_PROFILE_COUNT) {
|
|
216
|
+
throw new Error(`MCHOSE profile index must be 0-${MCHOSE_PROFILE_COUNT - 1}.`);
|
|
217
|
+
}
|
|
218
|
+
return [MCHOSE_COMMAND.setProfile, index];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Build a feature-report body. `tokens` is the command byte followed by its
|
|
222
|
+
* arguments, exactly as the vendor spells them; everything given is inverted
|
|
223
|
+
* and the remainder of the report stays zero.
|
|
224
|
+
*/
|
|
225
|
+
export function mchoseEncodeCommand(tokens, tokenCount) {
|
|
226
|
+
const body = new Uint8Array(MCHOSE_REPORT_LENGTH);
|
|
227
|
+
const spelled = Math.min(tokenCount, MCHOSE_REPORT_LENGTH);
|
|
228
|
+
for (let index = 0; index < spelled; index += 1) {
|
|
229
|
+
body[index] = ((tokens[index] ?? 0) ^ 0xff) & 0xff;
|
|
230
|
+
}
|
|
231
|
+
return body;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Decode a feature-report read. `raw` is the buffer as returned by
|
|
235
|
+
* `receiveFeatureReport`, whose first byte is the report id.
|
|
236
|
+
*/
|
|
237
|
+
export function mchoseDecodeReply(raw) {
|
|
238
|
+
if (raw.length < 3)
|
|
239
|
+
return null;
|
|
240
|
+
const payload = new Uint8Array(raw.length - 2);
|
|
241
|
+
for (let index = 0; index < payload.length; index += 1) {
|
|
242
|
+
payload[index] = ((raw[index + 2] ?? 0) ^ 0xff) & 0xff;
|
|
243
|
+
}
|
|
244
|
+
return { command: (~(raw[1] ?? 0)) & 0xff, payload };
|
|
245
|
+
}
|
|
246
|
+
const u16 = (data, offset) => (data[offset] ?? 0) | ((data[offset + 1] ?? 0) << 8);
|
|
247
|
+
export function mchoseDecodeIdentity(payload) {
|
|
248
|
+
if (payload.length < 7)
|
|
249
|
+
return null;
|
|
250
|
+
return {
|
|
251
|
+
bonded: (payload[0] ?? 0) !== 0,
|
|
252
|
+
vendorId: u16(payload, 1),
|
|
253
|
+
productId: u16(payload, 3),
|
|
254
|
+
connected: (payload[5] ?? 0) !== 0,
|
|
255
|
+
gameMode: payload[6] ?? 0,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
// ── 0x11 0x04 firmware version ─────────────────────────────────────────────
|
|
259
|
+
/** Length-prefixed ASCII, e.g. `08 "5.46.2.4"`. */
|
|
260
|
+
export function mchoseDecodeVersion(payload) {
|
|
261
|
+
const length = payload[0] ?? 0;
|
|
262
|
+
if (!length || payload.length < 1 + length)
|
|
263
|
+
return null;
|
|
264
|
+
return String.fromCharCode(...payload.subarray(1, 1 + length));
|
|
265
|
+
}
|
|
266
|
+
export function mchoseDecodeBattery(payload) {
|
|
267
|
+
if (payload.length < 11)
|
|
268
|
+
return null;
|
|
269
|
+
// Bit fields are packed most-significant first: 3 bits mode, 1 bit status.
|
|
270
|
+
const flags = payload[8] ?? 0;
|
|
271
|
+
return {
|
|
272
|
+
vendorId: u16(payload, 0),
|
|
273
|
+
productId: u16(payload, 2),
|
|
274
|
+
firmwareVersion: u16(payload, 4) | (u16(payload, 6) << 16),
|
|
275
|
+
connectMode: (flags >> 5) & 0x07,
|
|
276
|
+
connected: ((flags >> 4) & 0x01) !== 0,
|
|
277
|
+
batteryPercent: payload[9] ?? 0,
|
|
278
|
+
charging: (payload[10] ?? 0) !== 0,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
// ── 0x12 0x67 configuration ────────────────────────────────────────────────
|
|
282
|
+
export const MCHOSE_DPI_STAGES = 6;
|
|
283
|
+
/**
|
|
284
|
+
* Note the reserved byte at offset 3: the DPI stages start at offset 4, not
|
|
285
|
+
* immediately after the two index bytes.
|
|
286
|
+
*
|
|
287
|
+
* MCHOSE ships two schemas for this payload and they contradict each other.
|
|
288
|
+
* The layout below is the one the hardware actually uses, confirmed on an
|
|
289
|
+
* A7 V2 Ultra+ by reading it at two known settings:
|
|
290
|
+
*
|
|
291
|
+
* 125 Hz / 1600 DPI -> byte2 0x00 (rate index 0, stage 0)
|
|
292
|
+
* 1000 Hz / 1600 DPI -> byte2 0x20 (rate index 2, stage 0)
|
|
293
|
+
*
|
|
294
|
+
* So the **wired** byte comes first, the **rate** is the high nibble, and the
|
|
295
|
+
* rate is a plain index into the model's rate list with no skipped value. That
|
|
296
|
+
* matches the vendor's write schema; its read schema has both the byte order
|
|
297
|
+
* and the nibble order backwards. Do not "correct" this to match the latter.
|
|
298
|
+
*/
|
|
299
|
+
export function mchoseDecodeConfig(payload) {
|
|
300
|
+
if (payload.length < 4 + MCHOSE_DPI_STAGES * 2)
|
|
301
|
+
return null;
|
|
302
|
+
const wired = payload[1] ?? 0;
|
|
303
|
+
const wireless = payload[2] ?? 0;
|
|
304
|
+
const dpiStages = [];
|
|
305
|
+
for (let stage = 0; stage < MCHOSE_DPI_STAGES; stage += 1) {
|
|
306
|
+
dpiStages.push(u16(payload, 4 + stage * 2));
|
|
307
|
+
}
|
|
308
|
+
return {
|
|
309
|
+
profileIndex: payload[0] ?? 0,
|
|
310
|
+
wirelessDpiIndex: wireless & 0x0f,
|
|
311
|
+
wirelessRateIndex: (wireless >> 4) & 0x0f,
|
|
312
|
+
wiredDpiIndex: wired & 0x0f,
|
|
313
|
+
wiredRateIndex: (wired >> 4) & 0x0f,
|
|
314
|
+
dpiStages,
|
|
315
|
+
stageCount: payload[16] ?? 0,
|
|
316
|
+
sensor: payload[17] ?? 0,
|
|
317
|
+
liftOffIndex: mchoseDecodeLiftOffIndex(payload[17] ?? 0),
|
|
318
|
+
processing: mchoseDecodeProcessing(payload[17] ?? 0),
|
|
319
|
+
keyDebounce: payload[18] ?? 0,
|
|
320
|
+
sleep: payload[19] ?? 0,
|
|
321
|
+
angleTuning: mchoseDecodeAngleTuning(payload[MCHOSE_ANGLE_TUNING_OFFSET] ?? 0),
|
|
322
|
+
mode: mchoseModeName(payload[17] ?? 0),
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/** Pack a link's rate/stage pair back into its byte: rate high, stage low. */
|
|
326
|
+
export function mchosePackLinkByte(rateIndex, dpiIndex) {
|
|
327
|
+
return (((rateIndex & 0x0f) << 4) | (dpiIndex & 0x0f)) & 0xff;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Build the `0x57` write payload from a payload previously read with `0x67`.
|
|
331
|
+
*
|
|
332
|
+
* The write layout is exactly the read layout with a command byte in front, so
|
|
333
|
+
* a change is applied by echoing every other byte back untouched — which is
|
|
334
|
+
* what keeps button mappings, macros and DPI values from being wiped by a
|
|
335
|
+
* partial write.
|
|
336
|
+
*/
|
|
337
|
+
export function mchoseEncodeConfigWrite(readPayload, changes = {}) {
|
|
338
|
+
const current = mchoseDecodeConfig(readPayload);
|
|
339
|
+
if (!current)
|
|
340
|
+
throw new Error("mchoseEncodeConfigWrite needs a decodable 0x67 payload");
|
|
341
|
+
const out = [MCHOSE_COMMAND.writeConfig, ...readPayload];
|
|
342
|
+
// +1 throughout: the command byte shifts every field by one.
|
|
343
|
+
out[1 + 1] = mchosePackLinkByte(changes.wiredRateIndex ?? current.wiredRateIndex, changes.wiredDpiIndex ?? current.wiredDpiIndex);
|
|
344
|
+
out[1 + 2] = mchosePackLinkByte(changes.wirelessRateIndex ?? current.wirelessRateIndex, changes.wirelessDpiIndex ?? current.wirelessDpiIndex);
|
|
345
|
+
if (changes.dpiStages) {
|
|
346
|
+
for (let stage = 0; stage < MCHOSE_DPI_STAGES; stage += 1) {
|
|
347
|
+
const value = changes.dpiStages[stage] ?? current.dpiStages[stage] ?? 0;
|
|
348
|
+
out[1 + 4 + stage * 2] = value & 0xff;
|
|
349
|
+
out[1 + 4 + stage * 2 + 1] = (value >> 8) & 0xff;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (changes.keyDebounce !== undefined)
|
|
353
|
+
out[1 + 18] = changes.keyDebounce & 0xff;
|
|
354
|
+
if (changes.stageCount !== undefined)
|
|
355
|
+
out[1 + 16] = changes.stageCount & 0xff;
|
|
356
|
+
return out;
|
|
357
|
+
}
|
|
358
|
+
// ── model catalog ──────────────────────────────────────────────────────────
|
|
359
|
+
/**
|
|
360
|
+
* PIDs shared by the whole A7 V2 family, so they identify a link rather than a
|
|
361
|
+
* model. The receiver is the endpoint the host talks to; the mouse reports its
|
|
362
|
+
* own model-specific id inside the battery reply.
|
|
363
|
+
*/
|
|
364
|
+
export const MCHOSE_LINK_PRODUCT_IDS = {
|
|
365
|
+
receiver: 0x100b,
|
|
366
|
+
bluetooth: 0x100a,
|
|
367
|
+
receiver8k: 0x1020,
|
|
368
|
+
};
|
|
369
|
+
/** The A7 V2 family, from the M HUB bundle's own model table. */
|
|
370
|
+
export const MCHOSE_PRODUCTS = [
|
|
371
|
+
{ name: "A7 V2 Pro", productId: 0x4018, dpiMax: 26000, liftOffDistances: [1, 2], maxPollingRate: 8000 },
|
|
372
|
+
{ name: "A7 V2 Pro+", productId: 0x4023, dpiMax: 26000, liftOffDistances: [1, 2], maxPollingRate: 8000 },
|
|
373
|
+
{ name: "A7 V2 Ultra", productId: 0x4019, dpiMax: 42000, liftOffDistances: [0.7, 1, 2], maxPollingRate: 8000 },
|
|
374
|
+
{ name: "A7 V2 Ultra+", productId: 0x4021, dpiMax: 42000, liftOffDistances: [0.7, 1, 2], maxPollingRate: 8000 },
|
|
375
|
+
];
|
|
376
|
+
/** Rate lists the firmware exposes, keyed by the model's maximum rate. */
|
|
377
|
+
export const MCHOSE_POLLING_RATES = {
|
|
378
|
+
1000: [125, 500, 1000],
|
|
379
|
+
4000: [125, 500, 1000, 2000, 4000],
|
|
380
|
+
8000: [125, 500, 1000, 2000, 4000, 8000],
|
|
381
|
+
};
|
|
382
|
+
/**
|
|
383
|
+
* Identify the model. The id inside the battery reply is decisive; the host-
|
|
384
|
+
* facing PID is shared across the family, so the product string is the only
|
|
385
|
+
* fallback, and an unrecognised one yields null rather than a wrong DPI ceiling.
|
|
386
|
+
*/
|
|
387
|
+
export function mchoseFindProduct(mouseProductId, productName) {
|
|
388
|
+
const byId = MCHOSE_PRODUCTS.find((product) => product.productId === mouseProductId);
|
|
389
|
+
if (byId)
|
|
390
|
+
return byId;
|
|
391
|
+
const name = productName?.trim().toUpperCase() ?? "";
|
|
392
|
+
if (!name)
|
|
393
|
+
return null;
|
|
394
|
+
// Longest name first so "A7 V2 Ultra+" is not swallowed by "A7 V2 Ultra".
|
|
395
|
+
return [...MCHOSE_PRODUCTS]
|
|
396
|
+
.sort((a, b) => b.name.length - a.name.length)
|
|
397
|
+
.find((product) => name.includes(product.name.toUpperCase())) ?? null;
|
|
398
|
+
}
|
|
399
|
+
/** Polling rates available on the link this host-facing product id represents. */
|
|
400
|
+
export function mchosePollingRates(product, hostProductId) {
|
|
401
|
+
const max = hostProductId === MCHOSE_LINK_PRODUCT_IDS.bluetooth ? 1000 : product.maxPollingRate;
|
|
402
|
+
return MCHOSE_POLLING_RATES[max] ?? MCHOSE_POLLING_RATES[1000];
|
|
403
|
+
}
|
|
404
|
+
export * from "./buttons.js";
|
|
405
|
+
export * from "./dock.js";
|
|
406
|
+
export * from "./a5-gen1.js";
|
|
407
|
+
// The A7 V3 generation's protocol, which shares only a vendor id with the above.
|
|
408
|
+
export * from "./v3.js";
|
|
409
|
+
/**
|
|
410
|
+
* Profile names, read one at a time with `0x12 0x68 <index>`. The reply is the
|
|
411
|
+
* profile index followed by a NUL-terminated ASCII name — the test hardware
|
|
412
|
+
* answered "Config 1", "Config 2", "Config 3".
|
|
413
|
+
*/
|
|
414
|
+
export function mchoseEncodeReadProfileName(index) {
|
|
415
|
+
if (!Number.isInteger(index) || index < 0 || index >= MCHOSE_PROFILE_COUNT) {
|
|
416
|
+
throw new Error(`MCHOSE profile index must be 0-${MCHOSE_PROFILE_COUNT - 1}.`);
|
|
417
|
+
}
|
|
418
|
+
return [MCHOSE_COMMAND.readProfileName, index];
|
|
419
|
+
}
|
|
420
|
+
export function mchoseDecodeProfileName(payload) {
|
|
421
|
+
if (payload.length < 2)
|
|
422
|
+
return null;
|
|
423
|
+
let end = 1;
|
|
424
|
+
while (end < payload.length && payload[end] !== 0)
|
|
425
|
+
end += 1;
|
|
426
|
+
const name = String.fromCharCode(...payload.subarray(1, end)).trim();
|
|
427
|
+
return name.length ? name : null;
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mchose/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an A7 V3 button can be set to, read out of M HUB's own tables.
|
|
3
|
+
*
|
|
4
|
+
* The vendor stores each action as a hex string whose first byte is the type
|
|
5
|
+
* and whose remaining bytes are the value — `"0x13042b"` is Alt+Tab, type
|
|
6
|
+
* `0x13`, modifier `0x04`, usage `0x2b`. The rows below are those strings split
|
|
7
|
+
* in two, in the same orientation {@link mchoseV3DecodeButtons} produces, so a
|
|
8
|
+
* decoded assignment can be compared against this table directly.
|
|
9
|
+
*
|
|
10
|
+
* **Type and value only mean anything together.** `0x0002` is "right click"
|
|
11
|
+
* under type `0x00`, "DPI −" under type `0x01` and a media key under `0x14`.
|
|
12
|
+
*
|
|
13
|
+
* Note the type numbers are **not** the A7 V2's: this generation uses `0x00`
|
|
14
|
+
* for mouse buttons, `0x11`/`0x13` for the keyboard, `0x14` for media, `0x16`
|
|
15
|
+
* for system shortcuts, `0x33` for profiles and `0xfe` for a disabled button.
|
|
16
|
+
* The V2's 1/2/3/5/8/9/10 mean nothing here.
|
|
17
|
+
*/
|
|
18
|
+
export interface MchoseV3ButtonAction {
|
|
19
|
+
label: string;
|
|
20
|
+
type: number;
|
|
21
|
+
/** Value bytes after the type, most significant first. */
|
|
22
|
+
value: readonly number[];
|
|
23
|
+
/** Display grouping, matching the A7 V2 driver's. */
|
|
24
|
+
group: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A button the firmware reports as carrying no assignment at all. M HUB never
|
|
28
|
+
* writes this — it writes {@link MCHOSE_V3_BUTTON_ACTIONS}'s "Disabled",
|
|
29
|
+
* which is type `0xfe` — but a stock mouse can report it, so it has to be
|
|
30
|
+
* nameable. A real A7 V3 Ultra+ shipped with its DPI button on `0xff`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const MCHOSE_V3_BUTTON_UNSET = 255;
|
|
33
|
+
/**
|
|
34
|
+
* Every action M HUB offers, plus the letters, function keys and navigation
|
|
35
|
+
* keys the vendor's table leaves to its on-screen keyboard. Those are derived,
|
|
36
|
+
* not invented: the vendor's own shortcuts spell out the same standard HID
|
|
37
|
+
* usages under the same type (Ctrl+A is `0x04`, Ctrl+C `0x06`, Alt+F4 `0x3d`,
|
|
38
|
+
* Esc `0x29`), so the usage page is confirmed rather than assumed.
|
|
39
|
+
*/
|
|
40
|
+
export declare const MCHOSE_V3_BUTTON_ACTIONS: readonly MchoseV3ButtonAction[];
|
|
41
|
+
/**
|
|
42
|
+
* Resolve an action for a specific button.
|
|
43
|
+
*
|
|
44
|
+
* "Default" is the one entry whose value depends on which button it is for:
|
|
45
|
+
* the firmware stores each button's own factory mask rather than a shared
|
|
46
|
+
* "restore" sentinel.
|
|
47
|
+
*/
|
|
48
|
+
export declare function mchoseV3ButtonAction(button: string, label: string): {
|
|
49
|
+
type: number;
|
|
50
|
+
value: number[];
|
|
51
|
+
} | null;
|
|
52
|
+
/**
|
|
53
|
+
* Name a stored assignment. Type and value are matched together, because the
|
|
54
|
+
* same value means different things under different types. A button sitting on
|
|
55
|
+
* its own factory mask is reported as "Default" rather than as the click it
|
|
56
|
+
* happens to encode, since that is what the user changed it from.
|
|
57
|
+
*/
|
|
58
|
+
export declare function mchoseV3ButtonActionName(button: string, action: {
|
|
59
|
+
type: number;
|
|
60
|
+
value: readonly number[];
|
|
61
|
+
}): string;
|
|
62
|
+
/** Labels for the picker, in display order. */
|
|
63
|
+
export declare function mchoseV3ButtonActionLabels(): string[];
|
|
64
|
+
//# sourceMappingURL=v3-buttons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-buttons.d.ts","sourceRoot":"","sources":["../../src/mchose/v3-buttons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAgB3C;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,oBAAoB,EAgLnE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAS1C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACjD,MAAM,CAeR;AAMD,+CAA+C;AAC/C,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD"}
|