@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,234 @@
|
|
|
1
|
+
import { AEROX5_WIRELESS_POLLING_RATES, AEROX5_WIRELESS_REPORT_ID, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, steelseriesAerox5WirelessBatteryQuery, steelseriesAerox5WirelessDecodeBattery, steelseriesAerox5WirelessDpiOptions, steelseriesAerox5WirelessEncodeButtonsMapping, steelseriesAerox5WirelessEncodeDefaultLighting, steelseriesAerox5WirelessEncodeDimTimer, steelseriesAerox5WirelessEncodeDpiPresets, steelseriesAerox5WirelessEncodePollingRate, steelseriesAerox5WirelessEncodeRainbowEffect, steelseriesAerox5WirelessEncodeReactiveColor, steelseriesAerox5WirelessEncodeSleepTimer, steelseriesAerox5WirelessEncodeZoneColor, steelseriesAerox5WirelessSaveCommand, } from "@openmouse/protocol/steelseries";
|
|
2
|
+
/** rivalcfg's `command_approve_delay`, shared across every SteelSeries family. */
|
|
3
|
+
const COMMAND_DELAY_MS = 50;
|
|
4
|
+
/** rivalcfg reads input-report replies with a 200 ms timeout; allow slack. */
|
|
5
|
+
const RESPONSE_TIMEOUT_MS = 500;
|
|
6
|
+
/** rivalcfg profile default (`aerox5_wireless_wired.py`: "400, 800, 1200, 2400, 3200"). */
|
|
7
|
+
const DEFAULT_DPI = 400;
|
|
8
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
9
|
+
/**
|
|
10
|
+
* SteelSeries Aerox 5 Wireless WebHID control.
|
|
11
|
+
*
|
|
12
|
+
* One physical mouse, two transport-dependent product-id groups, one class:
|
|
13
|
+
* the USB-cabled group (`1038:1854`/`185E`/`1862` — "wired mode" in
|
|
14
|
+
* rivalcfg's naming) and the 2.4 GHz dongle group (`1038:1852`/`185C`/`1860`).
|
|
15
|
+
* Both use the exact same command set; only the wireless flag bit
|
|
16
|
+
* (`applyWirelessFlag` in the protocol module) and, per rivalcfg, a longer
|
|
17
|
+
* expected readback differ. `this.wireless` is fixed from the granted
|
|
18
|
+
* device's product id at construction and threaded through every encode
|
|
19
|
+
* call so a client instance never mixes flagged and unflagged commands.
|
|
20
|
+
*
|
|
21
|
+
* DPI presets, polling rate, zone colors, reactive color, sleep/dim timers,
|
|
22
|
+
* rainbow, default lighting, and buttons are write-only — neither rivalcfg
|
|
23
|
+
* file for this device defines a getter for any of them. Battery level
|
|
24
|
+
* **is** readable (`92`/`D2`, 2-byte reply, different response shape from
|
|
25
|
+
* the Rival 3 Wireless's `AA 01`/3-byte reply — see the protocol module's
|
|
26
|
+
* doc comment) and `readStatus` uses it as the connectivity probe, same
|
|
27
|
+
* role the Rival 3 Wireless's battery probe plays.
|
|
28
|
+
*
|
|
29
|
+
* The config channel is hidapi interface 3, per both rivalcfg files'
|
|
30
|
+
* `"endpoint": 3` model entries; its WebHID collection shape has not been
|
|
31
|
+
* captured yet, so the picker offers every interface and the wrong ones
|
|
32
|
+
* fail the battery probe loudly.
|
|
33
|
+
*/
|
|
34
|
+
export class SteelSeriesAerox5WirelessHidClient {
|
|
35
|
+
device;
|
|
36
|
+
wireless;
|
|
37
|
+
queue = Promise.resolve();
|
|
38
|
+
listenerAttached = false;
|
|
39
|
+
inputWaiters = new Set();
|
|
40
|
+
lastWritten = {
|
|
41
|
+
dpi: null,
|
|
42
|
+
pollingRateHz: null,
|
|
43
|
+
};
|
|
44
|
+
onInputReport = (event) => {
|
|
45
|
+
const payload = new Uint8Array(event.data.buffer.slice(event.data.byteOffset, event.data.byteOffset + event.data.byteLength));
|
|
46
|
+
for (const finish of [...this.inputWaiters])
|
|
47
|
+
finish(payload);
|
|
48
|
+
};
|
|
49
|
+
constructor(device) {
|
|
50
|
+
this.device = device;
|
|
51
|
+
this.wireless = STEELSERIES_PRODUCTS.get(device.productId)?.wireless === true
|
|
52
|
+
&& WIRELESS_MODE_PRODUCT_IDS.has(device.productId);
|
|
53
|
+
}
|
|
54
|
+
static isSupported(device) {
|
|
55
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
56
|
+
return false;
|
|
57
|
+
return STEELSERIES_PRODUCTS.get(device.productId)?.family === "aerox5-wireless";
|
|
58
|
+
}
|
|
59
|
+
get pollIntervalMs() { return 30_000; }
|
|
60
|
+
get supportedPollingRates() { return [...AEROX5_WIRELESS_POLLING_RATES]; }
|
|
61
|
+
getDpiOptions() { return steelseriesAerox5WirelessDpiOptions(); }
|
|
62
|
+
async open() {
|
|
63
|
+
if (!this.device.opened)
|
|
64
|
+
await this.device.open();
|
|
65
|
+
if (!this.listenerAttached) {
|
|
66
|
+
this.device.addEventListener("inputreport", this.onInputReport);
|
|
67
|
+
this.listenerAttached = true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async close() {
|
|
71
|
+
if (this.listenerAttached) {
|
|
72
|
+
this.device.removeEventListener("inputreport", this.onInputReport);
|
|
73
|
+
this.listenerAttached = false;
|
|
74
|
+
}
|
|
75
|
+
if (this.device.opened)
|
|
76
|
+
await this.device.close();
|
|
77
|
+
}
|
|
78
|
+
async readStatus() {
|
|
79
|
+
return await this.run(async () => {
|
|
80
|
+
await this.open();
|
|
81
|
+
const battery = await this.probeBattery();
|
|
82
|
+
const product = STEELSERIES_PRODUCTS.get(this.device.productId);
|
|
83
|
+
const name = this.device.productName?.trim() || `SteelSeries ${product?.model ?? "Aerox 5 Wireless"}`;
|
|
84
|
+
return {
|
|
85
|
+
brand: "SteelSeries",
|
|
86
|
+
name,
|
|
87
|
+
ui: {
|
|
88
|
+
family: "steelseries-aerox5-wireless",
|
|
89
|
+
settingsReady: true,
|
|
90
|
+
valuesVerified: false,
|
|
91
|
+
hideUnsupportedPollingRates: true,
|
|
92
|
+
hideProcessingCard: true,
|
|
93
|
+
pollingNote: "The Aerox 5 Wireless cannot report its current DPI or polling rate; values shown are the last written by this app, or assumed defaults.",
|
|
94
|
+
defaultDisplayName: "SteelSeries Aerox 5 Wireless",
|
|
95
|
+
},
|
|
96
|
+
batteryPercent: battery.level,
|
|
97
|
+
batteryState: battery.isCharging ? "Charging" : "Discharging",
|
|
98
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
99
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
100
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
101
|
+
activeProfile: null,
|
|
102
|
+
connectionType: this.wireless ? "Wireless" : "Wired",
|
|
103
|
+
liftOffDistance: null,
|
|
104
|
+
firmware: [],
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
110
|
+
* does not expose a getter for DPI, so the existing presets cannot be read
|
|
111
|
+
* and preserved — record them in SteelSeries GG before testing.
|
|
112
|
+
*/
|
|
113
|
+
async setDpi(dpi) {
|
|
114
|
+
const report = steelseriesAerox5WirelessEncodeDpiPresets([dpi], 0, this.wireless);
|
|
115
|
+
await this.run(async () => {
|
|
116
|
+
await this.open();
|
|
117
|
+
await this.write(report);
|
|
118
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
119
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
120
|
+
this.lastWritten.dpi = dpi;
|
|
121
|
+
});
|
|
122
|
+
return dpi;
|
|
123
|
+
}
|
|
124
|
+
async setPollingRate(pollingRateHz) {
|
|
125
|
+
const report = steelseriesAerox5WirelessEncodePollingRate(pollingRateHz, this.wireless);
|
|
126
|
+
await this.run(async () => {
|
|
127
|
+
await this.open();
|
|
128
|
+
await this.write(report);
|
|
129
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
130
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
131
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
132
|
+
});
|
|
133
|
+
return pollingRateHz;
|
|
134
|
+
}
|
|
135
|
+
async setZoneColor(zone, r, g, b) {
|
|
136
|
+
const report = steelseriesAerox5WirelessEncodeZoneColor(zone, r, g, b, this.wireless);
|
|
137
|
+
await this.run(async () => {
|
|
138
|
+
await this.open();
|
|
139
|
+
await this.write(report);
|
|
140
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
141
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
async setReactiveColor(color) {
|
|
145
|
+
const report = steelseriesAerox5WirelessEncodeReactiveColor(color, this.wireless);
|
|
146
|
+
await this.run(async () => {
|
|
147
|
+
await this.open();
|
|
148
|
+
await this.write(report);
|
|
149
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
150
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
async setSleepTimer(minutes) {
|
|
154
|
+
const report = steelseriesAerox5WirelessEncodeSleepTimer(minutes, this.wireless);
|
|
155
|
+
await this.run(async () => {
|
|
156
|
+
await this.open();
|
|
157
|
+
await this.write(report);
|
|
158
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
159
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
async setDimTimer(seconds) {
|
|
163
|
+
const report = steelseriesAerox5WirelessEncodeDimTimer(seconds, this.wireless);
|
|
164
|
+
await this.run(async () => {
|
|
165
|
+
await this.open();
|
|
166
|
+
await this.write(report);
|
|
167
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
168
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
async setRainbowEffect() {
|
|
172
|
+
const report = steelseriesAerox5WirelessEncodeRainbowEffect(this.wireless);
|
|
173
|
+
await this.run(async () => {
|
|
174
|
+
await this.open();
|
|
175
|
+
await this.write(report);
|
|
176
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
177
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
async setDefaultLighting(mode) {
|
|
181
|
+
const report = steelseriesAerox5WirelessEncodeDefaultLighting(mode, this.wireless);
|
|
182
|
+
await this.run(async () => {
|
|
183
|
+
await this.open();
|
|
184
|
+
await this.write(report);
|
|
185
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
186
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
async setButtonsMapping(mapping) {
|
|
190
|
+
const report = steelseriesAerox5WirelessEncodeButtonsMapping(mapping, this.wireless);
|
|
191
|
+
await this.run(async () => {
|
|
192
|
+
await this.open();
|
|
193
|
+
await this.write(report);
|
|
194
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
195
|
+
await this.write(steelseriesAerox5WirelessSaveCommand(this.wireless));
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/** `92`/`D2` — battery percentage and charging state. Doubles as the connectivity probe. */
|
|
199
|
+
async probeBattery() {
|
|
200
|
+
const payload = await this.awaitResponse(steelseriesAerox5WirelessBatteryQuery(this.wireless));
|
|
201
|
+
if (!payload) {
|
|
202
|
+
throw new Error("The Aerox 5 Wireless did not answer on this interface. Close SteelSeries GG (and the SteelSeriesEngine service); if it still does not answer, add the device again and choose another entry.");
|
|
203
|
+
}
|
|
204
|
+
return steelseriesAerox5WirelessDecodeBattery(payload);
|
|
205
|
+
}
|
|
206
|
+
async awaitResponse(query) {
|
|
207
|
+
const response = new Promise((resolve) => {
|
|
208
|
+
let timer;
|
|
209
|
+
const finish = (payload) => {
|
|
210
|
+
clearTimeout(timer);
|
|
211
|
+
this.inputWaiters.delete(finish);
|
|
212
|
+
resolve(payload);
|
|
213
|
+
};
|
|
214
|
+
timer = setTimeout(() => finish(null), RESPONSE_TIMEOUT_MS);
|
|
215
|
+
this.inputWaiters.add(finish);
|
|
216
|
+
});
|
|
217
|
+
await this.write(query);
|
|
218
|
+
return await response;
|
|
219
|
+
}
|
|
220
|
+
async write(payload) {
|
|
221
|
+
await this.device.sendReport(AEROX5_WIRELESS_REPORT_ID, payload.buffer);
|
|
222
|
+
}
|
|
223
|
+
delay(milliseconds) {
|
|
224
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
225
|
+
}
|
|
226
|
+
async run(operation) {
|
|
227
|
+
const result = this.queue.then(operation, operation);
|
|
228
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
229
|
+
return await result;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/** The 2.4 GHz dongle-mode PIDs — distinguishes which transform to apply from `wireless: true` in `devices.ts`. */
|
|
233
|
+
const WIRELESS_MODE_PRODUCT_IDS = new Set([0x1852, 0x185c, 0x1860]);
|
|
234
|
+
//# sourceMappingURL=aerox5-wireless-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox5-wireless-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox5-wireless-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
import { type Aerox9WirelessDefaultLighting, type Aerox9WirelessZone } from "@openmouse/protocol/steelseries";
|
|
3
|
+
/**
|
|
4
|
+
* SteelSeries Aerox 9 Wireless WebHID control.
|
|
5
|
+
*
|
|
6
|
+
* One physical mouse, two transport-dependent product-id groups, one class —
|
|
7
|
+
* same architecture as `./aerox5-wireless-hid.ts`: the USB-cabled group
|
|
8
|
+
* (`1038:185A`/`1876` — "wired mode" in rivalcfg's naming) and the 2.4 GHz
|
|
9
|
+
* dongle group (`1038:1858`/`1874`). Both use the exact same command set;
|
|
10
|
+
* only the wireless flag bit (`applyWirelessFlag` in the protocol module)
|
|
11
|
+
* and, per rivalcfg, a longer expected readback differ. `this.wireless` is
|
|
12
|
+
* fixed from the granted device's product id at construction and threaded
|
|
13
|
+
* through every encode call so a client instance never mixes flagged and
|
|
14
|
+
* unflagged commands.
|
|
15
|
+
*
|
|
16
|
+
* DPI presets, polling rate, zone colors, reactive color, sleep/dim timers,
|
|
17
|
+
* rainbow, and default lighting are write-only — neither rivalcfg file for
|
|
18
|
+
* this device defines a getter for any of them, and (see the protocol
|
|
19
|
+
* module's doc comment) this device's rivalcfg profile defines no
|
|
20
|
+
* button-mapping command at all, unlike the Aerox 5 Wireless — so no setter
|
|
21
|
+
* for it exists here either. Battery level **is** readable (`92`/`D2`,
|
|
22
|
+
* 2-byte reply, same shape as the Aerox 5 Wireless) and `readStatus` uses it
|
|
23
|
+
* as the connectivity probe, same role it plays for that device.
|
|
24
|
+
*
|
|
25
|
+
* The config channel is hidapi interface 3, per both rivalcfg files'
|
|
26
|
+
* `"endpoint": 3` model entries; its WebHID collection shape has not been
|
|
27
|
+
* captured yet, so the picker offers every interface and the wrong ones
|
|
28
|
+
* fail the battery probe loudly.
|
|
29
|
+
*/
|
|
30
|
+
export declare class SteelSeriesAerox9WirelessHidClient {
|
|
31
|
+
readonly device: HIDDevice;
|
|
32
|
+
private readonly wireless;
|
|
33
|
+
private queue;
|
|
34
|
+
private listenerAttached;
|
|
35
|
+
private readonly inputWaiters;
|
|
36
|
+
private lastWritten;
|
|
37
|
+
private readonly onInputReport;
|
|
38
|
+
constructor(device: HIDDevice);
|
|
39
|
+
static isSupported(device: HIDDevice): boolean;
|
|
40
|
+
get pollIntervalMs(): number;
|
|
41
|
+
get supportedPollingRates(): number[];
|
|
42
|
+
getDpiOptions(): number[];
|
|
43
|
+
open(): Promise<void>;
|
|
44
|
+
close(): Promise<void>;
|
|
45
|
+
readStatus(): Promise<MouseStatus>;
|
|
46
|
+
/**
|
|
47
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
48
|
+
* does not expose a getter for DPI, so the existing presets cannot be read
|
|
49
|
+
* and preserved — record them in SteelSeries GG before testing.
|
|
50
|
+
*/
|
|
51
|
+
setDpi(dpi: number): Promise<number>;
|
|
52
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
53
|
+
setZoneColor(zone: Aerox9WirelessZone, r: number, g: number, b: number): Promise<void>;
|
|
54
|
+
setReactiveColor(color: {
|
|
55
|
+
r: number;
|
|
56
|
+
g: number;
|
|
57
|
+
b: number;
|
|
58
|
+
} | null): Promise<void>;
|
|
59
|
+
setSleepTimer(minutes: number): Promise<void>;
|
|
60
|
+
setDimTimer(seconds: number): Promise<void>;
|
|
61
|
+
setRainbowEffect(): Promise<void>;
|
|
62
|
+
setDefaultLighting(mode: Aerox9WirelessDefaultLighting): Promise<void>;
|
|
63
|
+
/** `92`/`D2` — battery percentage and charging state. Doubles as the connectivity probe. */
|
|
64
|
+
private probeBattery;
|
|
65
|
+
private awaitResponse;
|
|
66
|
+
private write;
|
|
67
|
+
private delay;
|
|
68
|
+
private run;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=aerox9-wireless-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox9-wireless-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox9-wireless-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAkBL,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kCAAkC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4C;IACzE,OAAO,CAAC,WAAW,CAGjB;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK5B;gBAEU,MAAM,EAAE,SAAS;IAM7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK9C,IAAI,cAAc,IAAI,MAAM,CAAmB;IAE/C,IAAI,qBAAqB,IAAI,MAAM,EAAE,CAA+C;IAEpF,aAAa,IAAI,MAAM,EAAE;IAEnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA+BxC;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtD,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtF,gBAAgB,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC,kBAAkB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5E,4FAA4F;YAC9E,YAAY;YAUZ,aAAa;YAeb,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { AEROX9_WIRELESS_POLLING_RATES, AEROX9_WIRELESS_REPORT_ID, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, steelseriesAerox9WirelessBatteryQuery, steelseriesAerox9WirelessDecodeBattery, steelseriesAerox9WirelessDpiOptions, steelseriesAerox9WirelessEncodeDefaultLighting, steelseriesAerox9WirelessEncodeDimTimer, steelseriesAerox9WirelessEncodeDpiPresets, steelseriesAerox9WirelessEncodePollingRate, steelseriesAerox9WirelessEncodeRainbowEffect, steelseriesAerox9WirelessEncodeReactiveColor, steelseriesAerox9WirelessEncodeSleepTimer, steelseriesAerox9WirelessEncodeZoneColor, steelseriesAerox9WirelessSaveCommand, } from "@openmouse/protocol/steelseries";
|
|
2
|
+
/** rivalcfg's `command_approve_delay`, shared across every SteelSeries family. */
|
|
3
|
+
const COMMAND_DELAY_MS = 50;
|
|
4
|
+
/** rivalcfg reads input-report replies with a 200 ms timeout; allow slack. */
|
|
5
|
+
const RESPONSE_TIMEOUT_MS = 500;
|
|
6
|
+
/** rivalcfg profile default (`aerox9_wireless_wired.py`: "400, 800, 1200, 2400, 3200"). */
|
|
7
|
+
const DEFAULT_DPI = 400;
|
|
8
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
9
|
+
/**
|
|
10
|
+
* SteelSeries Aerox 9 Wireless WebHID control.
|
|
11
|
+
*
|
|
12
|
+
* One physical mouse, two transport-dependent product-id groups, one class —
|
|
13
|
+
* same architecture as `./aerox5-wireless-hid.ts`: the USB-cabled group
|
|
14
|
+
* (`1038:185A`/`1876` — "wired mode" in rivalcfg's naming) and the 2.4 GHz
|
|
15
|
+
* dongle group (`1038:1858`/`1874`). Both use the exact same command set;
|
|
16
|
+
* only the wireless flag bit (`applyWirelessFlag` in the protocol module)
|
|
17
|
+
* and, per rivalcfg, a longer expected readback differ. `this.wireless` is
|
|
18
|
+
* fixed from the granted device's product id at construction and threaded
|
|
19
|
+
* through every encode call so a client instance never mixes flagged and
|
|
20
|
+
* unflagged commands.
|
|
21
|
+
*
|
|
22
|
+
* DPI presets, polling rate, zone colors, reactive color, sleep/dim timers,
|
|
23
|
+
* rainbow, and default lighting are write-only — neither rivalcfg file for
|
|
24
|
+
* this device defines a getter for any of them, and (see the protocol
|
|
25
|
+
* module's doc comment) this device's rivalcfg profile defines no
|
|
26
|
+
* button-mapping command at all, unlike the Aerox 5 Wireless — so no setter
|
|
27
|
+
* for it exists here either. Battery level **is** readable (`92`/`D2`,
|
|
28
|
+
* 2-byte reply, same shape as the Aerox 5 Wireless) and `readStatus` uses it
|
|
29
|
+
* as the connectivity probe, same role it plays for that device.
|
|
30
|
+
*
|
|
31
|
+
* The config channel is hidapi interface 3, per both rivalcfg files'
|
|
32
|
+
* `"endpoint": 3` model entries; its WebHID collection shape has not been
|
|
33
|
+
* captured yet, so the picker offers every interface and the wrong ones
|
|
34
|
+
* fail the battery probe loudly.
|
|
35
|
+
*/
|
|
36
|
+
export class SteelSeriesAerox9WirelessHidClient {
|
|
37
|
+
device;
|
|
38
|
+
wireless;
|
|
39
|
+
queue = Promise.resolve();
|
|
40
|
+
listenerAttached = false;
|
|
41
|
+
inputWaiters = new Set();
|
|
42
|
+
lastWritten = {
|
|
43
|
+
dpi: null,
|
|
44
|
+
pollingRateHz: null,
|
|
45
|
+
};
|
|
46
|
+
onInputReport = (event) => {
|
|
47
|
+
const payload = new Uint8Array(event.data.buffer.slice(event.data.byteOffset, event.data.byteOffset + event.data.byteLength));
|
|
48
|
+
for (const finish of [...this.inputWaiters])
|
|
49
|
+
finish(payload);
|
|
50
|
+
};
|
|
51
|
+
constructor(device) {
|
|
52
|
+
this.device = device;
|
|
53
|
+
this.wireless = STEELSERIES_PRODUCTS.get(device.productId)?.wireless === true
|
|
54
|
+
&& WIRELESS_MODE_PRODUCT_IDS.has(device.productId);
|
|
55
|
+
}
|
|
56
|
+
static isSupported(device) {
|
|
57
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
58
|
+
return false;
|
|
59
|
+
return STEELSERIES_PRODUCTS.get(device.productId)?.family === "aerox9-wireless";
|
|
60
|
+
}
|
|
61
|
+
get pollIntervalMs() { return 30_000; }
|
|
62
|
+
get supportedPollingRates() { return [...AEROX9_WIRELESS_POLLING_RATES]; }
|
|
63
|
+
getDpiOptions() { return steelseriesAerox9WirelessDpiOptions(); }
|
|
64
|
+
async open() {
|
|
65
|
+
if (!this.device.opened)
|
|
66
|
+
await this.device.open();
|
|
67
|
+
if (!this.listenerAttached) {
|
|
68
|
+
this.device.addEventListener("inputreport", this.onInputReport);
|
|
69
|
+
this.listenerAttached = true;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async close() {
|
|
73
|
+
if (this.listenerAttached) {
|
|
74
|
+
this.device.removeEventListener("inputreport", this.onInputReport);
|
|
75
|
+
this.listenerAttached = false;
|
|
76
|
+
}
|
|
77
|
+
if (this.device.opened)
|
|
78
|
+
await this.device.close();
|
|
79
|
+
}
|
|
80
|
+
async readStatus() {
|
|
81
|
+
return await this.run(async () => {
|
|
82
|
+
await this.open();
|
|
83
|
+
const battery = await this.probeBattery();
|
|
84
|
+
const product = STEELSERIES_PRODUCTS.get(this.device.productId);
|
|
85
|
+
const name = this.device.productName?.trim() || `SteelSeries ${product?.model ?? "Aerox 9 Wireless"}`;
|
|
86
|
+
return {
|
|
87
|
+
brand: "SteelSeries",
|
|
88
|
+
name,
|
|
89
|
+
ui: {
|
|
90
|
+
family: "steelseries-aerox9-wireless",
|
|
91
|
+
settingsReady: true,
|
|
92
|
+
valuesVerified: false,
|
|
93
|
+
hideUnsupportedPollingRates: true,
|
|
94
|
+
hideProcessingCard: true,
|
|
95
|
+
pollingNote: "The Aerox 9 Wireless cannot report its current DPI or polling rate; values shown are the last written by this app, or assumed defaults.",
|
|
96
|
+
defaultDisplayName: "SteelSeries Aerox 9 Wireless",
|
|
97
|
+
},
|
|
98
|
+
batteryPercent: battery.level,
|
|
99
|
+
batteryState: battery.isCharging ? "Charging" : "Discharging",
|
|
100
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
101
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
102
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
103
|
+
activeProfile: null,
|
|
104
|
+
connectionType: this.wireless ? "Wireless" : "Wired",
|
|
105
|
+
liftOffDistance: null,
|
|
106
|
+
firmware: [],
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
112
|
+
* does not expose a getter for DPI, so the existing presets cannot be read
|
|
113
|
+
* and preserved — record them in SteelSeries GG before testing.
|
|
114
|
+
*/
|
|
115
|
+
async setDpi(dpi) {
|
|
116
|
+
const report = steelseriesAerox9WirelessEncodeDpiPresets([dpi], 0, this.wireless);
|
|
117
|
+
await this.run(async () => {
|
|
118
|
+
await this.open();
|
|
119
|
+
await this.write(report);
|
|
120
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
121
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
122
|
+
this.lastWritten.dpi = dpi;
|
|
123
|
+
});
|
|
124
|
+
return dpi;
|
|
125
|
+
}
|
|
126
|
+
async setPollingRate(pollingRateHz) {
|
|
127
|
+
const report = steelseriesAerox9WirelessEncodePollingRate(pollingRateHz, this.wireless);
|
|
128
|
+
await this.run(async () => {
|
|
129
|
+
await this.open();
|
|
130
|
+
await this.write(report);
|
|
131
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
132
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
133
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
134
|
+
});
|
|
135
|
+
return pollingRateHz;
|
|
136
|
+
}
|
|
137
|
+
async setZoneColor(zone, r, g, b) {
|
|
138
|
+
const report = steelseriesAerox9WirelessEncodeZoneColor(zone, r, g, b, this.wireless);
|
|
139
|
+
await this.run(async () => {
|
|
140
|
+
await this.open();
|
|
141
|
+
await this.write(report);
|
|
142
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
143
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
async setReactiveColor(color) {
|
|
147
|
+
const report = steelseriesAerox9WirelessEncodeReactiveColor(color, this.wireless);
|
|
148
|
+
await this.run(async () => {
|
|
149
|
+
await this.open();
|
|
150
|
+
await this.write(report);
|
|
151
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
152
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async setSleepTimer(minutes) {
|
|
156
|
+
const report = steelseriesAerox9WirelessEncodeSleepTimer(minutes, this.wireless);
|
|
157
|
+
await this.run(async () => {
|
|
158
|
+
await this.open();
|
|
159
|
+
await this.write(report);
|
|
160
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
161
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
async setDimTimer(seconds) {
|
|
165
|
+
const report = steelseriesAerox9WirelessEncodeDimTimer(seconds, this.wireless);
|
|
166
|
+
await this.run(async () => {
|
|
167
|
+
await this.open();
|
|
168
|
+
await this.write(report);
|
|
169
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
170
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
async setRainbowEffect() {
|
|
174
|
+
const report = steelseriesAerox9WirelessEncodeRainbowEffect(this.wireless);
|
|
175
|
+
await this.run(async () => {
|
|
176
|
+
await this.open();
|
|
177
|
+
await this.write(report);
|
|
178
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
179
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async setDefaultLighting(mode) {
|
|
183
|
+
const report = steelseriesAerox9WirelessEncodeDefaultLighting(mode, this.wireless);
|
|
184
|
+
await this.run(async () => {
|
|
185
|
+
await this.open();
|
|
186
|
+
await this.write(report);
|
|
187
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
188
|
+
await this.write(steelseriesAerox9WirelessSaveCommand(this.wireless));
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/** `92`/`D2` — battery percentage and charging state. Doubles as the connectivity probe. */
|
|
192
|
+
async probeBattery() {
|
|
193
|
+
const payload = await this.awaitResponse(steelseriesAerox9WirelessBatteryQuery(this.wireless));
|
|
194
|
+
if (!payload) {
|
|
195
|
+
throw new Error("The Aerox 9 Wireless did not answer on this interface. Close SteelSeries GG (and the SteelSeriesEngine service); if it still does not answer, add the device again and choose another entry.");
|
|
196
|
+
}
|
|
197
|
+
return steelseriesAerox9WirelessDecodeBattery(payload);
|
|
198
|
+
}
|
|
199
|
+
async awaitResponse(query) {
|
|
200
|
+
const response = new Promise((resolve) => {
|
|
201
|
+
let timer;
|
|
202
|
+
const finish = (payload) => {
|
|
203
|
+
clearTimeout(timer);
|
|
204
|
+
this.inputWaiters.delete(finish);
|
|
205
|
+
resolve(payload);
|
|
206
|
+
};
|
|
207
|
+
timer = setTimeout(() => finish(null), RESPONSE_TIMEOUT_MS);
|
|
208
|
+
this.inputWaiters.add(finish);
|
|
209
|
+
});
|
|
210
|
+
await this.write(query);
|
|
211
|
+
return await response;
|
|
212
|
+
}
|
|
213
|
+
async write(payload) {
|
|
214
|
+
await this.device.sendReport(AEROX9_WIRELESS_REPORT_ID, payload.buffer);
|
|
215
|
+
}
|
|
216
|
+
delay(milliseconds) {
|
|
217
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
218
|
+
}
|
|
219
|
+
async run(operation) {
|
|
220
|
+
const result = this.queue.then(operation, operation);
|
|
221
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
222
|
+
return await result;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/** The 2.4 GHz dongle-mode PIDs — distinguishes which transform to apply from `wireless: true` in `devices.ts`. */
|
|
226
|
+
const WIRELESS_MODE_PRODUCT_IDS = new Set([0x1858, 0x1874]);
|
|
227
|
+
//# sourceMappingURL=aerox9-wireless-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox9-wireless-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox9-wireless-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* SteelSeries Rival 3 Gen 1 WebHID control (`1038:1824`, `1038:184C`).
|
|
4
|
+
*
|
|
5
|
+
* The device is write-only: settings are sent as unnumbered output reports and
|
|
6
|
+
* nothing can be read back except the two-byte firmware version, which this
|
|
7
|
+
* driver uses as its connectivity probe. `readStatus` therefore reports the
|
|
8
|
+
* session's last-written values (or rivalcfg's documented defaults before any
|
|
9
|
+
* write) with `valuesVerified: false` — it never pretends to have read them.
|
|
10
|
+
* Every setter follows its write with the save command so the change persists
|
|
11
|
+
* in the mouse's onboard memory, mirroring rivalcfg's CLI default.
|
|
12
|
+
*
|
|
13
|
+
* The config channel is hidapi interface 3; its WebHID collection shape has
|
|
14
|
+
* not been captured yet, so the picker offers every interface and the wrong
|
|
15
|
+
* ones fail the firmware probe loudly.
|
|
16
|
+
*/
|
|
17
|
+
export declare class SteelSeriesRival3HidClient {
|
|
18
|
+
readonly device: HIDDevice;
|
|
19
|
+
private queue;
|
|
20
|
+
private listenerAttached;
|
|
21
|
+
private readonly inputWaiters;
|
|
22
|
+
private lastWritten;
|
|
23
|
+
private readonly onInputReport;
|
|
24
|
+
constructor(device: HIDDevice);
|
|
25
|
+
static isSupported(device: HIDDevice): boolean;
|
|
26
|
+
get pollIntervalMs(): number;
|
|
27
|
+
get supportedPollingRates(): number[];
|
|
28
|
+
getDpiOptions(): number[];
|
|
29
|
+
open(): Promise<void>;
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
readStatus(): Promise<MouseStatus>;
|
|
32
|
+
/**
|
|
33
|
+
* Replaces the mouse's DPI preset table with a single preset. The device is
|
|
34
|
+
* write-only, so the existing presets cannot be read and preserved — record
|
|
35
|
+
* them in SteelSeries GG before testing, per docs/steelseries-testing.md.
|
|
36
|
+
*/
|
|
37
|
+
setDpi(dpi: number): Promise<number>;
|
|
38
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
39
|
+
/**
|
|
40
|
+
* The `10 00` firmware query is the device's only readable value, so it
|
|
41
|
+
* doubles as the proof that the granted interface is the config channel.
|
|
42
|
+
*/
|
|
43
|
+
private probeFirmware;
|
|
44
|
+
private write;
|
|
45
|
+
private delay;
|
|
46
|
+
private run;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAwBrD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4C;IACzE,OAAO,CAAC,WAAW,CAGjB;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK5B;gBAEU,MAAM,EAAE,SAAS;IAI7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAK9C,IAAI,cAAc,IAAI,MAAM,CAAmB;IAE/C,IAAI,qBAAqB,IAAI,MAAM,EAAE,CAAsC;IAE3E,aAAa,IAAI,MAAM,EAAE;IAEnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA+BxC;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY5D;;;OAGG;YACW,aAAa;YAqBb,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|