@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,514 @@
|
|
|
1
|
+
import { WE_CMD_GET_POWER, WE_CMD_READ_EEPROM, WE_CMD_WRITE_EEPROM, WE_MAX_EEPROM_CHUNK, WE_OFF, WE_PAYLOAD_LEN, WE_REPORT_ID, weBuildCmdPayload, weBuildReadEepromPayload, weBuildWriteEepromPayload, weDecodeProfile, weEncodeLod, weIsValidCpi, wePackScalarPair, weParseReadEepromResponse, weParseWriteEepromResponse, weEncodeReportRate, weIsValidPollingRate, wePatchActiveDpi, WE_POLLING_RATES, } from "@openmouse/protocol/endgame-gear-we";
|
|
2
|
+
/**
|
|
3
|
+
* Endgame Gear WE-series (OP1we).
|
|
4
|
+
*
|
|
5
|
+
* Cable + wireless dongle: FF02 feature 8 ↔ FF01 input 9, checksum sum-to-0x55.
|
|
6
|
+
* Battery GetPower 0x04; profile ReadEEPROM 0x08 / WriteEEPROM 0x07.
|
|
7
|
+
* Prefer cable when both are present. Wireless uses the same cmds with
|
|
8
|
+
* slightly longer spacing between EEPROM chunks.
|
|
9
|
+
*/
|
|
10
|
+
const EGG_VENDOR_ID = 0x3367;
|
|
11
|
+
const OP1WE_CABLE_PIDS = new Set([0x1962, 0x1972]);
|
|
12
|
+
const OP1WE_RECEIVER_PIDS = new Set([0x1961, 0x1970]);
|
|
13
|
+
/** XM2we receiver revisions observed in WebHID hardware reports. */
|
|
14
|
+
const XM2WE_RECEIVER_PIDS = new Set([0x1960, 0x1968, 0x1982]);
|
|
15
|
+
const EGG_8K_PRODUCT_IDS = new Set([0x1964, 0x1966, 0x1976, 0x1978, 0x1980]);
|
|
16
|
+
/**
|
|
17
|
+
* Wire report ID of the OP1-8K config protocol's command feature report
|
|
18
|
+
* (EGG_REPORT.command in endgame-gear/op1.ts). The OP1w 4K v2 wireless
|
|
19
|
+
* receiver reuses PID 0x1970 from the older, unrelated OP1we dongle
|
|
20
|
+
* (OP1WE_RECEIVER_PIDS below), so PID alone cannot tell them apart — see
|
|
21
|
+
* issue #107. Any device exposing this feature report speaks the OP1-8K
|
|
22
|
+
* protocol and must be left to EggOp1HidClient regardless of its PID.
|
|
23
|
+
*/
|
|
24
|
+
const EGG_OP1_COMMAND_REPORT_ID = 0xa1;
|
|
25
|
+
const USAGE_PAGE_CMD = 0xff02;
|
|
26
|
+
const USAGE_PAGE_NOTIFY = 0xff01;
|
|
27
|
+
const REPORT_NOTIFY = 0x09;
|
|
28
|
+
const CMD_TIMEOUT_MS = 900;
|
|
29
|
+
const WIRED_POLL_INTERVAL_MS = 30_000;
|
|
30
|
+
/** Slower status refresh on the dongle to avoid flooding the RF path. */
|
|
31
|
+
const WIRELESS_POLL_INTERVAL_MS = 45_000;
|
|
32
|
+
const WIRELESS_EEPROM_GAP_MS = 35;
|
|
33
|
+
/** Profile bytes needed for DPI + LOD + debounce (+ stages). */
|
|
34
|
+
const PROFILE_END = 0xb5;
|
|
35
|
+
export class EggWeHidClient {
|
|
36
|
+
/** Max report rate for this model (OEM UI: 125 / 250 / 500 / 1000 Hz). */
|
|
37
|
+
static MAX_POLLING_HZ = 1000;
|
|
38
|
+
cmdDevice = null;
|
|
39
|
+
notifyDevice = null;
|
|
40
|
+
channelsResolved = false;
|
|
41
|
+
responseWaiter = null;
|
|
42
|
+
onInputReport = (event) => {
|
|
43
|
+
if (event.reportId !== REPORT_NOTIFY)
|
|
44
|
+
return;
|
|
45
|
+
const bytes = new Uint8Array(event.data.buffer.slice(event.data.byteOffset, event.data.byteOffset + event.data.byteLength));
|
|
46
|
+
const waiter = this.responseWaiter;
|
|
47
|
+
if (!waiter || bytes[0] !== waiter.command)
|
|
48
|
+
return;
|
|
49
|
+
window.clearTimeout(waiter.timer);
|
|
50
|
+
this.responseWaiter = null;
|
|
51
|
+
waiter.resolve(bytes);
|
|
52
|
+
};
|
|
53
|
+
device;
|
|
54
|
+
constructor(device) {
|
|
55
|
+
this.device = device;
|
|
56
|
+
}
|
|
57
|
+
static fromAuthorizedDevices(devices) {
|
|
58
|
+
const primary = this.pickDevices(devices)[0];
|
|
59
|
+
if (!primary)
|
|
60
|
+
return null;
|
|
61
|
+
const client = new EggWeHidClient(primary);
|
|
62
|
+
client.bindPeers(devices);
|
|
63
|
+
return client;
|
|
64
|
+
}
|
|
65
|
+
static isSupported(device) {
|
|
66
|
+
if (device.vendorId !== EGG_VENDOR_ID)
|
|
67
|
+
return false;
|
|
68
|
+
if (EGG_8K_PRODUCT_IDS.has(device.productId))
|
|
69
|
+
return false;
|
|
70
|
+
// PID-based exclusion above only covers the wired OP1-8K family. A
|
|
71
|
+
// receiver PID here (e.g. 0x1970) can also belong to a newer OP1-8K-v2
|
|
72
|
+
// wireless model that happens to reuse it; the descriptor is the only
|
|
73
|
+
// reliable signal in that case.
|
|
74
|
+
if (this.hasOp1EightKCommandReport(device))
|
|
75
|
+
return false;
|
|
76
|
+
return OP1WE_CABLE_PIDS.has(device.productId)
|
|
77
|
+
|| OP1WE_RECEIVER_PIDS.has(device.productId)
|
|
78
|
+
|| XM2WE_RECEIVER_PIDS.has(device.productId);
|
|
79
|
+
}
|
|
80
|
+
static hasOp1EightKCommandReport(device) {
|
|
81
|
+
return this.listFeatureReports(device).some((report) => report.reportId === EGG_OP1_COMMAND_REPORT_ID);
|
|
82
|
+
}
|
|
83
|
+
static isReceiverDevice(device) {
|
|
84
|
+
if (OP1WE_RECEIVER_PIDS.has(device.productId) || XM2WE_RECEIVER_PIDS.has(device.productId))
|
|
85
|
+
return true;
|
|
86
|
+
const name = (device.productName || "").toLowerCase();
|
|
87
|
+
return name.includes("receiver") || name.includes("dongle");
|
|
88
|
+
}
|
|
89
|
+
static displayNameForDevice(device) {
|
|
90
|
+
const name = (device.productName || "").toLowerCase();
|
|
91
|
+
return XM2WE_RECEIVER_PIDS.has(device.productId) || name.includes("xm2")
|
|
92
|
+
? "Endgame Gear XM2we"
|
|
93
|
+
: "Endgame Gear OP1we";
|
|
94
|
+
}
|
|
95
|
+
static pickDevices(devices) {
|
|
96
|
+
const we = devices.filter((device) => this.isSupported(device));
|
|
97
|
+
if (we.length === 0)
|
|
98
|
+
return [];
|
|
99
|
+
const ranked = [...we].sort((left, right) => {
|
|
100
|
+
const receiverDelta = Number(this.isReceiverDevice(left)) - Number(this.isReceiverDevice(right));
|
|
101
|
+
if (receiverDelta !== 0)
|
|
102
|
+
return receiverDelta;
|
|
103
|
+
return this.supportScore(right) - this.supportScore(left);
|
|
104
|
+
});
|
|
105
|
+
return ranked[0] ? [ranked[0]] : [];
|
|
106
|
+
}
|
|
107
|
+
static supportScore(device) {
|
|
108
|
+
if (!this.isSupported(device))
|
|
109
|
+
return 0;
|
|
110
|
+
let score = 1;
|
|
111
|
+
if (OP1WE_CABLE_PIDS.has(device.productId))
|
|
112
|
+
score += 8;
|
|
113
|
+
if (OP1WE_RECEIVER_PIDS.has(device.productId))
|
|
114
|
+
score += 2;
|
|
115
|
+
if (!this.isReceiverDevice(device))
|
|
116
|
+
score += 4;
|
|
117
|
+
const pages = this.usagePages(device);
|
|
118
|
+
if (pages.has(USAGE_PAGE_CMD))
|
|
119
|
+
score += 10;
|
|
120
|
+
if (pages.has(USAGE_PAGE_NOTIFY))
|
|
121
|
+
score += 10;
|
|
122
|
+
if (pages.has(0xff04))
|
|
123
|
+
score += 4;
|
|
124
|
+
const features = this.listFeatureReports(device);
|
|
125
|
+
const inputs = this.listInputReports(device);
|
|
126
|
+
if (features.some((report) => report.reportId === WE_REPORT_ID && report.payloadLength >= 15))
|
|
127
|
+
score += 6;
|
|
128
|
+
if (inputs.some((report) => report.reportId === REPORT_NOTIFY && report.payloadLength >= 15))
|
|
129
|
+
score += 6;
|
|
130
|
+
if (features.length > 0)
|
|
131
|
+
score += 2;
|
|
132
|
+
return score;
|
|
133
|
+
}
|
|
134
|
+
get pollIntervalMs() {
|
|
135
|
+
return this.isWirelessPath() ? WIRELESS_POLL_INTERVAL_MS : WIRED_POLL_INTERVAL_MS;
|
|
136
|
+
}
|
|
137
|
+
isWirelessPath() {
|
|
138
|
+
return EggWeHidClient.isReceiverDevice(this.device);
|
|
139
|
+
}
|
|
140
|
+
ownsDevice(device) {
|
|
141
|
+
return device === this.device
|
|
142
|
+
|| device === this.cmdDevice
|
|
143
|
+
|| device === this.notifyDevice;
|
|
144
|
+
}
|
|
145
|
+
displayName() {
|
|
146
|
+
const devices = [this.device, this.cmdDevice, this.notifyDevice].filter((device) => device !== null);
|
|
147
|
+
return devices.some((device) => EggWeHidClient.displayNameForDevice(device).includes("XM2we"))
|
|
148
|
+
? "Endgame Gear XM2we"
|
|
149
|
+
: "Endgame Gear OP1we";
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Pair FF02 (cmd) + FF01 (notify) for this transport only.
|
|
153
|
+
* Cable primary → cable peers; receiver primary → receiver peers.
|
|
154
|
+
*/
|
|
155
|
+
bindPeers(devices) {
|
|
156
|
+
const wireless = this.isWirelessPath();
|
|
157
|
+
const peers = devices.filter((candidate) => candidate.vendorId === this.device.vendorId
|
|
158
|
+
&& candidate.productId === this.device.productId
|
|
159
|
+
&& EggWeHidClient.isReceiverDevice(candidate) === wireless);
|
|
160
|
+
const pool = peers.length > 0 ? peers : [this.device];
|
|
161
|
+
const cmd = pool.find((d) => EggWeHidClient.hasCmdChannel(d)) ?? null;
|
|
162
|
+
const notify = pool.find((d) => EggWeHidClient.hasNotifyChannel(d)) ?? null;
|
|
163
|
+
this.cmdDevice = cmd ?? (EggWeHidClient.hasCmdChannel(this.device) ? this.device : null);
|
|
164
|
+
this.notifyDevice = notify
|
|
165
|
+
?? (EggWeHidClient.hasNotifyChannel(this.device) ? this.device : null);
|
|
166
|
+
this.channelsResolved = true;
|
|
167
|
+
}
|
|
168
|
+
async open() {
|
|
169
|
+
if (!this.channelsResolved) {
|
|
170
|
+
const authorized = typeof navigator !== "undefined" && navigator.hid
|
|
171
|
+
? await navigator.hid.getDevices()
|
|
172
|
+
: [];
|
|
173
|
+
this.bindPeers(authorized);
|
|
174
|
+
}
|
|
175
|
+
const channels = this.resolvedChannels();
|
|
176
|
+
if (!channels) {
|
|
177
|
+
if (!this.device.opened)
|
|
178
|
+
await this.device.open();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (!channels.cmd.opened)
|
|
182
|
+
await channels.cmd.open();
|
|
183
|
+
if (channels.notify !== channels.cmd && !channels.notify.opened) {
|
|
184
|
+
await channels.notify.open();
|
|
185
|
+
}
|
|
186
|
+
channels.notify.removeEventListener("inputreport", this.onInputReport);
|
|
187
|
+
channels.notify.addEventListener("inputreport", this.onInputReport);
|
|
188
|
+
}
|
|
189
|
+
describeCollections() {
|
|
190
|
+
const parts = [];
|
|
191
|
+
const cmd = this.cmdDevice ?? this.device;
|
|
192
|
+
const notify = this.notifyDevice;
|
|
193
|
+
const features = EggWeHidClient.listFeatureReports(cmd)
|
|
194
|
+
.map((report) => `feat 0x${report.reportId.toString(16)}/${report.payloadLength}B`);
|
|
195
|
+
if (features.length)
|
|
196
|
+
parts.push(features.join(" · "));
|
|
197
|
+
if (notify) {
|
|
198
|
+
const inputs = EggWeHidClient.listInputReports(notify)
|
|
199
|
+
.filter((report) => report.reportId === REPORT_NOTIFY)
|
|
200
|
+
.map((report) => `in 0x${report.reportId.toString(16)}/${report.payloadLength}B`);
|
|
201
|
+
if (inputs.length)
|
|
202
|
+
parts.push(inputs.join(" · "));
|
|
203
|
+
}
|
|
204
|
+
return parts.join(" · ") || "no vendor reports";
|
|
205
|
+
}
|
|
206
|
+
getDpiOptions() {
|
|
207
|
+
const values = [];
|
|
208
|
+
for (let dpi = 50; dpi <= 12800; dpi += 50)
|
|
209
|
+
values.push(dpi);
|
|
210
|
+
return values;
|
|
211
|
+
}
|
|
212
|
+
get supportedPollingRates() {
|
|
213
|
+
// Same four rates as Endgame Gear WE Series software (upper bound 1000 Hz).
|
|
214
|
+
return [...WE_POLLING_RATES];
|
|
215
|
+
}
|
|
216
|
+
async readStatus() {
|
|
217
|
+
const meta = this.productMeta();
|
|
218
|
+
const wireless = meta.viaReceiver;
|
|
219
|
+
let batteryPercent = null;
|
|
220
|
+
let batteryState = "Unknown";
|
|
221
|
+
let profile = null;
|
|
222
|
+
try {
|
|
223
|
+
await this.open();
|
|
224
|
+
const battery = await this.readBatteryOnce();
|
|
225
|
+
batteryPercent = battery.percent;
|
|
226
|
+
batteryState = battery.state;
|
|
227
|
+
profile = await this.readProfile();
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
console.info("[OpenMouse WE] readStatus failed:", error instanceof Error ? error.message : error);
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
brand: "Endgame Gear",
|
|
234
|
+
name: meta.name,
|
|
235
|
+
batteryPercent,
|
|
236
|
+
batteryState,
|
|
237
|
+
dpi: profile?.dpi ?? 800,
|
|
238
|
+
pollingRateHz: profile?.pollingRateHz ?? 1000,
|
|
239
|
+
supportedPollingRates: this.supportedPollingRates,
|
|
240
|
+
activeProfile: null,
|
|
241
|
+
connectionType: wireless ? "Wireless" : "Wired",
|
|
242
|
+
connectionDetail: wireless ? "2.4 GHz receiver" : "USB",
|
|
243
|
+
debounceMs: null,
|
|
244
|
+
liftOffDistance: profile?.lod ?? null,
|
|
245
|
+
// Do not set eggCpiStages — that flag selects OP1 8K advanced UI.
|
|
246
|
+
firmware: [],
|
|
247
|
+
ui: {
|
|
248
|
+
family: "egg-we",
|
|
249
|
+
settingsReady: profile !== null,
|
|
250
|
+
hideLodLow: true,
|
|
251
|
+
hideUnsupportedPollingRates: true,
|
|
252
|
+
hideProcessingCard: true,
|
|
253
|
+
forceShowBattery: true,
|
|
254
|
+
pollingNote: `${meta.name.replace("Endgame Gear ", "")} supports up to 1,000 Hz (125 / 250 / 500 / 1000).`,
|
|
255
|
+
defaultDisplayName: meta.name,
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
async setDpi(dpi) {
|
|
260
|
+
if (!weIsValidCpi(dpi) || !this.getDpiOptions().includes(dpi)) {
|
|
261
|
+
throw new Error("OP1we CPI must be between 50 and 12,800 in 50 CPI steps.");
|
|
262
|
+
}
|
|
263
|
+
await this.open();
|
|
264
|
+
const mem = await this.readProfileMemory();
|
|
265
|
+
const profile = weDecodeProfile(mem);
|
|
266
|
+
wePatchActiveDpi(mem, dpi, profile.activeDpiLevel);
|
|
267
|
+
const off = WE_OFF.dpiStages + profile.activeDpiLevel * WE_OFF.dpiStageBytes;
|
|
268
|
+
await this.writeEeprom(off, [...mem.subarray(off, off + WE_OFF.dpiStageBytes)]);
|
|
269
|
+
const confirmed = weDecodeProfile(await this.readProfileMemory());
|
|
270
|
+
if (confirmed.dpi !== dpi) {
|
|
271
|
+
throw new Error(`The mouse kept ${confirmed.dpi} CPI instead of ${dpi} CPI.`);
|
|
272
|
+
}
|
|
273
|
+
return confirmed.dpi;
|
|
274
|
+
}
|
|
275
|
+
async setPollingRate(rate) {
|
|
276
|
+
if (!weIsValidPollingRate(rate)) {
|
|
277
|
+
throw new Error("OP1we supports 125, 250, 500, or 1000 Hz report rate.");
|
|
278
|
+
}
|
|
279
|
+
await this.open();
|
|
280
|
+
const encoded = weEncodeReportRate(rate);
|
|
281
|
+
const [v, c] = wePackScalarPair(encoded);
|
|
282
|
+
await this.writeEeprom(WE_OFF.reportRate, [v, c]);
|
|
283
|
+
const confirmed = weDecodeProfile(await this.readProfileMemory());
|
|
284
|
+
if (confirmed.pollingRateHz !== rate) {
|
|
285
|
+
throw new Error(`The mouse kept ${confirmed.pollingRateHz.toLocaleString()} Hz instead of ${rate.toLocaleString()} Hz.`);
|
|
286
|
+
}
|
|
287
|
+
return confirmed.pollingRateHz;
|
|
288
|
+
}
|
|
289
|
+
async setLiftOffDistance(value) {
|
|
290
|
+
if (value === "Low") {
|
|
291
|
+
throw new Error("The OP1we supports Medium or High lift-off distance only.");
|
|
292
|
+
}
|
|
293
|
+
const raw = weEncodeLod(value);
|
|
294
|
+
await this.open();
|
|
295
|
+
const [v, c] = wePackScalarPair(raw);
|
|
296
|
+
await this.writeEeprom(WE_OFF.lod, [v, c]);
|
|
297
|
+
const profile = weDecodeProfile(await this.readProfileMemory());
|
|
298
|
+
if (profile.lod !== value) {
|
|
299
|
+
throw new Error(`The mouse kept ${profile.lod ?? "unknown"} LOD instead of ${value}.`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
async close() {
|
|
303
|
+
if (this.responseWaiter) {
|
|
304
|
+
window.clearTimeout(this.responseWaiter.timer);
|
|
305
|
+
this.responseWaiter.reject(new Error("The OP1we device was closed."));
|
|
306
|
+
this.responseWaiter = null;
|
|
307
|
+
}
|
|
308
|
+
const notify = this.notifyDevice;
|
|
309
|
+
if (notify)
|
|
310
|
+
notify.removeEventListener("inputreport", this.onInputReport);
|
|
311
|
+
const unique = new Set([
|
|
312
|
+
this.device,
|
|
313
|
+
...(this.cmdDevice ? [this.cmdDevice] : []),
|
|
314
|
+
...(this.notifyDevice ? [this.notifyDevice] : []),
|
|
315
|
+
]);
|
|
316
|
+
for (const device of unique) {
|
|
317
|
+
if (device.opened)
|
|
318
|
+
await device.close().catch(() => undefined);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// ---------------------------------------------------------------------------
|
|
322
|
+
// Profile EEPROM
|
|
323
|
+
// ---------------------------------------------------------------------------
|
|
324
|
+
async readProfile() {
|
|
325
|
+
return weDecodeProfile(await this.readProfileMemory());
|
|
326
|
+
}
|
|
327
|
+
async readProfileMemory() {
|
|
328
|
+
const mem = new Uint8Array(PROFILE_END);
|
|
329
|
+
let addr = 0;
|
|
330
|
+
while (addr < PROFILE_END) {
|
|
331
|
+
const len = Math.min(WE_MAX_EEPROM_CHUNK, PROFILE_END - addr);
|
|
332
|
+
const chunk = await this.readEeprom(addr, len);
|
|
333
|
+
mem.set(chunk, addr);
|
|
334
|
+
addr += len;
|
|
335
|
+
// Space RF commands on the dongle so the cursor does not stall.
|
|
336
|
+
if (this.isWirelessPath() && addr < PROFILE_END) {
|
|
337
|
+
await this.delay(WIRELESS_EEPROM_GAP_MS);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return mem;
|
|
341
|
+
}
|
|
342
|
+
async readEeprom(addr, length) {
|
|
343
|
+
const channels = this.requireChannels();
|
|
344
|
+
const payload = weBuildReadEepromPayload(addr, length);
|
|
345
|
+
const response = await this.transact(channels, WE_CMD_READ_EEPROM, payload);
|
|
346
|
+
const data = weParseReadEepromResponse(response, addr, length);
|
|
347
|
+
if (!data) {
|
|
348
|
+
throw new Error(`OP1we ReadEEPROM failed at 0x${addr.toString(16)} len=${length} `
|
|
349
|
+
+ `raw=[${this.toHex(response)}]`);
|
|
350
|
+
}
|
|
351
|
+
return data;
|
|
352
|
+
}
|
|
353
|
+
async writeEeprom(addr, data) {
|
|
354
|
+
const channels = this.requireChannels();
|
|
355
|
+
const payload = weBuildWriteEepromPayload(addr, data);
|
|
356
|
+
const response = await this.transact(channels, WE_CMD_WRITE_EEPROM, payload);
|
|
357
|
+
if (!weParseWriteEepromResponse(response)) {
|
|
358
|
+
throw new Error(`OP1we WriteEEPROM failed at 0x${addr.toString(16)} raw=[${this.toHex(response)}]`);
|
|
359
|
+
}
|
|
360
|
+
if (this.isWirelessPath())
|
|
361
|
+
await this.delay(WIRELESS_EEPROM_GAP_MS);
|
|
362
|
+
}
|
|
363
|
+
delay(milliseconds) {
|
|
364
|
+
return new Promise((resolve) => window.setTimeout(resolve, milliseconds));
|
|
365
|
+
}
|
|
366
|
+
// ---------------------------------------------------------------------------
|
|
367
|
+
// GetPower + transport
|
|
368
|
+
// ---------------------------------------------------------------------------
|
|
369
|
+
productMeta() {
|
|
370
|
+
const viaReceiver = EggWeHidClient.isReceiverDevice(this.device);
|
|
371
|
+
return { name: this.displayName(), wired: !viaReceiver, viaReceiver };
|
|
372
|
+
}
|
|
373
|
+
requireChannels() {
|
|
374
|
+
const channels = this.resolvedChannels();
|
|
375
|
+
if (!channels) {
|
|
376
|
+
throw new Error("OP1we vendor channels missing. Authorize FF02 (command) and FF01 (notify).");
|
|
377
|
+
}
|
|
378
|
+
return channels;
|
|
379
|
+
}
|
|
380
|
+
resolvedChannels() {
|
|
381
|
+
if (!this.cmdDevice || !EggWeHidClient.hasCmdChannel(this.cmdDevice))
|
|
382
|
+
return null;
|
|
383
|
+
const notify = this.notifyDevice
|
|
384
|
+
?? (EggWeHidClient.hasNotifyChannel(this.cmdDevice) ? this.cmdDevice : null);
|
|
385
|
+
if (!notify)
|
|
386
|
+
return null;
|
|
387
|
+
return { cmd: this.cmdDevice, notify };
|
|
388
|
+
}
|
|
389
|
+
async readBatteryOnce() {
|
|
390
|
+
try {
|
|
391
|
+
const channels = this.requireChannels();
|
|
392
|
+
const payload = weBuildCmdPayload(WE_CMD_GET_POWER);
|
|
393
|
+
const response = await this.transact(channels, WE_CMD_GET_POWER, payload);
|
|
394
|
+
const parsed = this.parseGetPowerResponse(response);
|
|
395
|
+
if (parsed.percent === null)
|
|
396
|
+
return { percent: null, state: "Unknown" };
|
|
397
|
+
if (parsed.charging) {
|
|
398
|
+
return { percent: parsed.percent, state: parsed.percent >= 99 ? "Full" : "Charging" };
|
|
399
|
+
}
|
|
400
|
+
return { percent: parsed.percent, state: parsed.percent >= 99 ? "Full" : "Discharging" };
|
|
401
|
+
}
|
|
402
|
+
catch {
|
|
403
|
+
return { percent: null, state: "Unknown" };
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
parseGetPowerResponse(response) {
|
|
407
|
+
let data = response;
|
|
408
|
+
if (data[0] === REPORT_NOTIFY && data.byteLength > WE_PAYLOAD_LEN - 1) {
|
|
409
|
+
data = data.subarray(1);
|
|
410
|
+
}
|
|
411
|
+
if (data.byteLength < 7)
|
|
412
|
+
return { percent: null, charging: false };
|
|
413
|
+
if (data[0] !== WE_CMD_GET_POWER || data[1] !== 0)
|
|
414
|
+
return { percent: null, charging: false };
|
|
415
|
+
const power = data[5];
|
|
416
|
+
if (power === undefined || power > 100)
|
|
417
|
+
return { percent: null, charging: false };
|
|
418
|
+
return { percent: power, charging: (data[6] ?? 0) !== 0 };
|
|
419
|
+
}
|
|
420
|
+
failWaiter(error) {
|
|
421
|
+
const waiter = this.responseWaiter;
|
|
422
|
+
if (!waiter)
|
|
423
|
+
return;
|
|
424
|
+
window.clearTimeout(waiter.timer);
|
|
425
|
+
this.responseWaiter = null;
|
|
426
|
+
waiter.reject(error);
|
|
427
|
+
}
|
|
428
|
+
async transact(channels, command, payload) {
|
|
429
|
+
this.failWaiter(new Error("Superseded by another OP1we request."));
|
|
430
|
+
const responsePromise = new Promise((resolve, reject) => {
|
|
431
|
+
const timer = window.setTimeout(() => {
|
|
432
|
+
if (this.responseWaiter?.resolve === resolve)
|
|
433
|
+
this.responseWaiter = null;
|
|
434
|
+
reject(new Error(`Timed out waiting for OP1we cmd 0x${command.toString(16)}.`));
|
|
435
|
+
}, CMD_TIMEOUT_MS);
|
|
436
|
+
this.responseWaiter = { command, resolve, reject, timer };
|
|
437
|
+
});
|
|
438
|
+
channels.notify.removeEventListener("inputreport", this.onInputReport);
|
|
439
|
+
channels.notify.addEventListener("inputreport", this.onInputReport);
|
|
440
|
+
if (payload.byteLength !== WE_PAYLOAD_LEN) {
|
|
441
|
+
throw new Error("WE payload must be 16 bytes.");
|
|
442
|
+
}
|
|
443
|
+
// Ensure ArrayBuffer-backed view for WebHID typings.
|
|
444
|
+
const copy = new Uint8Array(payload);
|
|
445
|
+
try {
|
|
446
|
+
await channels.cmd.sendFeatureReport(WE_REPORT_ID, copy.buffer);
|
|
447
|
+
}
|
|
448
|
+
catch (error) {
|
|
449
|
+
this.failWaiter(error instanceof Error ? error : new Error(String(error)));
|
|
450
|
+
}
|
|
451
|
+
return responsePromise;
|
|
452
|
+
}
|
|
453
|
+
toHex(bytes) {
|
|
454
|
+
return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join(" ");
|
|
455
|
+
}
|
|
456
|
+
// ---------------------------------------------------------------------------
|
|
457
|
+
// Descriptor helpers
|
|
458
|
+
// ---------------------------------------------------------------------------
|
|
459
|
+
static hasCmdChannel(device) {
|
|
460
|
+
const pages = this.usagePages(device);
|
|
461
|
+
if (pages.has(USAGE_PAGE_CMD))
|
|
462
|
+
return true;
|
|
463
|
+
return this.listFeatureReports(device)
|
|
464
|
+
.some((report) => report.reportId === WE_REPORT_ID && report.payloadLength >= 15);
|
|
465
|
+
}
|
|
466
|
+
static hasNotifyChannel(device) {
|
|
467
|
+
const pages = this.usagePages(device);
|
|
468
|
+
if (pages.has(USAGE_PAGE_NOTIFY))
|
|
469
|
+
return true;
|
|
470
|
+
return this.listInputReports(device)
|
|
471
|
+
.some((report) => report.reportId === REPORT_NOTIFY && report.payloadLength >= 15);
|
|
472
|
+
}
|
|
473
|
+
static usagePages(device) {
|
|
474
|
+
const pages = new Set();
|
|
475
|
+
const visit = (collections) => {
|
|
476
|
+
for (const collection of collections) {
|
|
477
|
+
pages.add(collection.usagePage);
|
|
478
|
+
visit(collection.children);
|
|
479
|
+
}
|
|
480
|
+
};
|
|
481
|
+
visit(device.collections);
|
|
482
|
+
return pages;
|
|
483
|
+
}
|
|
484
|
+
static listFeatureReports(device) {
|
|
485
|
+
return this.listReports(device, "featureReports");
|
|
486
|
+
}
|
|
487
|
+
static listInputReports(device) {
|
|
488
|
+
return this.listReports(device, "inputReports");
|
|
489
|
+
}
|
|
490
|
+
static listReports(device, kind) {
|
|
491
|
+
const found = [];
|
|
492
|
+
const visit = (collections) => {
|
|
493
|
+
for (const collection of collections) {
|
|
494
|
+
for (const report of collection[kind]) {
|
|
495
|
+
found.push({
|
|
496
|
+
reportId: report.reportId,
|
|
497
|
+
payloadLength: this.reportPayloadLength(report),
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
visit(collection.children);
|
|
501
|
+
}
|
|
502
|
+
};
|
|
503
|
+
visit(device.collections);
|
|
504
|
+
return found;
|
|
505
|
+
}
|
|
506
|
+
static reportPayloadLength(report) {
|
|
507
|
+
let bits = 0;
|
|
508
|
+
for (const item of report.items ?? []) {
|
|
509
|
+
bits += item.reportSize * item.reportCount;
|
|
510
|
+
}
|
|
511
|
+
return bits === 0 ? 0 : Math.ceil(bits / 8);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
//# sourceMappingURL=egg-we-hid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"egg-we-hid.js","sourceRoot":"","sources":["../../../src/drivers/endgame/egg-we-hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.ts";
|
|
2
|
+
export declare const CMD: {
|
|
3
|
+
readonly GET_ALL_PARAMS: 159;
|
|
4
|
+
readonly GET_DPI: 144;
|
|
5
|
+
readonly SET_DPI: 16;
|
|
6
|
+
readonly GET_REPORT_RATE: 131;
|
|
7
|
+
readonly SET_REPORT_RATE: 8;
|
|
8
|
+
readonly GET_DEBOUNCE: 132;
|
|
9
|
+
readonly SET_DEBOUNCE: 4;
|
|
10
|
+
readonly SET_PROFILE: 2;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Report rate encoding for Fantech mice.
|
|
14
|
+
*
|
|
15
|
+
* This table is also the single source of truth for `supportedPollingRates`:
|
|
16
|
+
* a rate the driver cannot encode must never reach the UI, which renders one
|
|
17
|
+
* button per advertised rate and would throw on click. 250 Hz is deliberately
|
|
18
|
+
* absent — Fantech's own spec sheet lists it for the WG14P, but its wire
|
|
19
|
+
* encoding has never been captured, and inventing a code byte would silently
|
|
20
|
+
* set some other rate. Add it here, and nowhere else, once a capture confirms
|
|
21
|
+
* the value.
|
|
22
|
+
*/
|
|
23
|
+
export declare const REPORT_RATE_ENCODE: Record<number, number>;
|
|
24
|
+
export declare const REPORT_RATE_DECODE: Record<number, number>;
|
|
25
|
+
export declare const FANTECH_REPORT_ID = 0;
|
|
26
|
+
export declare const FANTECH_REPORT_SIZE = 64;
|
|
27
|
+
/** DPI slots the Family B report layout has room for (bytes [8..23] X, [24..39] Y). */
|
|
28
|
+
export declare const FANTECH_MAX_DPI_SLOTS = 8;
|
|
29
|
+
/**
|
|
30
|
+
* Fantech vendor HID control.
|
|
31
|
+
*
|
|
32
|
+
* Transport: vendor usage page 0xFFFF, usage 0x02 under VID 0x3151.
|
|
33
|
+
* The WG14P Yari Pro exposes a 64-byte feature report on this interface
|
|
34
|
+
* for DPI and configuration settings.
|
|
35
|
+
*
|
|
36
|
+
* Protocol: Fantech command-based protocol (Family B).
|
|
37
|
+
* - Send command as first byte of 64-byte feature report
|
|
38
|
+
* - Read response as 64-byte feature report
|
|
39
|
+
* - DPI stored as LE uint16 in bytes [8+h*2..9+h*2] (X) and [24+h*2..25+h*2] (Y)
|
|
40
|
+
* - Report rate encoded as 0=8000, 1=4000, 2=2000, 3=1000, 4=500, 5=125
|
|
41
|
+
*
|
|
42
|
+
* NOT every VID 0x3151 mouse speaks Family B, and the ones that do not are
|
|
43
|
+
* indistinguishable from the ones that do until you ask them something. The
|
|
44
|
+
* 2.4G receiver sold as PID 0x402D presents byte-for-byte the interface
|
|
45
|
+
* described above — vendor page 0xFFFF, usage 0x02, one unnumbered 64-byte
|
|
46
|
+
* feature report — and ACKs every SET_FEATURE write without error, yet
|
|
47
|
+
* answers GET_DPI, GET_REPORT_RATE, GET_ALL_PARAMS and GET_DEBOUNCE alike
|
|
48
|
+
* with 64 zero bytes (measured on Windows across 0-500ms read delays and
|
|
49
|
+
* three different command layouts).
|
|
50
|
+
*
|
|
51
|
+
* Reading those zeros as data is worse than failing outright: byte 2 of a
|
|
52
|
+
* blank response decodes to report-rate code 0 = 8000 Hz, and a zero DPI used
|
|
53
|
+
* to fall back to 1600, so `readStatus()` returned a perfectly plausible
|
|
54
|
+
* "ready" mouse whose every number was invented. Each read below therefore
|
|
55
|
+
* rejects a blank response, and `readStatus()` throws when nothing answers at
|
|
56
|
+
* all — the caller treats that as "try the next candidate driver" (see
|
|
57
|
+
* `connectToInterface()` in the desktop app under `src/native-hid/scan.ts`).
|
|
58
|
+
*/
|
|
59
|
+
export declare class FantechHidClient {
|
|
60
|
+
device: HIDDevice;
|
|
61
|
+
currentProfile: number;
|
|
62
|
+
constructor(device: HIDDevice);
|
|
63
|
+
static isSupported(device: HIDDevice): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Only the rates this driver can actually put on the wire. Derived from
|
|
66
|
+
* REPORT_RATE_ENCODE so the list the UI renders and the list
|
|
67
|
+
* `setReportRate()` accepts cannot drift apart.
|
|
68
|
+
*/
|
|
69
|
+
get supportedPollingRates(): number[];
|
|
70
|
+
getDpiOptions(): number[];
|
|
71
|
+
open(): Promise<void>;
|
|
72
|
+
close(): Promise<void>;
|
|
73
|
+
/** Send a command and return the raw response, answered or not. */
|
|
74
|
+
sendCommand(cmd: number, ...payload: number[]): Promise<Uint8Array>;
|
|
75
|
+
/**
|
|
76
|
+
* Send a command that must be answered, rejecting a response that carries no
|
|
77
|
+
* answer at all. A device on a different protocol family still ACKs the
|
|
78
|
+
* feature write and hands back a zero-filled buffer, which is exactly what
|
|
79
|
+
* used to be decoded into invented DPI and polling-rate readings — see the
|
|
80
|
+
* class docs.
|
|
81
|
+
*/
|
|
82
|
+
sendQuery(cmd: number, ...payload: number[]): Promise<Uint8Array>;
|
|
83
|
+
/** Read a response report. */
|
|
84
|
+
readResponse(): Promise<Uint8Array>;
|
|
85
|
+
/**
|
|
86
|
+
* Read current DPI settings for the active slot. Throws when the device does
|
|
87
|
+
* not answer, or answers without a usable DPI — a caller must never be handed
|
|
88
|
+
* a fabricated default it cannot tell apart from a real reading.
|
|
89
|
+
*/
|
|
90
|
+
getDpi(): Promise<{
|
|
91
|
+
dpiX: number;
|
|
92
|
+
dpiY: number;
|
|
93
|
+
slot: number;
|
|
94
|
+
numSlots: number;
|
|
95
|
+
}>;
|
|
96
|
+
/** Set DPI for a specific slot, leaving every other slot exactly as it was. */
|
|
97
|
+
setDpiForSlot(dpiX: number, dpiY: number, slot?: number): Promise<number>;
|
|
98
|
+
/** Get current report/polling rate. Throws when the device does not answer. */
|
|
99
|
+
getReportRate(): Promise<number>;
|
|
100
|
+
/** Set report/polling rate. */
|
|
101
|
+
setReportRate(hz: number): Promise<number>;
|
|
102
|
+
readStatus(): Promise<MouseStatus>;
|
|
103
|
+
setDpi(dpi: number, dpiY?: number): Promise<number>;
|
|
104
|
+
setPollingRate(rate: number): Promise<number>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/fantech/hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,eAAO,MAAM,GAAG;;;;;;;;;CAUN,CAAC;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAErD,CAAC;AAEF,eAAO,MAAM,iBAAiB,IAAO,CAAC;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAavC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,gBAAgB;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,cAAc,SAAK;gBAEP,MAAM,EAAE,SAAS;IAI7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAmB9C;;;;OAIG;IACH,IAAI,qBAAqB,IAAI,MAAM,EAAE,CAIpC;IAED,aAAa,IAAI,MAAM,EAAE;IAOnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,mEAAmE;IAC7D,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAUzE;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAevE,8BAA8B;IACxB,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IASzC;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAqBF,+EAA+E;IACzE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAoC1E,+EAA+E;IACzE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAWtC,+BAA+B;IACzB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB1C,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAiDlC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOhD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CASpD"}
|