@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,150 @@
|
|
|
1
|
+
import { PRIME_PLUS_POLLING_RATES, PRIME_PLUS_REPORT_ID, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, steelseriesPrimePlusDpiOptions, steelseriesPrimePlusEncodeButtonsMapping, steelseriesPrimePlusEncodeColor, steelseriesPrimePlusEncodeDpiPresets, steelseriesPrimePlusEncodeLedBrightness, steelseriesPrimePlusEncodePollingRate, steelseriesPrimePlusSaveCommand, } 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 (`prime_plus.py`), shown only until this session writes a value. */
|
|
5
|
+
const DEFAULT_DPI = 400;
|
|
6
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
7
|
+
/**
|
|
8
|
+
* SteelSeries Prime+ WebHID control (`1038:182C`).
|
|
9
|
+
*
|
|
10
|
+
* Like Aerox 3, the Prime+ has **no readable value at all** — no firmware
|
|
11
|
+
* query exists in `prime_plus.py`, so there is nothing to probe the device
|
|
12
|
+
* with. `readStatus` therefore treats a successful `open()` as the only
|
|
13
|
+
* 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 Aerox 3 and Rival 3 Gen 1.
|
|
16
|
+
* Every setter follows its write with the save command so the change
|
|
17
|
+
* persists in the mouse's onboard memory, mirroring rivalcfg's CLI default.
|
|
18
|
+
*
|
|
19
|
+
* The config channel is hidapi interface 0, per `prime_plus.py`'s
|
|
20
|
+
* `"endpoint": 0` model entry; its WebHID collection shape has not been
|
|
21
|
+
* captured yet, so the picker offers every interface.
|
|
22
|
+
*
|
|
23
|
+
* See `../../steelseries/prime-plus.ts`'s doc comment for the full
|
|
24
|
+
* corroboration-gap disclosure (rivalcfg only — libratbag has no Prime/
|
|
25
|
+
* Prime+ support and OpenRGB's SteelSeries controller sources could not be
|
|
26
|
+
* located from this environment) and for why this device's protocol is not
|
|
27
|
+
* distinguishable from plain Prime's despite being its own module here.
|
|
28
|
+
*/
|
|
29
|
+
export class SteelSeriesPrimePlusHidClient {
|
|
30
|
+
device;
|
|
31
|
+
queue = Promise.resolve();
|
|
32
|
+
lastWritten = {
|
|
33
|
+
dpi: null,
|
|
34
|
+
pollingRateHz: null,
|
|
35
|
+
};
|
|
36
|
+
constructor(device) {
|
|
37
|
+
this.device = device;
|
|
38
|
+
}
|
|
39
|
+
static isSupported(device) {
|
|
40
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
41
|
+
return false;
|
|
42
|
+
const product = STEELSERIES_PRODUCTS.get(device.productId);
|
|
43
|
+
return product?.family === "prime-plus";
|
|
44
|
+
}
|
|
45
|
+
get pollIntervalMs() { return 30_000; }
|
|
46
|
+
get supportedPollingRates() { return [...PRIME_PLUS_POLLING_RATES]; }
|
|
47
|
+
getDpiOptions() { return steelseriesPrimePlusDpiOptions(); }
|
|
48
|
+
async open() {
|
|
49
|
+
if (!this.device.opened)
|
|
50
|
+
await this.device.open();
|
|
51
|
+
}
|
|
52
|
+
async close() {
|
|
53
|
+
if (this.device.opened)
|
|
54
|
+
await this.device.close();
|
|
55
|
+
}
|
|
56
|
+
async readStatus() {
|
|
57
|
+
return await this.run(async () => {
|
|
58
|
+
await this.open();
|
|
59
|
+
const name = this.device.productName?.trim() || "SteelSeries Prime+";
|
|
60
|
+
return {
|
|
61
|
+
brand: "SteelSeries",
|
|
62
|
+
name,
|
|
63
|
+
ui: {
|
|
64
|
+
family: "steelseries-prime-plus",
|
|
65
|
+
settingsReady: true,
|
|
66
|
+
valuesVerified: false,
|
|
67
|
+
hideUnsupportedPollingRates: true,
|
|
68
|
+
hideProcessingCard: true,
|
|
69
|
+
pollingNote: "The Prime+ cannot report its current settings; values shown are the last written by this app, or assumed defaults.",
|
|
70
|
+
defaultDisplayName: "SteelSeries Prime+",
|
|
71
|
+
},
|
|
72
|
+
batteryPercent: null,
|
|
73
|
+
batteryState: "Unknown",
|
|
74
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
75
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
76
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
77
|
+
activeProfile: null,
|
|
78
|
+
connectionType: "Wired",
|
|
79
|
+
liftOffDistance: null,
|
|
80
|
+
firmware: [],
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
86
|
+
* is write-only, so the existing presets cannot be read and preserved —
|
|
87
|
+
* record them before testing.
|
|
88
|
+
*/
|
|
89
|
+
async setDpi(dpi) {
|
|
90
|
+
const report = steelseriesPrimePlusEncodeDpiPresets([dpi], 0);
|
|
91
|
+
await this.run(async () => {
|
|
92
|
+
await this.open();
|
|
93
|
+
await this.write(report);
|
|
94
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
95
|
+
await this.write(steelseriesPrimePlusSaveCommand());
|
|
96
|
+
this.lastWritten.dpi = dpi;
|
|
97
|
+
});
|
|
98
|
+
return dpi;
|
|
99
|
+
}
|
|
100
|
+
async setPollingRate(pollingRateHz) {
|
|
101
|
+
const report = steelseriesPrimePlusEncodePollingRate(pollingRateHz);
|
|
102
|
+
await this.run(async () => {
|
|
103
|
+
await this.open();
|
|
104
|
+
await this.write(report);
|
|
105
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
106
|
+
await this.write(steelseriesPrimePlusSaveCommand());
|
|
107
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
108
|
+
});
|
|
109
|
+
return pollingRateHz;
|
|
110
|
+
}
|
|
111
|
+
async setColor(r, g, b) {
|
|
112
|
+
const report = steelseriesPrimePlusEncodeColor(r, g, b);
|
|
113
|
+
await this.run(async () => {
|
|
114
|
+
await this.open();
|
|
115
|
+
await this.write(report);
|
|
116
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
117
|
+
await this.write(steelseriesPrimePlusSaveCommand());
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async setLedBrightness(level) {
|
|
121
|
+
const report = steelseriesPrimePlusEncodeLedBrightness(level);
|
|
122
|
+
await this.run(async () => {
|
|
123
|
+
await this.open();
|
|
124
|
+
await this.write(report);
|
|
125
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
126
|
+
await this.write(steelseriesPrimePlusSaveCommand());
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async setButtonsMapping(mapping) {
|
|
130
|
+
const report = steelseriesPrimePlusEncodeButtonsMapping(mapping);
|
|
131
|
+
await this.run(async () => {
|
|
132
|
+
await this.open();
|
|
133
|
+
await this.write(report);
|
|
134
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
135
|
+
await this.write(steelseriesPrimePlusSaveCommand());
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
async write(payload) {
|
|
139
|
+
await this.device.sendReport(PRIME_PLUS_REPORT_ID, payload.buffer);
|
|
140
|
+
}
|
|
141
|
+
delay(milliseconds) {
|
|
142
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
143
|
+
}
|
|
144
|
+
async run(operation) {
|
|
145
|
+
const result = this.queue.then(operation, operation);
|
|
146
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
147
|
+
return await result;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=prime-plus-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prime-plus-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/prime-plus-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
import { type Rival3WirelessButtonAction, type Rival3WirelessButtonName } from "@openmouse/protocol/steelseries";
|
|
3
|
+
/**
|
|
4
|
+
* SteelSeries Rival 3 Wireless WebHID control (`1038:1830`, 2.4 GHz mode).
|
|
5
|
+
*
|
|
6
|
+
* DPI presets, polling rate, and buttons are write-only, same as Rival 3
|
|
7
|
+
* Gen 1 and Aerox 3 — `rival3_wireless.py` defines no getter for any of the
|
|
8
|
+
* three. Unlike either of those wired devices, this one **is** partially
|
|
9
|
+
* readable: `battery_level` (`AA 01`) reports charge percentage and charging
|
|
10
|
+
* state, and `firmware_version` (`90 00`) reports firmware, both via
|
|
11
|
+
* input-report replies to output-report queries, same pattern as
|
|
12
|
+
* `SteelSeriesRival3HidClient`'s `10 00` probe. `readStatus` uses the
|
|
13
|
+
* battery query as its connectivity probe (it is the value most worth
|
|
14
|
+
* reading live for a wireless mouse) and also reads firmware; DPI and
|
|
15
|
+
* polling rate remain the session's last-written values (or rivalcfg's
|
|
16
|
+
* documented defaults before any write), with `valuesVerified: false`
|
|
17
|
+
* reflecting that those two specific values are still unread.
|
|
18
|
+
*
|
|
19
|
+
* The config channel is hidapi interface 3, per `rival3_wireless.py`'s
|
|
20
|
+
* `"endpoint": 3` model entry; its WebHID collection shape has not been
|
|
21
|
+
* captured yet, so the picker offers every interface and the wrong ones
|
|
22
|
+
* fail the battery probe loudly.
|
|
23
|
+
*/
|
|
24
|
+
export declare class SteelSeriesRival3WirelessHidClient {
|
|
25
|
+
readonly device: HIDDevice;
|
|
26
|
+
private queue;
|
|
27
|
+
private listenerAttached;
|
|
28
|
+
private readonly inputWaiters;
|
|
29
|
+
private lastWritten;
|
|
30
|
+
private readonly onInputReport;
|
|
31
|
+
constructor(device: HIDDevice);
|
|
32
|
+
static isSupported(device: HIDDevice): boolean;
|
|
33
|
+
get pollIntervalMs(): number;
|
|
34
|
+
get supportedPollingRates(): number[];
|
|
35
|
+
getDpiOptions(): number[];
|
|
36
|
+
open(): Promise<void>;
|
|
37
|
+
close(): Promise<void>;
|
|
38
|
+
readStatus(): Promise<MouseStatus>;
|
|
39
|
+
/**
|
|
40
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
41
|
+
* does not expose a getter for DPI, so the existing presets cannot be read
|
|
42
|
+
* and preserved — record them in SteelSeries GG before testing, per
|
|
43
|
+
* docs/steelseries-testing.md.
|
|
44
|
+
*/
|
|
45
|
+
setDpi(dpi: number): Promise<number>;
|
|
46
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
47
|
+
setButtonsMapping(mapping: Partial<Record<Rival3WirelessButtonName, Rival3WirelessButtonAction>>): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* `AA 01` — battery percentage and charging state. Doubles as the proof
|
|
50
|
+
* that the granted interface is the config channel, same role Rival 3
|
|
51
|
+
* Gen 1's firmware probe plays.
|
|
52
|
+
*/
|
|
53
|
+
private probeBattery;
|
|
54
|
+
/** `90 00` — firmware version, read the same way as the battery probe. */
|
|
55
|
+
private probeFirmware;
|
|
56
|
+
private awaitResponse;
|
|
57
|
+
private write;
|
|
58
|
+
private delay;
|
|
59
|
+
private run;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=rival3-wireless-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rival3-wireless-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/rival3-wireless-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAeL,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAE9B,MAAM,iCAAiC,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,kCAAkC;IAC7C,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,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;IAgCxC;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtD,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtH;;;;OAIG;YACW,YAAY;IAU1B,0EAA0E;YAC5D,aAAa;YAQb,aAAa;YAeb,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { RIVAL3_WIRELESS_POLLING_RATES, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, RIVAL3_WIRELESS_REPORT_ID, steelseriesRival3WirelessBatteryQuery, steelseriesRival3WirelessDecodeBattery, steelseriesRival3WirelessDecodeFirmware, steelseriesRival3WirelessDpiOptions, steelseriesRival3WirelessEncodeButtonsMapping, steelseriesRival3WirelessEncodeDpiPresets, steelseriesRival3WirelessEncodePollingRate, steelseriesRival3WirelessFirmwareQuery, steelseriesRival3WirelessSaveCommand, } 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 (`rival3_wireless.py`: "400, 800, 1200, 2400, 3200"). */
|
|
7
|
+
const DEFAULT_DPI = 400;
|
|
8
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
9
|
+
/**
|
|
10
|
+
* SteelSeries Rival 3 Wireless WebHID control (`1038:1830`, 2.4 GHz mode).
|
|
11
|
+
*
|
|
12
|
+
* DPI presets, polling rate, and buttons are write-only, same as Rival 3
|
|
13
|
+
* Gen 1 and Aerox 3 — `rival3_wireless.py` defines no getter for any of the
|
|
14
|
+
* three. Unlike either of those wired devices, this one **is** partially
|
|
15
|
+
* readable: `battery_level` (`AA 01`) reports charge percentage and charging
|
|
16
|
+
* state, and `firmware_version` (`90 00`) reports firmware, both via
|
|
17
|
+
* input-report replies to output-report queries, same pattern as
|
|
18
|
+
* `SteelSeriesRival3HidClient`'s `10 00` probe. `readStatus` uses the
|
|
19
|
+
* battery query as its connectivity probe (it is the value most worth
|
|
20
|
+
* reading live for a wireless mouse) and also reads firmware; DPI and
|
|
21
|
+
* polling rate remain the session's last-written values (or rivalcfg's
|
|
22
|
+
* documented defaults before any write), with `valuesVerified: false`
|
|
23
|
+
* reflecting that those two specific values are still unread.
|
|
24
|
+
*
|
|
25
|
+
* The config channel is hidapi interface 3, per `rival3_wireless.py`'s
|
|
26
|
+
* `"endpoint": 3` model entry; 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 class SteelSeriesRival3WirelessHidClient {
|
|
31
|
+
device;
|
|
32
|
+
queue = Promise.resolve();
|
|
33
|
+
listenerAttached = false;
|
|
34
|
+
inputWaiters = new Set();
|
|
35
|
+
lastWritten = {
|
|
36
|
+
dpi: null,
|
|
37
|
+
pollingRateHz: null,
|
|
38
|
+
};
|
|
39
|
+
onInputReport = (event) => {
|
|
40
|
+
const payload = new Uint8Array(event.data.buffer.slice(event.data.byteOffset, event.data.byteOffset + event.data.byteLength));
|
|
41
|
+
for (const finish of [...this.inputWaiters])
|
|
42
|
+
finish(payload);
|
|
43
|
+
};
|
|
44
|
+
constructor(device) {
|
|
45
|
+
this.device = device;
|
|
46
|
+
}
|
|
47
|
+
static isSupported(device) {
|
|
48
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
49
|
+
return false;
|
|
50
|
+
return STEELSERIES_PRODUCTS.get(device.productId)?.family === "rival3-wireless";
|
|
51
|
+
}
|
|
52
|
+
get pollIntervalMs() { return 30_000; }
|
|
53
|
+
get supportedPollingRates() { return [...RIVAL3_WIRELESS_POLLING_RATES]; }
|
|
54
|
+
getDpiOptions() { return steelseriesRival3WirelessDpiOptions(); }
|
|
55
|
+
async open() {
|
|
56
|
+
if (!this.device.opened)
|
|
57
|
+
await this.device.open();
|
|
58
|
+
if (!this.listenerAttached) {
|
|
59
|
+
this.device.addEventListener("inputreport", this.onInputReport);
|
|
60
|
+
this.listenerAttached = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async close() {
|
|
64
|
+
if (this.listenerAttached) {
|
|
65
|
+
this.device.removeEventListener("inputreport", this.onInputReport);
|
|
66
|
+
this.listenerAttached = false;
|
|
67
|
+
}
|
|
68
|
+
if (this.device.opened)
|
|
69
|
+
await this.device.close();
|
|
70
|
+
}
|
|
71
|
+
async readStatus() {
|
|
72
|
+
return await this.run(async () => {
|
|
73
|
+
await this.open();
|
|
74
|
+
const battery = await this.probeBattery();
|
|
75
|
+
const firmware = await this.probeFirmware();
|
|
76
|
+
const product = STEELSERIES_PRODUCTS.get(this.device.productId);
|
|
77
|
+
const name = this.device.productName?.trim() || `SteelSeries ${product?.model ?? "Rival 3 Wireless"}`;
|
|
78
|
+
return {
|
|
79
|
+
brand: "SteelSeries",
|
|
80
|
+
name,
|
|
81
|
+
ui: {
|
|
82
|
+
family: "steelseries-rival3-wireless",
|
|
83
|
+
settingsReady: true,
|
|
84
|
+
valuesVerified: false,
|
|
85
|
+
hideUnsupportedPollingRates: true,
|
|
86
|
+
hideProcessingCard: true,
|
|
87
|
+
pollingNote: "The Rival 3 Wireless cannot report its current DPI or polling rate; values shown are the last written by this app, or assumed defaults.",
|
|
88
|
+
defaultDisplayName: "SteelSeries Rival 3 Wireless",
|
|
89
|
+
},
|
|
90
|
+
batteryPercent: battery.level,
|
|
91
|
+
batteryState: battery.isCharging ? "Charging" : "Discharging",
|
|
92
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
93
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
94
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
95
|
+
activeProfile: null,
|
|
96
|
+
connectionType: "Wireless",
|
|
97
|
+
liftOffDistance: null,
|
|
98
|
+
firmware: [firmware.display],
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
104
|
+
* does not expose a getter for DPI, so the existing presets cannot be read
|
|
105
|
+
* and preserved — record them in SteelSeries GG before testing, per
|
|
106
|
+
* docs/steelseries-testing.md.
|
|
107
|
+
*/
|
|
108
|
+
async setDpi(dpi) {
|
|
109
|
+
const report = steelseriesRival3WirelessEncodeDpiPresets([dpi], 0);
|
|
110
|
+
await this.run(async () => {
|
|
111
|
+
await this.open();
|
|
112
|
+
await this.write(report);
|
|
113
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
114
|
+
await this.write(steelseriesRival3WirelessSaveCommand());
|
|
115
|
+
this.lastWritten.dpi = dpi;
|
|
116
|
+
});
|
|
117
|
+
return dpi;
|
|
118
|
+
}
|
|
119
|
+
async setPollingRate(pollingRateHz) {
|
|
120
|
+
const report = steelseriesRival3WirelessEncodePollingRate(pollingRateHz);
|
|
121
|
+
await this.run(async () => {
|
|
122
|
+
await this.open();
|
|
123
|
+
await this.write(report);
|
|
124
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
125
|
+
await this.write(steelseriesRival3WirelessSaveCommand());
|
|
126
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
127
|
+
});
|
|
128
|
+
return pollingRateHz;
|
|
129
|
+
}
|
|
130
|
+
async setButtonsMapping(mapping) {
|
|
131
|
+
const report = steelseriesRival3WirelessEncodeButtonsMapping(mapping);
|
|
132
|
+
await this.run(async () => {
|
|
133
|
+
await this.open();
|
|
134
|
+
await this.write(report);
|
|
135
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
136
|
+
await this.write(steelseriesRival3WirelessSaveCommand());
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* `AA 01` — battery percentage and charging state. Doubles as the proof
|
|
141
|
+
* that the granted interface is the config channel, same role Rival 3
|
|
142
|
+
* Gen 1's firmware probe plays.
|
|
143
|
+
*/
|
|
144
|
+
async probeBattery() {
|
|
145
|
+
const payload = await this.awaitResponse(steelseriesRival3WirelessBatteryQuery());
|
|
146
|
+
if (!payload) {
|
|
147
|
+
throw new Error("The Rival 3 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.");
|
|
148
|
+
}
|
|
149
|
+
return steelseriesRival3WirelessDecodeBattery(payload);
|
|
150
|
+
}
|
|
151
|
+
/** `90 00` — firmware version, read the same way as the battery probe. */
|
|
152
|
+
async probeFirmware() {
|
|
153
|
+
const payload = await this.awaitResponse(steelseriesRival3WirelessFirmwareQuery());
|
|
154
|
+
if (!payload) {
|
|
155
|
+
throw new Error("The Rival 3 Wireless did not answer the firmware query on this interface.");
|
|
156
|
+
}
|
|
157
|
+
return steelseriesRival3WirelessDecodeFirmware(payload);
|
|
158
|
+
}
|
|
159
|
+
async awaitResponse(query) {
|
|
160
|
+
const response = new Promise((resolve) => {
|
|
161
|
+
let timer;
|
|
162
|
+
const finish = (payload) => {
|
|
163
|
+
clearTimeout(timer);
|
|
164
|
+
this.inputWaiters.delete(finish);
|
|
165
|
+
resolve(payload);
|
|
166
|
+
};
|
|
167
|
+
timer = setTimeout(() => finish(null), RESPONSE_TIMEOUT_MS);
|
|
168
|
+
this.inputWaiters.add(finish);
|
|
169
|
+
});
|
|
170
|
+
await this.write(query);
|
|
171
|
+
return await response;
|
|
172
|
+
}
|
|
173
|
+
async write(payload) {
|
|
174
|
+
await this.device.sendReport(RIVAL3_WIRELESS_REPORT_ID, payload.buffer);
|
|
175
|
+
}
|
|
176
|
+
delay(milliseconds) {
|
|
177
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
178
|
+
}
|
|
179
|
+
async run(operation) {
|
|
180
|
+
const result = this.queue.then(operation, operation);
|
|
181
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
182
|
+
return await result;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=rival3-wireless-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rival3-wireless-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/rival3-wireless-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
import { type Rival310ButtonAction, type Rival310ButtonName, type Rival310Led } from "@openmouse/protocol/steelseries";
|
|
3
|
+
/**
|
|
4
|
+
* SteelSeries Rival 310 WebHID control (`1038:1720`, `1038:171E` CS:GO Howl
|
|
5
|
+
* Edition, `1038:1736` PUBG Edition — one shared command set, see
|
|
6
|
+
* `../../steelseries/rival310.ts`'s doc comment).
|
|
7
|
+
*
|
|
8
|
+
* The device is write-only for settings: only the two-byte firmware version
|
|
9
|
+
* (`90 00`) can be read back, and this driver uses it as its connectivity
|
|
10
|
+
* probe, same pattern as `./hid.ts`'s Rival 3 Gen 1 client. `readStatus`
|
|
11
|
+
* therefore reports the session's last-written DPI/polling values (or
|
|
12
|
+
* rivalcfg's documented defaults before any write) with
|
|
13
|
+
* `valuesVerified: false` — it never pretends to have read them from the
|
|
14
|
+
* mouse. Every setter follows its write with the save command so the change
|
|
15
|
+
* persists in the mouse's onboard memory, mirroring rivalcfg's CLI default.
|
|
16
|
+
*
|
|
17
|
+
* The config channel is hidapi `endpoint 0`, per `rival310.py`'s model
|
|
18
|
+
* entries; its WebHID collection shape has not been captured yet, so the
|
|
19
|
+
* picker offers every interface and the wrong ones fail the firmware probe
|
|
20
|
+
* loudly, same as Rival 3 Gen 1.
|
|
21
|
+
*
|
|
22
|
+
* LED color writes are HID **feature** reports, not output reports (see
|
|
23
|
+
* `steelseriesRival310EncodeLedColor`'s doc comment) — `setLedColor` routes
|
|
24
|
+
* through `device.sendFeatureReport`, unlike every other setter here.
|
|
25
|
+
*/
|
|
26
|
+
export declare class SteelSeriesRival310HidClient {
|
|
27
|
+
readonly device: HIDDevice;
|
|
28
|
+
private queue;
|
|
29
|
+
private listenerAttached;
|
|
30
|
+
private readonly inputWaiters;
|
|
31
|
+
private lastWritten;
|
|
32
|
+
private readonly onInputReport;
|
|
33
|
+
constructor(device: HIDDevice);
|
|
34
|
+
static isSupported(device: HIDDevice): boolean;
|
|
35
|
+
get pollIntervalMs(): number;
|
|
36
|
+
get supportedPollingRates(): number[];
|
|
37
|
+
getDpiOptions(): number[];
|
|
38
|
+
open(): Promise<void>;
|
|
39
|
+
close(): Promise<void>;
|
|
40
|
+
readStatus(): Promise<MouseStatus>;
|
|
41
|
+
/**
|
|
42
|
+
* Writes sensitivity preset 1 only. The device is write-only, so the
|
|
43
|
+
* existing preset 2 and button/lighting configuration cannot be read and
|
|
44
|
+
* preserved — record them before testing, per docs/steelseries-testing.md.
|
|
45
|
+
*/
|
|
46
|
+
setDpi(dpi: number): Promise<number>;
|
|
47
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
48
|
+
setLedColor(led: Rival310Led, r: number, g: number, b: number): Promise<void>;
|
|
49
|
+
setButtonsMapping(mapping: Partial<Record<Rival310ButtonName, Rival310ButtonAction>>): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* The `90 00` firmware query is the device's only readable value, so it
|
|
52
|
+
* doubles as the proof that the granted interface is the config channel.
|
|
53
|
+
*/
|
|
54
|
+
private probeFirmware;
|
|
55
|
+
private write;
|
|
56
|
+
private delay;
|
|
57
|
+
private run;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=rival310-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rival310-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/rival310-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAaL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAEjB,MAAM,iCAAiC,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,4BAA4B;IACvC,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,CAAwC;IAE7E,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,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7E,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1G;;;OAGG;YACW,aAAa;YAqBb,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|