@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,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SteelSeries Aerox 9 Wireless configuration protocol — pure encode/decode helpers.
|
|
3
|
+
*
|
|
4
|
+
* Reconstructed from public open-source implementations, not vendor software:
|
|
5
|
+
*
|
|
6
|
+
* - rivalcfg `rivalcfg/devices/aerox9_wireless_wired.py` — the primary source
|
|
7
|
+
* for every command byte, product id, and default here, for the mouse's
|
|
8
|
+
* USB-cabled mode (`1038:185A`, plus the WOW Edition `0x1876`).
|
|
9
|
+
* - rivalcfg `rivalcfg/devices/aerox9_wireless_wireless.py` — the 2.4 GHz
|
|
10
|
+
* dongle mode (`1038:1858`, WOW Edition `0x1874`). Read in full and diffed
|
|
11
|
+
* directly against the wired-mode file: it is **not** a separate command
|
|
12
|
+
* set. It is `aerox9_wireless_wired.py`'s settings dict comprehended
|
|
13
|
+
* through one `_patch_command` helper that (1) ORs `0b01000000` (`0x40`)
|
|
14
|
+
* into every command's first byte and (2) adds a 64-byte `readback_length`.
|
|
15
|
+
* This is the exact same transform cluster 3 found for the Aerox 5
|
|
16
|
+
* Wireless (`./aerox5-wireless.ts`'s `applyWirelessFlag`) — confirmed here
|
|
17
|
+
* by direct `diff` of the two device files, not assumed from precedent.
|
|
18
|
+
* This module implements that transform (`applyAerox9WirelessFlag`, named
|
|
19
|
+
* distinctly from `./aerox5-wireless.ts`'s `applyWirelessFlag` to avoid a
|
|
20
|
+
* re-export collision in `./index.ts`) rather than hand-duplicating the
|
|
21
|
+
* wired-mode byte tables.
|
|
22
|
+
* - rivalcfg `rivalcfg/devices/dpi/truemove_air.py` — same TrueMove Air
|
|
23
|
+
* sensor table as Aerox 5 / Aerox 5 Wireless / Rival 3 Wireless — imported
|
|
24
|
+
* from `./rival3-wireless.ts`'s `TRUEMOVE_AIR_DPI_TO_BYTE`, not re-derived
|
|
25
|
+
* (same `input_range`/`output_choices` reference).
|
|
26
|
+
* - rivalcfg `rivalcfg/handlers/multidpi_range_choice.py` — `dpi_length_byte: 1`,
|
|
27
|
+
* `first_preset: 0` (same as Aerox 5 and Aerox 5 Wireless — not 1, unlike
|
|
28
|
+
* Aerox 3 and Rival 3 Wireless), `max_preset_count: 5`.
|
|
29
|
+
* - rivalcfg `rivalcfg/handlers/range.py` — `sleep_timer`/`dim_timer`: same
|
|
30
|
+
* linear range-to-range mapping as Aerox 5 Wireless, same output ranges
|
|
31
|
+
* (`sleep_timer`: `[0x000000, 0x124F80, 60000]` against `[0, 20, 1]`
|
|
32
|
+
* minutes, i.e. `minutes * 60000` ms; `dim_timer`:
|
|
33
|
+
* `[0x000000, 0x124F80, 1000]` against `[0, 1200, 1]` seconds, i.e.
|
|
34
|
+
* `seconds * 1000` ms), little-endian 3 bytes (`range_length_byte: 3`).
|
|
35
|
+
* - rivalcfg `rivalcfg/handlers/rgbcolor.py` / `reactive_rgbcolor.py` — RGB
|
|
36
|
+
* value encoding, same as every other SteelSeries family in this codebase.
|
|
37
|
+
* - rivalcfg `rivalcfg/handlers/none.py` — `rainbow_effect` is a fixed
|
|
38
|
+
* no-argument enable, `22 FF` (`62 FF` wireless), same shape as Aerox 5
|
|
39
|
+
* Wireless's — **not** the plain Aerox 5's zone-bitmask choice.
|
|
40
|
+
*
|
|
41
|
+
* ## No button-mapping command in this device's rivalcfg profile
|
|
42
|
+
*
|
|
43
|
+
* Despite SteelSeries marketing the Aerox 9 (Wireless) as a 9-button
|
|
44
|
+
* "MMO-style" mouse, `aerox9_wireless_wired.py` defines **no**
|
|
45
|
+
* `buttons_mapping` setting and no button-remap command at all — confirmed
|
|
46
|
+
* by reading the full settings dict, which has exactly nine entries
|
|
47
|
+
* (`sensitivity`, `polling_rate`, `z1_color`, `z2_color`, `z3_color`,
|
|
48
|
+
* `reactive_color`, `sleep_timer`, `dim_timer`, `rainbow_effect`,
|
|
49
|
+
* `default_lighting`) plus `battery_level`/`save_command`, none of them a
|
|
50
|
+
* buttons handler. This is unlike `./aerox5.ts` and `./aerox5-wireless.ts`,
|
|
51
|
+
* both of which do define one. This module therefore exposes no button
|
|
52
|
+
* remap function — there is nothing in the reference implementation to
|
|
53
|
+
* reconstruct it from, not an oversight.
|
|
54
|
+
*
|
|
55
|
+
* ## Why wired-cable-mode and 2.4 GHz-dongle-mode share one module
|
|
56
|
+
*
|
|
57
|
+
* Same pattern as Aerox 5 Wireless: one physical mouse, two USB product-id
|
|
58
|
+
* groups depending on how the host currently sees it, driven by the same
|
|
59
|
+
* command set modulo the fixed `applyAerox9WirelessFlag` transform. Every command
|
|
60
|
+
* byte in `AEROX9_WIRELESS_COMMAND` below is the wired-mode value;
|
|
61
|
+
* `applyAerox9WirelessFlag` produces the 2.4 GHz-mode byte on demand.
|
|
62
|
+
*
|
|
63
|
+
* ## Why this is a separate protocol family from Aerox 5 / Aerox 5 Wireless
|
|
64
|
+
*
|
|
65
|
+
* Aerox 9 Wireless shares several command bytes with Aerox 5 Wireless
|
|
66
|
+
* (`0x2D`/`0x2B`/`0x29`/`0x22`/`0x27`/`0x92`/`0x11 00`, the same
|
|
67
|
+
* `_patch_command` wireless-flag transform, the same `readback_length: 64`),
|
|
68
|
+
* but is a genuinely different device profile, confirmed by direct
|
|
69
|
+
* comparison of the two rivalcfg files rather than assumed from the shared
|
|
70
|
+
* "Aerox" naming and similar wireless architecture:
|
|
71
|
+
*
|
|
72
|
+
* - RGB zone commands are `21 01 <zone> <r> <g> <b>` here, same fixed-packet
|
|
73
|
+
* shape as Aerox 5 Wireless's `steelseriesAerox5WirelessEncodeZoneColor`,
|
|
74
|
+
* confirmed byte-identical (`z1_color`/`z2_color`/`z3_color` commands
|
|
75
|
+
* `[0x21, 0x01, 0x00/0x01/0x02]` match exactly) — reused here as a
|
|
76
|
+
* structurally identical function rather than imported, so each family's
|
|
77
|
+
* codec stays self-contained.
|
|
78
|
+
* - `dim_timer`'s command is `23 0F 01 00 00`, byte-identical to Aerox 5
|
|
79
|
+
* Wireless's.
|
|
80
|
+
* - No button-mapping command at all (see above) — Aerox 5 Wireless has one.
|
|
81
|
+
* - Distinct product-id space entirely: `0x185A`/`0x1876` (wired),
|
|
82
|
+
* `0x1858`/`0x1874` (2.4 GHz) — none overlap Aerox 5 Wireless's
|
|
83
|
+
* `0x1852`/`0x1854`/`0x185C`/`0x185E`/`0x1860`/`0x1862`, or any PID
|
|
84
|
+
* claimed by clusters 1–3.
|
|
85
|
+
*
|
|
86
|
+
* PIDs are therefore registered under their own family
|
|
87
|
+
* (`"aerox9-wireless"`), never `"aerox5-wireless"`.
|
|
88
|
+
*
|
|
89
|
+
* No corroborating libratbag or OpenRGB source for any of these PIDs was
|
|
90
|
+
* available in this environment (no local libratbag checkout, and OpenRGB's
|
|
91
|
+
* SteelSeries controller files were not reachable this pass) — every command
|
|
92
|
+
* byte above is sourced from rivalcfg alone, same single-source caveat
|
|
93
|
+
* clusters 2 and 3 flagged for their devices. This should be treated as
|
|
94
|
+
* unverified beyond rivalcfg until corroborated or hardware-tested.
|
|
95
|
+
*
|
|
96
|
+
* Every command is an HID output report, report id `0x00`, on the vendor
|
|
97
|
+
* configuration interface (`"endpoint": 3` for every model in both rivalcfg
|
|
98
|
+
* files). DPI presets, polling rate, zone colors, reactive color, sleep/dim
|
|
99
|
+
* timers, rainbow, and default lighting are write-only — neither rivalcfg
|
|
100
|
+
* file defines a getter for any of them. Battery level **is** readable (see
|
|
101
|
+
* below). Settings apply immediately; the save command (`11 00`,
|
|
102
|
+
* wireless-mode `51 00`) persists them to onboard flash. None of this has
|
|
103
|
+
* been verified on physical hardware by this project.
|
|
104
|
+
*
|
|
105
|
+
* ## Battery read
|
|
106
|
+
*
|
|
107
|
+
* `aerox9_wireless_wired.py` defines a `battery_level` block identical in
|
|
108
|
+
* shape to Aerox 5 Wireless's: an output-report write of `0x92` gets a
|
|
109
|
+
* 2-byte input-report reply, where `data[1] & 0b10000000` is the charging
|
|
110
|
+
* flag and `((data[1] & ~0b10000000) - 1) * 5` is the percentage (coarse
|
|
111
|
+
* 0–100 scale in steps of 5). Confirmed byte-for-byte identical to
|
|
112
|
+
* `aerox5_wireless_wired.py`'s `battery_level` block by direct comparison —
|
|
113
|
+
* not assumed. 2.4 GHz mode additionally needs `0x92 | 0x40 = 0xD2`, produced
|
|
114
|
+
* by `applyAerox9WirelessFlag`. This is the same battery-response shape as
|
|
115
|
+
* `./aerox5-wireless.ts` and a **different** shape from
|
|
116
|
+
* `./rival3-wireless.ts`'s `AA 01` / 3-byte-reply / plain-percentage-byte
|
|
117
|
+
* battery read — do not conflate the three devices' battery decoding.
|
|
118
|
+
*/
|
|
119
|
+
import { TRUEMOVE_AIR_DPI_TO_BYTE } from "./rival3-wireless.js";
|
|
120
|
+
export const AEROX9_WIRELESS_REPORT_ID = 0x00;
|
|
121
|
+
/** `_WIRELESS_FLAG = 0b01000000` in `aerox9_wireless_wireless.py` — identical constant to Aerox 5 Wireless's. */
|
|
122
|
+
const WIRELESS_FLAG = 0b01000000;
|
|
123
|
+
/** Wired-cable-mode command bytes; OR `WIRELESS_FLAG` into byte 0 for 2.4 GHz mode. */
|
|
124
|
+
export const AEROX9_WIRELESS_COMMAND = {
|
|
125
|
+
dpiPresets: [0x2d],
|
|
126
|
+
pollingRate: [0x2b],
|
|
127
|
+
zoneColor: [0x21, 0x01],
|
|
128
|
+
reactiveColor: [0x26],
|
|
129
|
+
sleepTimer: [0x29],
|
|
130
|
+
dimTimer: [0x23, 0x0f, 0x01, 0x00, 0x00],
|
|
131
|
+
rainbowEffect: [0x22, 0xff],
|
|
132
|
+
defaultLighting: [0x27],
|
|
133
|
+
batteryLevel: [0x92],
|
|
134
|
+
};
|
|
135
|
+
/** `11 00` wired-mode / `51 00` 2.4 GHz-mode — see `applyAerox9WirelessFlag`. */
|
|
136
|
+
export const AEROX9_WIRELESS_SAVE_COMMAND = [0x11, 0x00];
|
|
137
|
+
/**
|
|
138
|
+
* `_patch_command`: OR `0b01000000` into the command's first byte. Pass the
|
|
139
|
+
* wired-mode command bytes from `AEROX9_WIRELESS_COMMAND` /
|
|
140
|
+
* `AEROX9_WIRELESS_SAVE_COMMAND`; returns the 2.4 GHz-mode equivalent.
|
|
141
|
+
*/
|
|
142
|
+
export function applyAerox9WirelessFlag(command) {
|
|
143
|
+
if (command.length === 0) {
|
|
144
|
+
throw new Aerox9WirelessProtocolError("Cannot apply the wireless flag to an empty command.");
|
|
145
|
+
}
|
|
146
|
+
return [command[0] | WIRELESS_FLAG, ...command.slice(1)];
|
|
147
|
+
}
|
|
148
|
+
export const AEROX9_WIRELESS_POLLING_RATES = [125, 250, 500, 1000];
|
|
149
|
+
/** `{125:0x03, 250:0x02, 500:0x01, 1000:0x00}` in `aerox9_wireless_wired.py` — same mapping as Aerox 5 Wireless. */
|
|
150
|
+
const POLLING_RATE_TO_BYTE = new Map([
|
|
151
|
+
[1000, 0x00],
|
|
152
|
+
[500, 0x01],
|
|
153
|
+
[250, 0x02],
|
|
154
|
+
[125, 0x03],
|
|
155
|
+
]);
|
|
156
|
+
export const AEROX9_WIRELESS_DPI_MIN = 100;
|
|
157
|
+
export const AEROX9_WIRELESS_DPI_MAX = 18000;
|
|
158
|
+
export const AEROX9_WIRELESS_DPI_STEP = 100;
|
|
159
|
+
export const AEROX9_WIRELESS_MAX_DPI_PRESETS = 5;
|
|
160
|
+
export const AEROX9_WIRELESS_BATTERY_RESPONSE_LENGTH = 2;
|
|
161
|
+
const BATTERY_CHARGING_FLAG = 0b10000000;
|
|
162
|
+
export class Aerox9WirelessProtocolError extends Error {
|
|
163
|
+
}
|
|
164
|
+
/** The 180 DPI values the shared TrueMove Air sensor table can express, ascending. */
|
|
165
|
+
export function steelseriesAerox9WirelessDpiOptions() {
|
|
166
|
+
return [...TRUEMOVE_AIR_DPI_TO_BYTE.keys()].sort((a, b) => a - b);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* `2D <count> <selected> <v1>…<vN>` (or `6D …` in 2.4 GHz mode). One byte
|
|
170
|
+
* per DPI; `selectedIndex` is 0-based and encoded 0-based on the wire
|
|
171
|
+
* (`first_preset: 0`).
|
|
172
|
+
*/
|
|
173
|
+
export function steelseriesAerox9WirelessEncodeDpiPresets(presets, selectedIndex, wireless) {
|
|
174
|
+
if (presets.length < 1 || presets.length > AEROX9_WIRELESS_MAX_DPI_PRESETS) {
|
|
175
|
+
throw new Aerox9WirelessProtocolError(`SteelSeries Aerox 9 Wireless supports 1–${AEROX9_WIRELESS_MAX_DPI_PRESETS} DPI presets.`);
|
|
176
|
+
}
|
|
177
|
+
if (!Number.isInteger(selectedIndex) || selectedIndex < 0 || selectedIndex >= presets.length) {
|
|
178
|
+
throw new Aerox9WirelessProtocolError(`Selected DPI preset must be an index into the ${presets.length} presets being written.`);
|
|
179
|
+
}
|
|
180
|
+
const encoded = presets.map((dpi) => {
|
|
181
|
+
const byte = TRUEMOVE_AIR_DPI_TO_BYTE.get(dpi);
|
|
182
|
+
if (byte === undefined) {
|
|
183
|
+
throw new Aerox9WirelessProtocolError(`SteelSeries Aerox 9 Wireless DPI must be ${AEROX9_WIRELESS_DPI_MIN}–${AEROX9_WIRELESS_DPI_MAX.toLocaleString()} in ${AEROX9_WIRELESS_DPI_STEP} DPI steps.`);
|
|
184
|
+
}
|
|
185
|
+
return byte;
|
|
186
|
+
});
|
|
187
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.dpiPresets) : AEROX9_WIRELESS_COMMAND.dpiPresets;
|
|
188
|
+
return new Uint8Array([...command, presets.length, selectedIndex, ...encoded]);
|
|
189
|
+
}
|
|
190
|
+
/** `2B <v>` (`6B` wireless) with 1000→0x00, 500→0x01, 250→0x02, 125→0x03. */
|
|
191
|
+
export function steelseriesAerox9WirelessEncodePollingRate(pollingRateHz, wireless) {
|
|
192
|
+
const byte = POLLING_RATE_TO_BYTE.get(pollingRateHz);
|
|
193
|
+
if (byte === undefined) {
|
|
194
|
+
throw new Aerox9WirelessProtocolError("SteelSeries Aerox 9 Wireless supports 125, 250, 500, or 1000 Hz polling.");
|
|
195
|
+
}
|
|
196
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.pollingRate) : AEROX9_WIRELESS_COMMAND.pollingRate;
|
|
197
|
+
return new Uint8Array([...command, byte]);
|
|
198
|
+
}
|
|
199
|
+
function encodeRgb(r, g, b) {
|
|
200
|
+
for (const channel of [r, g, b]) {
|
|
201
|
+
if (!Number.isInteger(channel) || channel < 0 || channel > 255) {
|
|
202
|
+
throw new Aerox9WirelessProtocolError("RGB channels must be integers 0–255.");
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return [r, g, b];
|
|
206
|
+
}
|
|
207
|
+
const ZONE_INDEX = { 1: 0x00, 2: 0x01, 3: 0x02 };
|
|
208
|
+
/**
|
|
209
|
+
* `21 01 <zone-index> <r> <g> <b>` (`61 01 …` wireless) — a fixed 6-byte
|
|
210
|
+
* packet. Zone 1 = top LED, zone 2 = middle LED, zone 3 = bottom LED (strip
|
|
211
|
+
* order, per `z1_color`/`z2_color`/`z3_color`'s CLI flag labels).
|
|
212
|
+
*/
|
|
213
|
+
export function steelseriesAerox9WirelessEncodeZoneColor(zone, r, g, b, wireless) {
|
|
214
|
+
const zoneIndex = ZONE_INDEX[zone];
|
|
215
|
+
if (zoneIndex === undefined) {
|
|
216
|
+
throw new Aerox9WirelessProtocolError("SteelSeries Aerox 9 Wireless has zones 1 (top), 2 (middle), and 3 (bottom) only.");
|
|
217
|
+
}
|
|
218
|
+
const [red, green, blue] = encodeRgb(r, g, b);
|
|
219
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.zoneColor) : AEROX9_WIRELESS_COMMAND.zoneColor;
|
|
220
|
+
return new Uint8Array([...command, zoneIndex, red, green, blue]);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* `26 00 00 00 00 00` when disabled, `26 01 00 <r> <g> <b>` when enabled
|
|
224
|
+
* (`66 …` wireless) — same shape as every other SteelSeries family here.
|
|
225
|
+
*/
|
|
226
|
+
export function steelseriesAerox9WirelessEncodeReactiveColor(color, wireless) {
|
|
227
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.reactiveColor) : AEROX9_WIRELESS_COMMAND.reactiveColor;
|
|
228
|
+
if (color === null) {
|
|
229
|
+
return new Uint8Array([...command, 0x00, 0x00, 0x00, 0x00, 0x00]);
|
|
230
|
+
}
|
|
231
|
+
const [r, g, b] = encodeRgb(color.r, color.g, color.b);
|
|
232
|
+
return new Uint8Array([...command, 0x01, 0x00, r, g, b]);
|
|
233
|
+
}
|
|
234
|
+
function encodeRangeLE3(value, min, max, unit, msPerUnit) {
|
|
235
|
+
if (!Number.isInteger(value) || value < min || value > max) {
|
|
236
|
+
throw new Aerox9WirelessProtocolError(`SteelSeries Aerox 9 Wireless ${unit} must be an integer ${min}–${max}.`);
|
|
237
|
+
}
|
|
238
|
+
const ms = value * msPerUnit;
|
|
239
|
+
return [ms & 0xff, (ms >> 8) & 0xff, (ms >> 16) & 0xff];
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* `29 <ms LE24>` (`69 …` wireless) — idle minutes before sleep, `0` disables.
|
|
243
|
+
* Encoded as `minutes * 60000` milliseconds, little-endian 3 bytes.
|
|
244
|
+
*/
|
|
245
|
+
export function steelseriesAerox9WirelessEncodeSleepTimer(minutes, wireless) {
|
|
246
|
+
const bytes = encodeRangeLE3(minutes, 0, 20, "sleep timer minutes", 60_000);
|
|
247
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.sleepTimer) : AEROX9_WIRELESS_COMMAND.sleepTimer;
|
|
248
|
+
return new Uint8Array([...command, ...bytes]);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* `23 0F 01 00 00 <ms LE24>` (`63 …` wireless) — idle seconds before the LEDs
|
|
252
|
+
* dim, `0` disables. Encoded as `seconds * 1000` milliseconds, little-endian
|
|
253
|
+
* 3 bytes.
|
|
254
|
+
*/
|
|
255
|
+
export function steelseriesAerox9WirelessEncodeDimTimer(seconds, wireless) {
|
|
256
|
+
const bytes = encodeRangeLE3(seconds, 0, 1200, "dim timer seconds", 1_000);
|
|
257
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.dimTimer) : AEROX9_WIRELESS_COMMAND.dimTimer;
|
|
258
|
+
return new Uint8Array([...command, ...bytes]);
|
|
259
|
+
}
|
|
260
|
+
/** `22 FF` (`62 FF` wireless) — enables the rainbow effect on all zones; a color write clears it. */
|
|
261
|
+
export function steelseriesAerox9WirelessEncodeRainbowEffect(wireless) {
|
|
262
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.rainbowEffect) : AEROX9_WIRELESS_COMMAND.rainbowEffect;
|
|
263
|
+
return new Uint8Array(command);
|
|
264
|
+
}
|
|
265
|
+
/** Byte-identical to `./aerox5-wireless.ts`'s `AEROX5_WIRELESS_DEFAULT_LIGHTING`, confirmed by direct comparison. */
|
|
266
|
+
export const AEROX9_WIRELESS_DEFAULT_LIGHTING = {
|
|
267
|
+
off: [0x00, 0x00],
|
|
268
|
+
reactive: [0x00, 0x01],
|
|
269
|
+
rainbow: [0x01, 0x00],
|
|
270
|
+
"reactive-rainbow": [0x01, 0x01],
|
|
271
|
+
};
|
|
272
|
+
/** `27 <v1> <v2>` (`67 …` wireless) — what the mouse lights up as before a host ever connects. */
|
|
273
|
+
export function steelseriesAerox9WirelessEncodeDefaultLighting(mode, wireless) {
|
|
274
|
+
const bytes = AEROX9_WIRELESS_DEFAULT_LIGHTING[mode];
|
|
275
|
+
if (bytes === undefined) {
|
|
276
|
+
throw new Aerox9WirelessProtocolError(`SteelSeries Aerox 9 Wireless default lighting must be one of: ${Object.keys(AEROX9_WIRELESS_DEFAULT_LIGHTING).join(", ")}.`);
|
|
277
|
+
}
|
|
278
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.defaultLighting) : AEROX9_WIRELESS_COMMAND.defaultLighting;
|
|
279
|
+
return new Uint8Array([...command, ...bytes]);
|
|
280
|
+
}
|
|
281
|
+
/** `11 00` wired-mode / `51 00` 2.4 GHz-mode — commit the current settings to onboard flash. */
|
|
282
|
+
export function steelseriesAerox9WirelessSaveCommand(wireless) {
|
|
283
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_SAVE_COMMAND) : AEROX9_WIRELESS_SAVE_COMMAND;
|
|
284
|
+
return new Uint8Array(command);
|
|
285
|
+
}
|
|
286
|
+
/** `92` wired-mode / `D2` 2.4 GHz-mode — the device answers with a two-byte input report. */
|
|
287
|
+
export function steelseriesAerox9WirelessBatteryQuery(wireless) {
|
|
288
|
+
const command = wireless ? applyAerox9WirelessFlag(AEROX9_WIRELESS_COMMAND.batteryLevel) : AEROX9_WIRELESS_COMMAND.batteryLevel;
|
|
289
|
+
return new Uint8Array(command);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Decode the two-byte battery response: `data[0]` is unused by rivalcfg's
|
|
293
|
+
* lambdas, `data[1]`'s top bit is the charging flag and the remaining 7 bits
|
|
294
|
+
* (1-indexed, hence `- 1`) scaled by 5 give the percentage.
|
|
295
|
+
*/
|
|
296
|
+
export function steelseriesAerox9WirelessDecodeBattery(payload) {
|
|
297
|
+
if (payload.length < AEROX9_WIRELESS_BATTERY_RESPONSE_LENGTH) {
|
|
298
|
+
throw new Aerox9WirelessProtocolError("SteelSeries Aerox 9 Wireless battery response is shorter than two bytes.");
|
|
299
|
+
}
|
|
300
|
+
const statusByte = payload[1];
|
|
301
|
+
const isCharging = (statusByte & BATTERY_CHARGING_FLAG) !== 0;
|
|
302
|
+
const level = ((statusByte & ~BATTERY_CHARGING_FLAG) - 1) * 5;
|
|
303
|
+
return { level, isCharging };
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=aerox9-wireless.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox9-wireless.js","sourceRoot":"","sources":["../../src/steelseries/aerox9-wireless.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqHG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,iHAAiH;AACjH,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,WAAW,EAAE,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACvB,aAAa,EAAE,CAAC,IAAI,CAAC;IACrB,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,IAAI,CAAC;CACZ,CAAC;AAEX,iFAAiF;AACjF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAElE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAA0B;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,2BAA2B,CAAC,qDAAqD,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAU,CAAC;AAE5E,oHAAoH;AACpH,MAAM,oBAAoB,GAAgC,IAAI,GAAG,CAAC;IAChE,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC;AAEzD,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEzC,MAAM,OAAO,2BAA4B,SAAQ,KAAK;CAAG;AAEzD,sFAAsF;AACtF,MAAM,UAAU,mCAAmC;IACjD,OAAO,CAAC,GAAG,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yCAAyC,CACvD,OAA0B,EAC1B,aAAqB,EACrB,QAAiB;IAEjB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,+BAA+B,EAAE,CAAC;QAC3E,MAAM,IAAI,2BAA2B,CACnC,2CAA2C,+BAA+B,eAAe,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7F,MAAM,IAAI,2BAA2B,CACnC,iDAAiD,OAAO,CAAC,MAAM,yBAAyB,CACzF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,2BAA2B,CACnC,4CAA4C,uBAAuB,IAAI,uBAAuB,CAAC,cAAc,EAAE,OAAO,wBAAwB,aAAa,CAC5J,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC;IAC5H,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,0CAA0C,CAAC,aAAqB,EAAE,QAAiB;IACjG,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,2BAA2B,CACnC,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC;IAC9H,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAChD,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;YAC/D,MAAM,IAAI,2BAA2B,CAAC,sCAAsC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC;AAID,MAAM,UAAU,GAAuC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAErF;;;;GAIG;AACH,MAAM,UAAU,wCAAwC,CACtD,IAAwB,EACxB,CAAS,EACT,CAAS,EACT,CAAS,EACT,QAAiB;IAEjB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,2BAA2B,CACnC,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,SAAS,CAAC;IAC1H,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4CAA4C,CAC1D,KAAiD,EACjD,QAAiB;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,aAAa,CAAC;IAClI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,IAAY,EAAE,SAAiB;IAC9F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAC3D,MAAM,IAAI,2BAA2B,CAAC,gCAAgC,IAAI,uBAAuB,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yCAAyC,CAAC,OAAe,EAAE,QAAiB;IAC1F,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC;IAC5H,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CAAC,OAAe,EAAE,QAAiB;IACxF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC;IACxH,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,4CAA4C,CAAC,QAAiB;IAC5E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,aAAa,CAAC;IAClI,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,qHAAqH;AACrH,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;CACxB,CAAC;AAIX,kGAAkG;AAClG,MAAM,UAAU,8CAA8C,CAC5D,IAAmC,EACnC,QAAiB;IAEjB,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,2BAA2B,CACnC,iEAAiE,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7H,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,eAAe,CAAC;IACtI,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,oCAAoC,CAAC,QAAiB;IACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC;IAChH,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,qCAAqC,CAAC,QAAiB;IACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC;IAChI,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,sCAAsC,CAAC,OAAmB;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,uCAAuC,EAAE,CAAC;QAC7D,MAAM,IAAI,2BAA2B,CACnC,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SteelSeries per-PID catalog.
|
|
3
|
+
*
|
|
4
|
+
* SteelSeries is a multi-family vendor: rivalcfg alone documents four
|
|
5
|
+
* incompatible Rival 3 command sets (Gen 1, Gen 2, Wireless, Wireless Gen 2),
|
|
6
|
+
* and libratbag distinguishes four more protocol versions for older mice. The
|
|
7
|
+
* `family` field selects which codec module drives a product; command bytes,
|
|
8
|
+
* framing, and value tables live in that module, never here, and no family's
|
|
9
|
+
* codec branches on product id.
|
|
10
|
+
*
|
|
11
|
+
* Only PIDs whose protocol has been traced to a public implementation belong
|
|
12
|
+
* here. The Rival 3 Wireless Gen 2 (`0x1872`) and Rival 3 Gen 2 (`0x1870`)
|
|
13
|
+
* are deliberately absent: their command sets are documented as different
|
|
14
|
+
* from every family below, and listing them would claim devices this codec
|
|
15
|
+
* would misprogram. The Rival 3 Wireless (`0x1830`) is present with family
|
|
16
|
+
* `"rival3-wireless"` — its own module, `./rival3-wireless.ts`, distinct from
|
|
17
|
+
* both Rival 3 Gen 1 and Aerox 3 (different command bytes throughout, a
|
|
18
|
+
* different DPI sensor table, and, unlike either wired family, a readable
|
|
19
|
+
* battery/firmware state — see that module's doc comment).
|
|
20
|
+
*
|
|
21
|
+
* The Aerox 3 (`0x1836`, family `"aerox3"`) is a separate protocol family
|
|
22
|
+
* from Rival 3 despite both being SteelSeries, single-byte vs. two-byte
|
|
23
|
+
* command prefixes and all — see `./aerox3.ts`'s doc comment, including its
|
|
24
|
+
* reconciliation of PR flozz/rivalcfg#269's Rival 3 Gen 2 claim (not added
|
|
25
|
+
* here: its DPI command differs from Aerox 3's even though most other
|
|
26
|
+
* commands match).
|
|
27
|
+
*
|
|
28
|
+
* The Aerox 5 is split across **two** families despite one product line and
|
|
29
|
+
* mostly-shared command bytes: `"aerox5"` (`0x1850`, the plain wired mouse —
|
|
30
|
+
* see `./aerox5.ts`) and `"aerox5-wireless"` (the separately-sold Aerox 5
|
|
31
|
+
* Wireless, six PIDs across its USB-cabled and 2.4 GHz dongle modes — see
|
|
32
|
+
* `./aerox5-wireless.ts`). The two families' polling-rate byte values and
|
|
33
|
+
* RGB zone-color packet shapes differ even though several other command
|
|
34
|
+
* bytes match; do not assume one family's codec for the other's PIDs.
|
|
35
|
+
*
|
|
36
|
+
* The Aerox 9 Wireless (`"aerox9-wireless"`, four PIDs across its
|
|
37
|
+
* USB-cabled and 2.4 GHz dongle modes — see `./aerox9-wireless.ts`) is its
|
|
38
|
+
* own family, not folded into `"aerox5-wireless"` despite sharing the same
|
|
39
|
+
* `_patch_command`-style wireless-flag transform and several command bytes:
|
|
40
|
+
* its RGB zone commands, dim timer, and battery read match Aerox 5
|
|
41
|
+
* Wireless's byte-for-byte, but it defines no button-mapping command at all
|
|
42
|
+
* (`./aerox9-wireless.ts`'s doc comment) where Aerox 5 Wireless does, and
|
|
43
|
+
* its product-id space is disjoint from every other family here.
|
|
44
|
+
*
|
|
45
|
+
* The Prime+ (`0x182C`, family `"prime-plus"`) is its own family per this
|
|
46
|
+
* rollout's per-cluster scoping, even though — see `./prime-plus.ts`'s doc
|
|
47
|
+
* comment for the full corroboration-gap disclosure — its rivalcfg profile
|
|
48
|
+
* (`prime_plus.py`) is byte-identical to plain Prime's (`prime.py`, PIDs
|
|
49
|
+
* `0x182E`/`0x182A`/`0x1856`, none of which are listed here: plain/non-Plus
|
|
50
|
+
* Prime is out of scope for this cluster and deliberately not added).
|
|
51
|
+
*
|
|
52
|
+
* The Prime Mini Wireless (`"prime-mini-wireless"`, PIDs `0x184A` wired /
|
|
53
|
+
* `0x1848` 2.4 GHz — see `./prime-mini-wireless.ts`) is its own family for
|
|
54
|
+
* the same reason: rivalcfg documents it and the plain (non-Mini) Prime
|
|
55
|
+
* Wireless as one shared `settings` dict inside
|
|
56
|
+
* `prime_wireless_wired.py`/`prime_wireless_wireless.py`, but the plain
|
|
57
|
+
* Prime Wireless's PIDs (`0x1842` wired / `0x1840` 2.4 GHz) are out of scope
|
|
58
|
+
* for this cluster and deliberately not added here.
|
|
59
|
+
*/
|
|
60
|
+
export declare const STEELSERIES_VENDOR_ID = 4152;
|
|
61
|
+
export type SteelSeriesProtocolFamily = "rival3" | "rival310" | "aerox3" | "rival3-wireless" | "aerox5" | "aerox5-wireless" | "rival650" | "aerox9-wireless" | "prime-plus" | "prime-mini-wireless" | "sensei-ten";
|
|
62
|
+
export interface SteelSeriesProduct {
|
|
63
|
+
model: string;
|
|
64
|
+
/** Selects the codec module. Never infer one family's commands from another. */
|
|
65
|
+
family: SteelSeriesProtocolFamily;
|
|
66
|
+
wireless: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* No public implementation has a settings getter for DPI/polling/buttons on
|
|
69
|
+
* any family here — rivalcfg keeps a local JSON mirror because the mouse
|
|
70
|
+
* cannot be asked those specific settings. Typed as the literal `false` so
|
|
71
|
+
* a future settings-readable family forces a conscious widening rather than
|
|
72
|
+
* silently defaulting reads on. This is independent of `rival3-wireless`'s
|
|
73
|
+
* separate readable battery/firmware state, which is not a "setting".
|
|
74
|
+
*/
|
|
75
|
+
settingsReadable: false;
|
|
76
|
+
/** The `10 00` firmware query; the Gen 2 profile has no firmware command. */
|
|
77
|
+
hasFirmwareQuery: boolean;
|
|
78
|
+
/** True only after this exact product id was exercised on real hardware. */
|
|
79
|
+
verified: boolean;
|
|
80
|
+
}
|
|
81
|
+
export declare const STEELSERIES_PRODUCTS: ReadonlyMap<number, SteelSeriesProduct>;
|
|
82
|
+
//# sourceMappingURL=devices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../src/steelseries/devices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,eAAO,MAAM,qBAAqB,OAAS,CAAC;AAE5C,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,QAAQ,GACR,iBAAiB,GACjB,UAAU,GACV,iBAAiB,GACjB,YAAY,GACZ,qBAAqB,GACrB,YAAY,CAAC;AAEjB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,gBAAgB,EAAE,KAAK,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAwPvE,CAAC"}
|