@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,182 @@
|
|
|
1
|
+
import { RIVAL310_POLLING_RATES, STEELSERIES_PRODUCTS, STEELSERIES_RIVAL310_REPORT_ID, STEELSERIES_VENDOR_ID, steelseriesRival310DecodeFirmware, steelseriesRival310DpiOptions, steelseriesRival310EncodeButtonsMapping, steelseriesRival310EncodeLedColor, steelseriesRival310EncodePollingRate, steelseriesRival310EncodeSensitivity1, steelseriesRival310FirmwareQuery, steelseriesRival310SaveCommand, } from "@openmouse/protocol/steelseries";
|
|
2
|
+
/** rivalcfg's `command_approve_delay`, shared across every SteelSeries family. */
|
|
3
|
+
const COMMAND_DELAY_MS = 50;
|
|
4
|
+
/** rivalcfg reads the firmware response with a 200 ms timeout; allow slack. */
|
|
5
|
+
const FIRMWARE_TIMEOUT_MS = 500;
|
|
6
|
+
/** rivalcfg profile defaults (`rival310.py`), shown only until this session writes a value. */
|
|
7
|
+
const DEFAULT_DPI = 800;
|
|
8
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
9
|
+
/**
|
|
10
|
+
* SteelSeries Rival 310 WebHID control (`1038:1720`, `1038:171E` CS:GO Howl
|
|
11
|
+
* Edition, `1038:1736` PUBG Edition — one shared command set, see
|
|
12
|
+
* `../../steelseries/rival310.ts`'s doc comment).
|
|
13
|
+
*
|
|
14
|
+
* The device is write-only for settings: only the two-byte firmware version
|
|
15
|
+
* (`90 00`) can be read back, and this driver uses it as its connectivity
|
|
16
|
+
* probe, same pattern as `./hid.ts`'s Rival 3 Gen 1 client. `readStatus`
|
|
17
|
+
* therefore reports the session's last-written DPI/polling values (or
|
|
18
|
+
* rivalcfg's documented defaults before any write) with
|
|
19
|
+
* `valuesVerified: false` — it never pretends to have read them from the
|
|
20
|
+
* mouse. Every setter follows its write with the save command so the change
|
|
21
|
+
* persists in the mouse's onboard memory, mirroring rivalcfg's CLI default.
|
|
22
|
+
*
|
|
23
|
+
* The config channel is hidapi `endpoint 0`, per `rival310.py`'s model
|
|
24
|
+
* entries; its WebHID collection shape has not been captured yet, so the
|
|
25
|
+
* picker offers every interface and the wrong ones fail the firmware probe
|
|
26
|
+
* loudly, same as Rival 3 Gen 1.
|
|
27
|
+
*
|
|
28
|
+
* LED color writes are HID **feature** reports, not output reports (see
|
|
29
|
+
* `steelseriesRival310EncodeLedColor`'s doc comment) — `setLedColor` routes
|
|
30
|
+
* through `device.sendFeatureReport`, unlike every other setter here.
|
|
31
|
+
*/
|
|
32
|
+
export class SteelSeriesRival310HidClient {
|
|
33
|
+
device;
|
|
34
|
+
queue = Promise.resolve();
|
|
35
|
+
listenerAttached = false;
|
|
36
|
+
inputWaiters = new Set();
|
|
37
|
+
lastWritten = {
|
|
38
|
+
dpi: null,
|
|
39
|
+
pollingRateHz: null,
|
|
40
|
+
};
|
|
41
|
+
onInputReport = (event) => {
|
|
42
|
+
const payload = new Uint8Array(event.data.buffer.slice(event.data.byteOffset, event.data.byteOffset + event.data.byteLength));
|
|
43
|
+
for (const finish of [...this.inputWaiters])
|
|
44
|
+
finish(payload);
|
|
45
|
+
};
|
|
46
|
+
constructor(device) {
|
|
47
|
+
this.device = device;
|
|
48
|
+
}
|
|
49
|
+
static isSupported(device) {
|
|
50
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
51
|
+
return false;
|
|
52
|
+
return STEELSERIES_PRODUCTS.get(device.productId)?.family === "rival310";
|
|
53
|
+
}
|
|
54
|
+
get pollIntervalMs() { return 30_000; }
|
|
55
|
+
get supportedPollingRates() { return [...RIVAL310_POLLING_RATES]; }
|
|
56
|
+
getDpiOptions() { return steelseriesRival310DpiOptions(); }
|
|
57
|
+
async open() {
|
|
58
|
+
if (!this.device.opened)
|
|
59
|
+
await this.device.open();
|
|
60
|
+
if (!this.listenerAttached) {
|
|
61
|
+
this.device.addEventListener("inputreport", this.onInputReport);
|
|
62
|
+
this.listenerAttached = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async close() {
|
|
66
|
+
if (this.listenerAttached) {
|
|
67
|
+
this.device.removeEventListener("inputreport", this.onInputReport);
|
|
68
|
+
this.listenerAttached = false;
|
|
69
|
+
}
|
|
70
|
+
if (this.device.opened)
|
|
71
|
+
await this.device.close();
|
|
72
|
+
}
|
|
73
|
+
async readStatus() {
|
|
74
|
+
return await this.run(async () => {
|
|
75
|
+
await this.open();
|
|
76
|
+
const firmware = await this.probeFirmware();
|
|
77
|
+
const product = STEELSERIES_PRODUCTS.get(this.device.productId);
|
|
78
|
+
const name = this.device.productName?.trim() || `SteelSeries ${product?.model ?? "Rival 310"}`;
|
|
79
|
+
return {
|
|
80
|
+
brand: "SteelSeries",
|
|
81
|
+
name,
|
|
82
|
+
ui: {
|
|
83
|
+
family: "steelseries-rival310",
|
|
84
|
+
settingsReady: true,
|
|
85
|
+
valuesVerified: false,
|
|
86
|
+
hideUnsupportedPollingRates: true,
|
|
87
|
+
hideProcessingCard: true,
|
|
88
|
+
pollingNote: "The Rival 310 cannot report its current settings; values shown are the last written by this app, or assumed defaults.",
|
|
89
|
+
defaultDisplayName: "SteelSeries Rival 310",
|
|
90
|
+
},
|
|
91
|
+
batteryPercent: null,
|
|
92
|
+
batteryState: "Unknown",
|
|
93
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
94
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
95
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
96
|
+
activeProfile: null,
|
|
97
|
+
connectionType: "Wired",
|
|
98
|
+
liftOffDistance: null,
|
|
99
|
+
firmware: [firmware.display],
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Writes sensitivity preset 1 only. The device is write-only, so the
|
|
105
|
+
* existing preset 2 and button/lighting configuration cannot be read and
|
|
106
|
+
* preserved — record them before testing, per docs/steelseries-testing.md.
|
|
107
|
+
*/
|
|
108
|
+
async setDpi(dpi) {
|
|
109
|
+
const report = steelseriesRival310EncodeSensitivity1(dpi);
|
|
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(steelseriesRival310SaveCommand());
|
|
115
|
+
this.lastWritten.dpi = dpi;
|
|
116
|
+
});
|
|
117
|
+
return dpi;
|
|
118
|
+
}
|
|
119
|
+
async setPollingRate(pollingRateHz) {
|
|
120
|
+
const report = steelseriesRival310EncodePollingRate(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(steelseriesRival310SaveCommand());
|
|
126
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
127
|
+
});
|
|
128
|
+
return pollingRateHz;
|
|
129
|
+
}
|
|
130
|
+
async setLedColor(led, r, g, b) {
|
|
131
|
+
const report = steelseriesRival310EncodeLedColor(led, r, g, b);
|
|
132
|
+
await this.run(async () => {
|
|
133
|
+
await this.open();
|
|
134
|
+
await this.device.sendFeatureReport(STEELSERIES_RIVAL310_REPORT_ID, report.buffer);
|
|
135
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
136
|
+
await this.write(steelseriesRival310SaveCommand());
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
async setButtonsMapping(mapping) {
|
|
140
|
+
const report = steelseriesRival310EncodeButtonsMapping(mapping);
|
|
141
|
+
await this.run(async () => {
|
|
142
|
+
await this.open();
|
|
143
|
+
await this.write(report);
|
|
144
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
145
|
+
await this.write(steelseriesRival310SaveCommand());
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The `90 00` firmware query is the device's only readable value, so it
|
|
150
|
+
* doubles as the proof that the granted interface is the config channel.
|
|
151
|
+
*/
|
|
152
|
+
async probeFirmware() {
|
|
153
|
+
const response = new Promise((resolve) => {
|
|
154
|
+
let timer;
|
|
155
|
+
const finish = (payload) => {
|
|
156
|
+
clearTimeout(timer);
|
|
157
|
+
this.inputWaiters.delete(finish);
|
|
158
|
+
resolve(payload);
|
|
159
|
+
};
|
|
160
|
+
timer = setTimeout(() => finish(null), FIRMWARE_TIMEOUT_MS);
|
|
161
|
+
this.inputWaiters.add(finish);
|
|
162
|
+
});
|
|
163
|
+
await this.write(steelseriesRival310FirmwareQuery());
|
|
164
|
+
const payload = await response;
|
|
165
|
+
if (!payload) {
|
|
166
|
+
throw new Error("The Rival 310 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.");
|
|
167
|
+
}
|
|
168
|
+
return steelseriesRival310DecodeFirmware(payload);
|
|
169
|
+
}
|
|
170
|
+
async write(payload) {
|
|
171
|
+
await this.device.sendReport(STEELSERIES_RIVAL310_REPORT_ID, payload.buffer);
|
|
172
|
+
}
|
|
173
|
+
delay(milliseconds) {
|
|
174
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
175
|
+
}
|
|
176
|
+
async run(operation) {
|
|
177
|
+
const result = this.queue.then(operation, operation);
|
|
178
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
179
|
+
return await result;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=rival310-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rival310-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/rival310-hid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,qBAAqB,EACrB,iCAAiC,EACjC,6BAA6B,EAC7B,uCAAuC,EACvC,iCAAiC,EACjC,oCAAoC,EACpC,qCAAqC,EACrC,gCAAgC,EAChC,8BAA8B,GAK/B,MAAM,iCAAiC,CAAC;AAEzC,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,+EAA+E;AAC/E,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,+FAA+F;AAC/F,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,4BAA4B;IAC9B,MAAM,CAAY;IACnB,KAAK,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5C,gBAAgB,GAAG,KAAK,CAAC;IAChB,YAAY,GAAG,IAAI,GAAG,EAAiC,CAAC;IACjE,WAAW,GAAyD;QAC1E,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,IAAI;KACpB,CAAC;IAEe,aAAa,GAAG,CAAC,KAA0B,EAAQ,EAAE;QACpE,MAAM,OAAO,GAAG,IAAI,UAAU,CAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAC9F,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAAiB;QAClC,IAAI,MAAM,CAAC,QAAQ,KAAK,qBAAqB;YAAE,OAAO,KAAK,CAAC;QAC5D,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IAC3E,CAAC;IAED,IAAI,cAAc,KAAa,OAAO,MAAM,CAAC,CAAC,CAAC;IAE/C,IAAI,qBAAqB,KAAe,OAAO,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAE7E,aAAa,KAAe,OAAO,6BAA6B,EAAE,CAAC,CAAC,CAAC;IAErE,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACnE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,eAAe,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC;YAC/F,OAAO;gBACL,KAAK,EAAE,aAAa;gBACpB,IAAI;gBACJ,EAAE,EAAE;oBACF,MAAM,EAAE,sBAAsB;oBAC9B,aAAa,EAAE,IAAI;oBACnB,cAAc,EAAE,KAAK;oBACrB,2BAA2B,EAAE,IAAI;oBACjC,kBAAkB,EAAE,IAAI;oBACxB,WAAW,EAAE,uHAAuH;oBACpI,kBAAkB,EAAE,uBAAuB;iBAC5C;gBACD,cAAc,EAAE,IAAI;gBACpB,YAAY,EAAE,SAAS;gBACvB,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,WAAW;gBACxC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,kBAAkB;gBACnE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,OAAO;gBACvB,eAAe,EAAE,IAAI;gBACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,MAAM,GAAG,qCAAqC,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,MAAM,MAAM,GAAG,oCAAoC,CAAC,aAAa,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAgB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QACjE,MAAM,MAAM,GAAG,iCAAiC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,8BAA8B,EAAE,MAAM,CAAC,MAAqB,CAAC,CAAC;YAClG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAkE;QACxF,MAAM,MAAM,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;YAC1D,IAAI,KAAoC,CAAC;YACzC,MAAM,MAAM,GAAG,CAAC,OAA0B,EAAQ,EAAE;gBAClD,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAuC,CAAC,CAAC;gBAClE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC;YACF,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAuC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,uLAAuL,CACxL,CAAC;QACJ,CAAC;QACD,OAAO,iCAAiC,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,OAAmB;QACrC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,8BAA8B,EAAE,OAAO,CAAC,MAAqB,CAAC,CAAC;IAC9F,CAAC;IAEO,KAAK,CAAC,YAAoB;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACrE,CAAC;IAEO,KAAK,CAAC,GAAG,CAAI,SAA2B;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3D,OAAO,MAAM,MAAM,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
import { type Rival650ButtonAction, type Rival650ButtonName } from "@openmouse/protocol/steelseries";
|
|
3
|
+
/**
|
|
4
|
+
* SteelSeries Rival 650 Wireless WebHID control (`1038:172B` wired mode,
|
|
5
|
+
* `1038:1726` 2.4 GHz wireless mode).
|
|
6
|
+
*
|
|
7
|
+
* DPI (two independent presets, `sensitivity1`/`sensitivity2` — this codec
|
|
8
|
+
* exposes `setDpi` against preset 1 only, matching every other SteelSeries
|
|
9
|
+
* family's single-`setDpi` surface), polling rate, lift-off distance,
|
|
10
|
+
* buttons, and the sleep timer are all write-only — `rival650.py` defines no
|
|
11
|
+
* getter for any of them. Unlike `SteelSeriesRival3WirelessHidClient`, this
|
|
12
|
+
* device has **no firmware-query command** at all (`rival650.py` defines no
|
|
13
|
+
* `firmware_version` block), so `readStatus` reports firmware as unknown
|
|
14
|
+
* rather than probing for it. `battery_level` (`AA 01`) is readable and
|
|
15
|
+
* doubles as this client's connectivity probe, same role it plays for the
|
|
16
|
+
* Rival 3 Wireless. `readStatus` therefore has `valuesVerified: false`:
|
|
17
|
+
* DPI, polling rate, and lift-off distance are the session's last-written
|
|
18
|
+
* values (or rivalcfg's documented defaults before any write).
|
|
19
|
+
*
|
|
20
|
+
* The config channel is hidapi interface 0, per `rival650.py`'s
|
|
21
|
+
* `"endpoint": 0` model entries (both PIDs); its WebHID collection shape has
|
|
22
|
+
* not been captured yet, so the picker offers every interface and the wrong
|
|
23
|
+
* ones fail the battery probe loudly.
|
|
24
|
+
*/
|
|
25
|
+
export declare class SteelSeriesRival650HidClient {
|
|
26
|
+
readonly device: HIDDevice;
|
|
27
|
+
private queue;
|
|
28
|
+
private listenerAttached;
|
|
29
|
+
private readonly inputWaiters;
|
|
30
|
+
private lastWritten;
|
|
31
|
+
private readonly onInputReport;
|
|
32
|
+
constructor(device: HIDDevice);
|
|
33
|
+
static isSupported(device: HIDDevice): boolean;
|
|
34
|
+
get pollIntervalMs(): number;
|
|
35
|
+
get supportedPollingRates(): number[];
|
|
36
|
+
getDpiOptions(): number[];
|
|
37
|
+
open(): Promise<void>;
|
|
38
|
+
close(): Promise<void>;
|
|
39
|
+
readStatus(): Promise<MouseStatus>;
|
|
40
|
+
/** `15 01 <v>` — sensitivity preset 1. The device has no getter, so preset 2 is left untouched by this call. */
|
|
41
|
+
setDpi(dpi: number): Promise<number>;
|
|
42
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
43
|
+
/**
|
|
44
|
+
* `20 01 <v>` — lift-off distance, 1–8 mm. Named distinctly from the
|
|
45
|
+
* shared `setLiftOffDistance(lod: "Low" | "Medium" | "High")` surface
|
|
46
|
+
* every other driver implements: the Rival 650's scale is a raw
|
|
47
|
+
* millimeter range with no natural 3-way mapping onto that enum (see the
|
|
48
|
+
* `readStatus` comment above), and giving it the same method name would
|
|
49
|
+
* collapse `SupportedClient`'s intersected parameter type to `never` for
|
|
50
|
+
* every driver, since TypeScript intersects the parameter types of a
|
|
51
|
+
* union of function members. Not currently wired to any UI control.
|
|
52
|
+
*/
|
|
53
|
+
setLiftOffDistanceMm(millimeters: number): Promise<number>;
|
|
54
|
+
/** `2B 01 01 00 00 00 <v>` — idle minutes before sleep, 1–20. */
|
|
55
|
+
setSleepTimer(minutes: number): Promise<void>;
|
|
56
|
+
setButtonsMapping(mapping: Partial<Record<Rival650ButtonName, Rival650ButtonAction>>): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* `AA 01` — battery percentage and charging state. Doubles as the proof
|
|
59
|
+
* that the granted interface is the config channel, same role it plays
|
|
60
|
+
* for `SteelSeriesRival3WirelessHidClient`.
|
|
61
|
+
*/
|
|
62
|
+
private probeBattery;
|
|
63
|
+
private awaitResponse;
|
|
64
|
+
private write;
|
|
65
|
+
private delay;
|
|
66
|
+
private run;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=rival650-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rival650-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/rival650-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAeL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;;GAqBG;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,CAIjB;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;IAoCxC,gHAAgH;IAC1G,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY5D;;;;;;;;;OASG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhE,iEAAiE;IAC3D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1G;;;;OAIG;YACW,YAAY;YAUZ,aAAa;YAeb,KAAK;IAInB,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { RIVAL650_POLLING_RATES, STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, RIVAL650_REPORT_ID, steelseriesRival650BatteryQuery, steelseriesRival650DecodeBattery, steelseriesRival650DpiOptions, steelseriesRival650EncodeButtonsMapping, steelseriesRival650EncodeLiftOffDistance, steelseriesRival650EncodePollingRate, steelseriesRival650EncodeSensitivity1, steelseriesRival650EncodeSleepTimer, steelseriesRival650SaveCommand, } 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 (`rival650.py`: `sensitivity1` default 800). */
|
|
7
|
+
const DEFAULT_DPI = 800;
|
|
8
|
+
const DEFAULT_POLLING_HZ = 1000;
|
|
9
|
+
/**
|
|
10
|
+
* SteelSeries Rival 650 Wireless WebHID control (`1038:172B` wired mode,
|
|
11
|
+
* `1038:1726` 2.4 GHz wireless mode).
|
|
12
|
+
*
|
|
13
|
+
* DPI (two independent presets, `sensitivity1`/`sensitivity2` — this codec
|
|
14
|
+
* exposes `setDpi` against preset 1 only, matching every other SteelSeries
|
|
15
|
+
* family's single-`setDpi` surface), polling rate, lift-off distance,
|
|
16
|
+
* buttons, and the sleep timer are all write-only — `rival650.py` defines no
|
|
17
|
+
* getter for any of them. Unlike `SteelSeriesRival3WirelessHidClient`, this
|
|
18
|
+
* device has **no firmware-query command** at all (`rival650.py` defines no
|
|
19
|
+
* `firmware_version` block), so `readStatus` reports firmware as unknown
|
|
20
|
+
* rather than probing for it. `battery_level` (`AA 01`) is readable and
|
|
21
|
+
* doubles as this client's connectivity probe, same role it plays for the
|
|
22
|
+
* Rival 3 Wireless. `readStatus` therefore has `valuesVerified: false`:
|
|
23
|
+
* DPI, polling rate, and lift-off distance are the session's last-written
|
|
24
|
+
* values (or rivalcfg's documented defaults before any write).
|
|
25
|
+
*
|
|
26
|
+
* The config channel is hidapi interface 0, per `rival650.py`'s
|
|
27
|
+
* `"endpoint": 0` model entries (both PIDs); its WebHID collection shape has
|
|
28
|
+
* not been captured yet, so the picker offers every interface and the wrong
|
|
29
|
+
* ones fail the battery probe loudly.
|
|
30
|
+
*/
|
|
31
|
+
export class SteelSeriesRival650HidClient {
|
|
32
|
+
device;
|
|
33
|
+
queue = Promise.resolve();
|
|
34
|
+
listenerAttached = false;
|
|
35
|
+
inputWaiters = new Set();
|
|
36
|
+
lastWritten = {
|
|
37
|
+
dpi: null,
|
|
38
|
+
pollingRateHz: null,
|
|
39
|
+
liftOffDistance: null,
|
|
40
|
+
};
|
|
41
|
+
onInputReport = (event) => {
|
|
42
|
+
const payload = new Uint8Array(event.data.buffer.slice(event.data.byteOffset, event.data.byteOffset + event.data.byteLength));
|
|
43
|
+
for (const finish of [...this.inputWaiters])
|
|
44
|
+
finish(payload);
|
|
45
|
+
};
|
|
46
|
+
constructor(device) {
|
|
47
|
+
this.device = device;
|
|
48
|
+
}
|
|
49
|
+
static isSupported(device) {
|
|
50
|
+
if (device.vendorId !== STEELSERIES_VENDOR_ID)
|
|
51
|
+
return false;
|
|
52
|
+
return STEELSERIES_PRODUCTS.get(device.productId)?.family === "rival650";
|
|
53
|
+
}
|
|
54
|
+
get pollIntervalMs() { return 30_000; }
|
|
55
|
+
get supportedPollingRates() { return [...RIVAL650_POLLING_RATES]; }
|
|
56
|
+
getDpiOptions() { return steelseriesRival650DpiOptions(); }
|
|
57
|
+
async open() {
|
|
58
|
+
if (!this.device.opened)
|
|
59
|
+
await this.device.open();
|
|
60
|
+
if (!this.listenerAttached) {
|
|
61
|
+
this.device.addEventListener("inputreport", this.onInputReport);
|
|
62
|
+
this.listenerAttached = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async close() {
|
|
66
|
+
if (this.listenerAttached) {
|
|
67
|
+
this.device.removeEventListener("inputreport", this.onInputReport);
|
|
68
|
+
this.listenerAttached = false;
|
|
69
|
+
}
|
|
70
|
+
if (this.device.opened)
|
|
71
|
+
await this.device.close();
|
|
72
|
+
}
|
|
73
|
+
async readStatus() {
|
|
74
|
+
return await this.run(async () => {
|
|
75
|
+
await this.open();
|
|
76
|
+
const battery = await this.probeBattery();
|
|
77
|
+
const product = STEELSERIES_PRODUCTS.get(this.device.productId);
|
|
78
|
+
const name = this.device.productName?.trim() || `SteelSeries ${product?.model ?? "Rival 650 Wireless"}`;
|
|
79
|
+
return {
|
|
80
|
+
brand: "SteelSeries",
|
|
81
|
+
name,
|
|
82
|
+
ui: {
|
|
83
|
+
family: "steelseries-rival650",
|
|
84
|
+
settingsReady: true,
|
|
85
|
+
valuesVerified: false,
|
|
86
|
+
hideUnsupportedPollingRates: true,
|
|
87
|
+
hideProcessingCard: true,
|
|
88
|
+
pollingNote: "The Rival 650 Wireless cannot report its current DPI, polling rate, or lift-off distance; values shown are the last written by this app, or assumed defaults.",
|
|
89
|
+
defaultDisplayName: "SteelSeries Rival 650 Wireless",
|
|
90
|
+
},
|
|
91
|
+
batteryPercent: battery.level,
|
|
92
|
+
batteryState: battery.isCharging ? "Charging" : "Discharging",
|
|
93
|
+
dpi: this.lastWritten.dpi ?? DEFAULT_DPI,
|
|
94
|
+
pollingRateHz: this.lastWritten.pollingRateHz ?? DEFAULT_POLLING_HZ,
|
|
95
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
96
|
+
activeProfile: null,
|
|
97
|
+
connectionType: "Wireless",
|
|
98
|
+
// `MouseStatus.liftOffDistance` is the shared three-stop Low/Medium/
|
|
99
|
+
// High enum; this device's 1–8 mm scale does not map onto it cleanly
|
|
100
|
+
// (same reason every sibling SteelSeries client reports null here),
|
|
101
|
+
// so the raw last-written millimeter value stays internal to this
|
|
102
|
+
// client (`this.lastWritten.liftOffDistance`) rather than surfaced.
|
|
103
|
+
liftOffDistance: null,
|
|
104
|
+
firmware: [],
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/** `15 01 <v>` — sensitivity preset 1. The device has no getter, so preset 2 is left untouched by this call. */
|
|
109
|
+
async setDpi(dpi) {
|
|
110
|
+
const report = steelseriesRival650EncodeSensitivity1(dpi);
|
|
111
|
+
await this.run(async () => {
|
|
112
|
+
await this.open();
|
|
113
|
+
await this.write(report);
|
|
114
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
115
|
+
await this.write(steelseriesRival650SaveCommand());
|
|
116
|
+
this.lastWritten.dpi = dpi;
|
|
117
|
+
});
|
|
118
|
+
return dpi;
|
|
119
|
+
}
|
|
120
|
+
async setPollingRate(pollingRateHz) {
|
|
121
|
+
const report = steelseriesRival650EncodePollingRate(pollingRateHz);
|
|
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(steelseriesRival650SaveCommand());
|
|
127
|
+
this.lastWritten.pollingRateHz = pollingRateHz;
|
|
128
|
+
});
|
|
129
|
+
return pollingRateHz;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* `20 01 <v>` — lift-off distance, 1–8 mm. Named distinctly from the
|
|
133
|
+
* shared `setLiftOffDistance(lod: "Low" | "Medium" | "High")` surface
|
|
134
|
+
* every other driver implements: the Rival 650's scale is a raw
|
|
135
|
+
* millimeter range with no natural 3-way mapping onto that enum (see the
|
|
136
|
+
* `readStatus` comment above), and giving it the same method name would
|
|
137
|
+
* collapse `SupportedClient`'s intersected parameter type to `never` for
|
|
138
|
+
* every driver, since TypeScript intersects the parameter types of a
|
|
139
|
+
* union of function members. Not currently wired to any UI control.
|
|
140
|
+
*/
|
|
141
|
+
async setLiftOffDistanceMm(millimeters) {
|
|
142
|
+
const report = steelseriesRival650EncodeLiftOffDistance(millimeters);
|
|
143
|
+
await this.run(async () => {
|
|
144
|
+
await this.open();
|
|
145
|
+
await this.write(report);
|
|
146
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
147
|
+
await this.write(steelseriesRival650SaveCommand());
|
|
148
|
+
this.lastWritten.liftOffDistance = millimeters;
|
|
149
|
+
});
|
|
150
|
+
return millimeters;
|
|
151
|
+
}
|
|
152
|
+
/** `2B 01 01 00 00 00 <v>` — idle minutes before sleep, 1–20. */
|
|
153
|
+
async setSleepTimer(minutes) {
|
|
154
|
+
const report = steelseriesRival650EncodeSleepTimer(minutes);
|
|
155
|
+
await this.run(async () => {
|
|
156
|
+
await this.open();
|
|
157
|
+
await this.write(report);
|
|
158
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
159
|
+
await this.write(steelseriesRival650SaveCommand());
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
async setButtonsMapping(mapping) {
|
|
163
|
+
const report = steelseriesRival650EncodeButtonsMapping(mapping);
|
|
164
|
+
await this.run(async () => {
|
|
165
|
+
await this.open();
|
|
166
|
+
await this.write(report);
|
|
167
|
+
await this.delay(COMMAND_DELAY_MS);
|
|
168
|
+
await this.write(steelseriesRival650SaveCommand());
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* `AA 01` — battery percentage and charging state. Doubles as the proof
|
|
173
|
+
* that the granted interface is the config channel, same role it plays
|
|
174
|
+
* for `SteelSeriesRival3WirelessHidClient`.
|
|
175
|
+
*/
|
|
176
|
+
async probeBattery() {
|
|
177
|
+
const payload = await this.awaitResponse(steelseriesRival650BatteryQuery());
|
|
178
|
+
if (!payload) {
|
|
179
|
+
throw new Error("The Rival 650 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.");
|
|
180
|
+
}
|
|
181
|
+
return steelseriesRival650DecodeBattery(payload);
|
|
182
|
+
}
|
|
183
|
+
async awaitResponse(query) {
|
|
184
|
+
const response = new Promise((resolve) => {
|
|
185
|
+
let timer;
|
|
186
|
+
const finish = (payload) => {
|
|
187
|
+
clearTimeout(timer);
|
|
188
|
+
this.inputWaiters.delete(finish);
|
|
189
|
+
resolve(payload);
|
|
190
|
+
};
|
|
191
|
+
timer = setTimeout(() => finish(null), RESPONSE_TIMEOUT_MS);
|
|
192
|
+
this.inputWaiters.add(finish);
|
|
193
|
+
});
|
|
194
|
+
await this.write(query);
|
|
195
|
+
return await response;
|
|
196
|
+
}
|
|
197
|
+
async write(payload) {
|
|
198
|
+
await this.device.sendReport(RIVAL650_REPORT_ID, payload.buffer);
|
|
199
|
+
}
|
|
200
|
+
delay(milliseconds) {
|
|
201
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
202
|
+
}
|
|
203
|
+
async run(operation) {
|
|
204
|
+
const result = this.queue.then(operation, operation);
|
|
205
|
+
this.queue = result.then(() => undefined, () => undefined);
|
|
206
|
+
return await result;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=rival650-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rival650-hid.js","sourceRoot":"","sources":["../../../src/drivers/steelseries/rival650-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.js";
|
|
2
|
+
import { type SenseiTenButtonAction, type SenseiTenButtonName, type SenseiTenColorStop, type SenseiTenLed } from "@openmouse/protocol/steelseries";
|
|
3
|
+
/**
|
|
4
|
+
* SteelSeries Sensei TEN WebHID control (`1038:1832`, `1038:1834` CS:GO Neon
|
|
5
|
+
* Rider Edition).
|
|
6
|
+
*
|
|
7
|
+
* The device is write-only for DPI/polling/lighting/buttons: settings are
|
|
8
|
+
* sent as unnumbered output (or, for `logo_color`/`wheel_color`, feature)
|
|
9
|
+
* reports and nothing can be read back except the two-byte firmware
|
|
10
|
+
* version, which this driver uses as its connectivity probe — same pattern
|
|
11
|
+
* as Rival 3 Gen 1's `10 00`, but Sensei TEN's query is `90 00`.
|
|
12
|
+
* `readStatus` therefore reports the session's last-written values (or
|
|
13
|
+
* rivalcfg's documented defaults before any write) with `valuesVerified:
|
|
14
|
+
* false`. Every setter follows its write with the save command so the
|
|
15
|
+
* change persists in the mouse's onboard memory, mirroring rivalcfg's CLI
|
|
16
|
+
* default.
|
|
17
|
+
*
|
|
18
|
+
* The config channel is hidapi `endpoint: 0`, per `sensei_ten.py`'s model
|
|
19
|
+
* entries; its WebHID collection shape has not been captured yet, so the
|
|
20
|
+
* picker offers every interface and the wrong ones fail the firmware probe
|
|
21
|
+
* loudly.
|
|
22
|
+
*
|
|
23
|
+
* See `../../steelseries/sensei-ten.ts`'s doc comment for the full protocol
|
|
24
|
+
* writeup, including the flagged corroboration gap (rivalcfg only — no
|
|
25
|
+
* libratbag or OpenRGB source was reachable for this device).
|
|
26
|
+
*/
|
|
27
|
+
export declare class SteelSeriesSenseiTenHidClient {
|
|
28
|
+
readonly device: HIDDevice;
|
|
29
|
+
private queue;
|
|
30
|
+
private listenerAttached;
|
|
31
|
+
private readonly inputWaiters;
|
|
32
|
+
private lastWritten;
|
|
33
|
+
private readonly onInputReport;
|
|
34
|
+
constructor(device: HIDDevice);
|
|
35
|
+
static isSupported(device: HIDDevice): boolean;
|
|
36
|
+
get pollIntervalMs(): number;
|
|
37
|
+
get supportedPollingRates(): number[];
|
|
38
|
+
getDpiOptions(): number[];
|
|
39
|
+
open(): Promise<void>;
|
|
40
|
+
close(): Promise<void>;
|
|
41
|
+
readStatus(): Promise<MouseStatus>;
|
|
42
|
+
/**
|
|
43
|
+
* Replaces the mouse's DPI preset table with a single preset. The device
|
|
44
|
+
* is write-only, so the existing presets cannot be read and preserved —
|
|
45
|
+
* record them before testing.
|
|
46
|
+
*/
|
|
47
|
+
setDpi(dpi: number): Promise<number>;
|
|
48
|
+
setPollingRate(pollingRateHz: number): Promise<number>;
|
|
49
|
+
/** `5B 00` feature report — see `steelseriesSenseiTenEncodeLedColor`'s doc comment. */
|
|
50
|
+
setLedColor(led: SenseiTenLed, stops: readonly SenseiTenColorStop[], durationMs?: number): Promise<void>;
|
|
51
|
+
setButtonsMapping(mapping?: Partial<Record<SenseiTenButtonName, SenseiTenButtonAction>>): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* The `90 00` firmware query is the device's only readable value, so it
|
|
54
|
+
* doubles as the proof that the granted interface is the config channel.
|
|
55
|
+
*/
|
|
56
|
+
private probeFirmware;
|
|
57
|
+
private write;
|
|
58
|
+
private writeFeature;
|
|
59
|
+
private delay;
|
|
60
|
+
private run;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=sensei-ten-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensei-ten-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/steelseries/sensei-ten-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAcL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAEvB,KAAK,YAAY,EAClB,MAAM,iCAAiC,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,6BAA6B;IACxC,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,CAA0C;IAE/E,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;IA8BxC;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY5D,uFAAuF;IACjF,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,kBAAkB,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxG,iBAAiB,CACrB,OAAO,GAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAsC,GACxG,OAAO,CAAC,IAAI,CAAC;IAUhB;;;OAGG;YACW,aAAa;YAqBb,KAAK;YAIL,YAAY;IAI1B,OAAO,CAAC,KAAK;YAIC,GAAG;CAKlB"}
|