@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,172 @@
|
|
|
1
|
+
import { AEROX3_POLLING_RATES, AEROX3_REPORT_ID, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, steelseriesAerox3DpiOptions, steelseriesAerox3EncodeButtonsMapping, steelseriesAerox3EncodeDefaultLighting, steelseriesAerox3EncodeDpiPresets, steelseriesAerox3EncodeLedBrightness, steelseriesAerox3EncodePollingRate, steelseriesAerox3EncodeRainbowEffect, steelseriesAerox3EncodeReactiveColor, steelseriesAerox3EncodeZoneColor, steelseriesAerox3SaveCommand, } from "@openmouse/protocol/steelseries";
|
|
2
|
+
/** rivalcfg's `command_approve_delay`, shared across every SteelSeries family. */
|
|
3
|
+
const COMMAND_DELAY_MS = 50;
|
|
4
|
+
/** rivalcfg profile defaults (`aerox3.py`), shown only until this session writes a value. */
|
|
5
|
+
const DEFAULT_DPI = 800;
|
|
6
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
7
|
+
/**
|
|
8
|
+
* SteelSeries Aerox 3 WebHID control (`1038:1836`).
|
|
9
|
+
*
|
|
10
|
+
* Unlike Rival 3 Gen 1, the Aerox 3 has **no readable value at all** — no
|
|
11
|
+
* firmware query exists in `aerox3.py`, so there is nothing to probe the
|
|
12
|
+
* device with. `readStatus` therefore treats a successful `open()` as the
|
|
13
|
+
* only available connectivity signal and reports the session's last-written
|
|
14
|
+
* values (or rivalcfg's documented defaults before any write) with
|
|
15
|
+
* `valuesVerified: false`, same honesty policy as Rival 3 Gen 1 but with an
|
|
16
|
+
* even smaller readable surface. Every setter follows its write with the
|
|
17
|
+
* save command so the change persists in the mouse's onboard memory,
|
|
18
|
+
* mirroring rivalcfg's CLI default.
|
|
19
|
+
*
|
|
20
|
+
* The config channel is hidapi interface 3, per `aerox3.py`'s `"endpoint": 3`
|
|
21
|
+
* model entry; its WebHID collection shape has not been captured yet, so the
|
|
22
|
+
* picker offers every interface.
|
|
23
|
+
*/
|
|
24
|
+
export class SteelSeriesAerox3HidClient {
|
|
25
|
+
device;
|
|
26
|
+
queue = Promise.resolve();
|
|
27
|
+
lastWritten = {
|
|
28
|
+
dpi: null,
|
|
29
|
+
pollingRateHz: null,
|
|
30
|
+
};
|
|
31
|
+
constructor(device) {
|
|
32
|
+
this.device = device;
|
|
33
|
+
}
|
|
34
|
+
static isSupported(device) {
|
|
35
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
36
|
+
return false;
|
|
37
|
+
const product = STEELSERIES_PRODUCTS.get(device.productId);
|
|
38
|
+
return product?.family === "aerox3";
|
|
39
|
+
}
|
|
40
|
+
get pollIntervalMs() { return 30_000; }
|
|
41
|
+
get supportedPollingRates() { return [...AEROX3_POLLING_RATES]; }
|
|
42
|
+
getDpiOptions() { return steelseriesAerox3DpiOptions(); }
|
|
43
|
+
async open() {
|
|
44
|
+
if (!this.device.opened)
|
|
45
|
+
await this.device.open();
|
|
46
|
+
}
|
|
47
|
+
async close() {
|
|
48
|
+
if (this.device.opened)
|
|
49
|
+
await this.device.close();
|
|
50
|
+
}
|
|
51
|
+
async readStatus() {
|
|
52
|
+
return await this.run(async () => {
|
|
53
|
+
await this.open();
|
|
54
|
+
const name = this.device.productName?.trim() || "SteelSeries Aerox 3";
|
|
55
|
+
return {
|
|
56
|
+
brand: "SteelSeries",
|
|
57
|
+
name,
|
|
58
|
+
ui: {
|
|
59
|
+
family: "steelseries-aerox3",
|
|
60
|
+
settingsReady: true,
|
|
61
|
+
valuesVerified: false,
|
|
62
|
+
hideUnsupportedPollingRates: true,
|
|
63
|
+
hideProcessingCard: true,
|
|
64
|
+
pollingNote: "The Aerox 3 cannot report its current settings; values shown are the last written by this app, or assumed defaults.",
|
|
65
|
+
defaultDisplayName: "SteelSeries Aerox 3",
|
|
66
|
+
},
|
|
67
|
+
batteryPercent: null,
|
|
68
|
+
batteryState: "Unknown",
|
|
69
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
70
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
71
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
72
|
+
activeProfile: null,
|
|
73
|
+
connectionType: "Wired",
|
|
74
|
+
liftOffDistance: null,
|
|
75
|
+
firmware: [],
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
81
|
+
* is write-only, so the existing presets cannot be read and preserved —
|
|
82
|
+
* record them before testing.
|
|
83
|
+
*/
|
|
84
|
+
async setDpi(dpi) {
|
|
85
|
+
const report = steelseriesAerox3EncodeDpiPresets([dpi], 0);
|
|
86
|
+
await this.run(async () => {
|
|
87
|
+
await this.open();
|
|
88
|
+
await this.write(report);
|
|
89
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
90
|
+
await this.write(steelseriesAerox3SaveCommand());
|
|
91
|
+
this.lastWritten.dpi = dpi;
|
|
92
|
+
});
|
|
93
|
+
return dpi;
|
|
94
|
+
}
|
|
95
|
+
async setPollingRate(pollingRateHz) {
|
|
96
|
+
const report = steelseriesAerox3EncodePollingRate(pollingRateHz);
|
|
97
|
+
await this.run(async () => {
|
|
98
|
+
await this.open();
|
|
99
|
+
await this.write(report);
|
|
100
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
101
|
+
await this.write(steelseriesAerox3SaveCommand());
|
|
102
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
103
|
+
});
|
|
104
|
+
return pollingRateHz;
|
|
105
|
+
}
|
|
106
|
+
async setZoneColor(zone, r, g, b) {
|
|
107
|
+
const report = steelseriesAerox3EncodeZoneColor(zone, r, g, b);
|
|
108
|
+
await this.run(async () => {
|
|
109
|
+
await this.open();
|
|
110
|
+
await this.write(report);
|
|
111
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
112
|
+
await this.write(steelseriesAerox3SaveCommand());
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
async setReactiveColor(color) {
|
|
116
|
+
const report = steelseriesAerox3EncodeReactiveColor(color);
|
|
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(steelseriesAerox3SaveCommand());
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
async setLedBrightness(percent) {
|
|
125
|
+
const report = steelseriesAerox3EncodeLedBrightness(percent);
|
|
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(steelseriesAerox3SaveCommand());
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async setRainbowEffect(zones) {
|
|
134
|
+
const report = steelseriesAerox3EncodeRainbowEffect(zones);
|
|
135
|
+
await this.run(async () => {
|
|
136
|
+
await this.open();
|
|
137
|
+
await this.write(report);
|
|
138
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
139
|
+
await this.write(steelseriesAerox3SaveCommand());
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
async setDefaultLighting(mode) {
|
|
143
|
+
const report = steelseriesAerox3EncodeDefaultLighting(mode);
|
|
144
|
+
await this.run(async () => {
|
|
145
|
+
await this.open();
|
|
146
|
+
await this.write(report);
|
|
147
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
148
|
+
await this.write(steelseriesAerox3SaveCommand());
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
async setButtonsMapping(mapping) {
|
|
152
|
+
const report = steelseriesAerox3EncodeButtonsMapping(mapping);
|
|
153
|
+
await this.run(async () => {
|
|
154
|
+
await this.open();
|
|
155
|
+
await this.write(report);
|
|
156
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
157
|
+
await this.write(steelseriesAerox3SaveCommand());
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
async write(payload) {
|
|
161
|
+
await this.device.sendReport(AEROX3_REPORT_ID, payload.buffer);
|
|
162
|
+
}
|
|
163
|
+
delay(milliseconds) {
|
|
164
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
165
|
+
}
|
|
166
|
+
async run(operation) {
|
|
167
|
+
const result = this.queue.then(operation, operation);
|
|
168
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
169
|
+
return await result;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=aerox3-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox3-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox3-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
import { type Aerox5ButtonAction, type Aerox5ButtonName, type Aerox5DefaultLighting, type Aerox5RainbowZones, type Aerox5Zone } from "@openmouse/protocol/steelseries";
|
|
3
|
+
/**
|
|
4
|
+
* SteelSeries Aerox 5 WebHID control (`1038:1850`, wired-only — see
|
|
5
|
+
* `SteelSeriesAerox5WirelessHidClient` for the separately-sold Aerox 5
|
|
6
|
+
* Wireless, a different command layout entirely).
|
|
7
|
+
*
|
|
8
|
+
* Like Aerox 3, this device has **no readable value at all** — no firmware
|
|
9
|
+
* query exists in `aerox5.py`, so there is nothing to probe the device
|
|
10
|
+
* with. `readStatus` therefore treats a successful `open()` as the only
|
|
11
|
+
* available connectivity signal and reports the session's last-written
|
|
12
|
+
* values (or rivalcfg's documented defaults before any write) with
|
|
13
|
+
* `valuesVerified: false`. Every setter follows its write with the save
|
|
14
|
+
* command so the change persists in the mouse's onboard memory, mirroring
|
|
15
|
+
* rivalcfg's CLI default.
|
|
16
|
+
*
|
|
17
|
+
* The config channel is hidapi interface 3, per `aerox5.py`'s `"endpoint": 3`
|
|
18
|
+
* model entry; its WebHID collection shape has not been captured yet, so the
|
|
19
|
+
* picker offers every interface.
|
|
20
|
+
*/
|
|
21
|
+
export declare class SteelSeriesAerox5HidClient {
|
|
22
|
+
readonly device: HIDDevice;
|
|
23
|
+
private queue;
|
|
24
|
+
private lastWritten;
|
|
25
|
+
constructor(device: HIDDevice);
|
|
26
|
+
static isSupported(device: HIDDevice): boolean;
|
|
27
|
+
get pollIntervalMs(): number;
|
|
28
|
+
get supportedPollingRates(): number[];
|
|
29
|
+
getDpiOptions(): number[];
|
|
30
|
+
open(): Promise<void>;
|
|
31
|
+
close(): Promise<void>;
|
|
32
|
+
readStatus(): Promise<MouseStatus>;
|
|
33
|
+
/**
|
|
34
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
35
|
+
* is write-only, so the existing presets cannot be read and preserved —
|
|
36
|
+
* record them before testing.
|
|
37
|
+
*/
|
|
38
|
+
setDpi(dpi: number): Promise<number>;
|
|
39
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
40
|
+
setZoneColor(zone: Aerox5Zone, r: number, g: number, b: number): Promise<void>;
|
|
41
|
+
setReactiveColor(color: {
|
|
42
|
+
r: number;
|
|
43
|
+
g: number;
|
|
44
|
+
b: number;
|
|
45
|
+
} | null): Promise<void>;
|
|
46
|
+
setLedBrightness(percent: number): Promise<void>;
|
|
47
|
+
setRainbowEffect(zones: Aerox5RainbowZones): Promise<void>;
|
|
48
|
+
setDefaultLighting(mode: Aerox5DefaultLighting): Promise<void>;
|
|
49
|
+
setButtonsMapping(mapping: Partial<Record<Aerox5ButtonName, Aerox5ButtonAction>>): Promise<void>;
|
|
50
|
+
private write;
|
|
51
|
+
private delay;
|
|
52
|
+
private run;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=aerox5-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox5-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox5-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAeL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AAQzC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,WAAW,CAGjB;gBAEU,MAAM,EAAE,SAAS;IAI7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAM9C,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;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA6BxC;;;;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,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9E,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,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAUxF,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { AEROX5_POLLING_RATES, AEROX5_REPORT_ID, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, steelseriesAerox5DpiOptions, steelseriesAerox5EncodeButtonsMapping, steelseriesAerox5EncodeDefaultLighting, steelseriesAerox5EncodeDpiPresets, steelseriesAerox5EncodeLedBrightness, steelseriesAerox5EncodePollingRate, steelseriesAerox5EncodeRainbowEffect, steelseriesAerox5EncodeReactiveColor, steelseriesAerox5EncodeZoneColor, steelseriesAerox5SaveCommand, } from "@openmouse/protocol/steelseries";
|
|
2
|
+
/** rivalcfg's `command_approve_delay`, shared across every SteelSeries family. */
|
|
3
|
+
const COMMAND_DELAY_MS = 50;
|
|
4
|
+
/** rivalcfg profile defaults (`aerox5.py`: "400, 800, 1200, 2400, 3200"). */
|
|
5
|
+
const DEFAULT_DPI = 400;
|
|
6
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
7
|
+
/**
|
|
8
|
+
* SteelSeries Aerox 5 WebHID control (`1038:1850`, wired-only — see
|
|
9
|
+
* `SteelSeriesAerox5WirelessHidClient` for the separately-sold Aerox 5
|
|
10
|
+
* Wireless, a different command layout entirely).
|
|
11
|
+
*
|
|
12
|
+
* Like Aerox 3, this device has **no readable value at all** — no firmware
|
|
13
|
+
* query exists in `aerox5.py`, so there is nothing to probe the device
|
|
14
|
+
* with. `readStatus` therefore treats a successful `open()` as the only
|
|
15
|
+
* available connectivity signal and reports the session's last-written
|
|
16
|
+
* values (or rivalcfg's documented defaults before any write) with
|
|
17
|
+
* `valuesVerified: false`. Every setter follows its write with the save
|
|
18
|
+
* command so the change persists in the mouse's onboard memory, mirroring
|
|
19
|
+
* rivalcfg's CLI default.
|
|
20
|
+
*
|
|
21
|
+
* The config channel is hidapi interface 3, per `aerox5.py`'s `"endpoint": 3`
|
|
22
|
+
* model entry; its WebHID collection shape has not been captured yet, so the
|
|
23
|
+
* picker offers every interface.
|
|
24
|
+
*/
|
|
25
|
+
export class SteelSeriesAerox5HidClient {
|
|
26
|
+
device;
|
|
27
|
+
queue = Promise.resolve();
|
|
28
|
+
lastWritten = {
|
|
29
|
+
dpi: null,
|
|
30
|
+
pollingRateHz: null,
|
|
31
|
+
};
|
|
32
|
+
constructor(device) {
|
|
33
|
+
this.device = device;
|
|
34
|
+
}
|
|
35
|
+
static isSupported(device) {
|
|
36
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
37
|
+
return false;
|
|
38
|
+
const product = STEELSERIES_PRODUCTS.get(device.productId);
|
|
39
|
+
return product?.family === "aerox5";
|
|
40
|
+
}
|
|
41
|
+
get pollIntervalMs() { return 30_000; }
|
|
42
|
+
get supportedPollingRates() { return [...AEROX5_POLLING_RATES]; }
|
|
43
|
+
getDpiOptions() { return steelseriesAerox5DpiOptions(); }
|
|
44
|
+
async open() {
|
|
45
|
+
if (!this.device.opened)
|
|
46
|
+
await this.device.open();
|
|
47
|
+
}
|
|
48
|
+
async close() {
|
|
49
|
+
if (this.device.opened)
|
|
50
|
+
await this.device.close();
|
|
51
|
+
}
|
|
52
|
+
async readStatus() {
|
|
53
|
+
return await this.run(async () => {
|
|
54
|
+
await this.open();
|
|
55
|
+
const name = this.device.productName?.trim() || "SteelSeries Aerox 5";
|
|
56
|
+
return {
|
|
57
|
+
brand: "SteelSeries",
|
|
58
|
+
name,
|
|
59
|
+
ui: {
|
|
60
|
+
family: "steelseries-aerox5",
|
|
61
|
+
settingsReady: true,
|
|
62
|
+
valuesVerified: false,
|
|
63
|
+
hideUnsupportedPollingRates: true,
|
|
64
|
+
hideProcessingCard: true,
|
|
65
|
+
pollingNote: "The Aerox 5 cannot report its current settings; values shown are the last written by this app, or assumed defaults.",
|
|
66
|
+
defaultDisplayName: "SteelSeries Aerox 5",
|
|
67
|
+
},
|
|
68
|
+
batteryPercent: null,
|
|
69
|
+
batteryState: "Unknown",
|
|
70
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
71
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
72
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
73
|
+
activeProfile: null,
|
|
74
|
+
connectionType: "Wired",
|
|
75
|
+
liftOffDistance: null,
|
|
76
|
+
firmware: [],
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
82
|
+
* is write-only, so the existing presets cannot be read and preserved —
|
|
83
|
+
* record them before testing.
|
|
84
|
+
*/
|
|
85
|
+
async setDpi(dpi) {
|
|
86
|
+
const report = steelseriesAerox5EncodeDpiPresets([dpi], 0);
|
|
87
|
+
await this.run(async () => {
|
|
88
|
+
await this.open();
|
|
89
|
+
await this.write(report);
|
|
90
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
91
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
92
|
+
this.lastWritten.dpi = dpi;
|
|
93
|
+
});
|
|
94
|
+
return dpi;
|
|
95
|
+
}
|
|
96
|
+
async setPollingRate(pollingRateHz) {
|
|
97
|
+
const report = steelseriesAerox5EncodePollingRate(pollingRateHz);
|
|
98
|
+
await this.run(async () => {
|
|
99
|
+
await this.open();
|
|
100
|
+
await this.write(report);
|
|
101
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
102
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
103
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
104
|
+
});
|
|
105
|
+
return pollingRateHz;
|
|
106
|
+
}
|
|
107
|
+
async setZoneColor(zone, r, g, b) {
|
|
108
|
+
const report = steelseriesAerox5EncodeZoneColor(zone, r, g, b);
|
|
109
|
+
await this.run(async () => {
|
|
110
|
+
await this.open();
|
|
111
|
+
await this.write(report);
|
|
112
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
113
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async setReactiveColor(color) {
|
|
117
|
+
const report = steelseriesAerox5EncodeReactiveColor(color);
|
|
118
|
+
await this.run(async () => {
|
|
119
|
+
await this.open();
|
|
120
|
+
await this.write(report);
|
|
121
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
122
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
async setLedBrightness(percent) {
|
|
126
|
+
const report = steelseriesAerox5EncodeLedBrightness(percent);
|
|
127
|
+
await this.run(async () => {
|
|
128
|
+
await this.open();
|
|
129
|
+
await this.write(report);
|
|
130
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
131
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async setRainbowEffect(zones) {
|
|
135
|
+
const report = steelseriesAerox5EncodeRainbowEffect(zones);
|
|
136
|
+
await this.run(async () => {
|
|
137
|
+
await this.open();
|
|
138
|
+
await this.write(report);
|
|
139
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
140
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async setDefaultLighting(mode) {
|
|
144
|
+
const report = steelseriesAerox5EncodeDefaultLighting(mode);
|
|
145
|
+
await this.run(async () => {
|
|
146
|
+
await this.open();
|
|
147
|
+
await this.write(report);
|
|
148
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
149
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
async setButtonsMapping(mapping) {
|
|
153
|
+
const report = steelseriesAerox5EncodeButtonsMapping(mapping);
|
|
154
|
+
await this.run(async () => {
|
|
155
|
+
await this.open();
|
|
156
|
+
await this.write(report);
|
|
157
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
158
|
+
await this.write(steelseriesAerox5SaveCommand());
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
async write(payload) {
|
|
162
|
+
await this.device.sendReport(AEROX5_REPORT_ID, payload.buffer);
|
|
163
|
+
}
|
|
164
|
+
delay(milliseconds) {
|
|
165
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
166
|
+
}
|
|
167
|
+
async run(operation) {
|
|
168
|
+
const result = this.queue.then(operation, operation);
|
|
169
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
170
|
+
return await result;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=aerox5-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox5-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox5-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
import { type Aerox5WirelessButtonAction, type Aerox5WirelessButtonName, type Aerox5WirelessDefaultLighting, type Aerox5WirelessZone } from "@openmouse/protocol/steelseries";
|
|
3
|
+
/**
|
|
4
|
+
* SteelSeries Aerox 5 Wireless WebHID control.
|
|
5
|
+
*
|
|
6
|
+
* One physical mouse, two transport-dependent product-id groups, one class:
|
|
7
|
+
* the USB-cabled group (`1038:1854`/`185E`/`1862` — "wired mode" in
|
|
8
|
+
* rivalcfg's naming) and the 2.4 GHz dongle group (`1038:1852`/`185C`/`1860`).
|
|
9
|
+
* Both use the exact same command set; only the wireless flag bit
|
|
10
|
+
* (`applyWirelessFlag` in the protocol module) and, per rivalcfg, a longer
|
|
11
|
+
* expected readback differ. `this.wireless` is fixed from the granted
|
|
12
|
+
* device's product id at construction and threaded through every encode
|
|
13
|
+
* call so a client instance never mixes flagged and unflagged commands.
|
|
14
|
+
*
|
|
15
|
+
* DPI presets, polling rate, zone colors, reactive color, sleep/dim timers,
|
|
16
|
+
* rainbow, default lighting, and buttons are write-only — neither rivalcfg
|
|
17
|
+
* file for this device defines a getter for any of them. Battery level
|
|
18
|
+
* **is** readable (`92`/`D2`, 2-byte reply, different response shape from
|
|
19
|
+
* the Rival 3 Wireless's `AA 01`/3-byte reply — see the protocol module's
|
|
20
|
+
* doc comment) and `readStatus` uses it as the connectivity probe, same
|
|
21
|
+
* role the Rival 3 Wireless's battery probe plays.
|
|
22
|
+
*
|
|
23
|
+
* The config channel is hidapi interface 3, per both rivalcfg files'
|
|
24
|
+
* `"endpoint": 3` model entries; its WebHID collection shape has not been
|
|
25
|
+
* captured yet, so the picker offers every interface and the wrong ones
|
|
26
|
+
* fail the battery probe loudly.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SteelSeriesAerox5WirelessHidClient {
|
|
29
|
+
readonly device: HIDDevice;
|
|
30
|
+
private readonly wireless;
|
|
31
|
+
private queue;
|
|
32
|
+
private listenerAttached;
|
|
33
|
+
private readonly inputWaiters;
|
|
34
|
+
private lastWritten;
|
|
35
|
+
private readonly onInputReport;
|
|
36
|
+
constructor(device: HIDDevice);
|
|
37
|
+
static isSupported(device: HIDDevice): boolean;
|
|
38
|
+
get pollIntervalMs(): number;
|
|
39
|
+
get supportedPollingRates(): number[];
|
|
40
|
+
getDpiOptions(): number[];
|
|
41
|
+
open(): Promise<void>;
|
|
42
|
+
close(): Promise<void>;
|
|
43
|
+
readStatus(): Promise<MouseStatus>;
|
|
44
|
+
/**
|
|
45
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
46
|
+
* does not expose a getter for DPI, so the existing presets cannot be read
|
|
47
|
+
* and preserved — record them in SteelSeries GG before testing.
|
|
48
|
+
*/
|
|
49
|
+
setDpi(dpi: number): Promise<number>;
|
|
50
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
51
|
+
setZoneColor(zone: Aerox5WirelessZone, r: number, g: number, b: number): Promise<void>;
|
|
52
|
+
setReactiveColor(color: {
|
|
53
|
+
r: number;
|
|
54
|
+
g: number;
|
|
55
|
+
b: number;
|
|
56
|
+
} | null): Promise<void>;
|
|
57
|
+
setSleepTimer(minutes: number): Promise<void>;
|
|
58
|
+
setDimTimer(seconds: number): Promise<void>;
|
|
59
|
+
setRainbowEffect(): Promise<void>;
|
|
60
|
+
setDefaultLighting(mode: Aerox5WirelessDefaultLighting): Promise<void>;
|
|
61
|
+
setButtonsMapping(mapping: Partial<Record<Aerox5WirelessButtonName, Aerox5WirelessButtonAction>>): Promise<void>;
|
|
62
|
+
/** `92`/`D2` — battery percentage and charging state. Doubles as the connectivity probe. */
|
|
63
|
+
private probeBattery;
|
|
64
|
+
private awaitResponse;
|
|
65
|
+
private write;
|
|
66
|
+
private delay;
|
|
67
|
+
private run;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=aerox5-wireless-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerox5-wireless-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/aerox5-wireless-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAmBL,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;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;IAUtE,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtH,4FAA4F;YAC9E,YAAY;YAUZ,aAAa;YAeb,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|