@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,513 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.ts";
|
|
2
|
+
import { type IncottDpiAxis, type IncottFireKey, type IncottMacro } from "../../incott/index.ts";
|
|
3
|
+
type LiftOffLevel = "Low" | "Medium" | "High";
|
|
4
|
+
/**
|
|
5
|
+
* The slice of HIDDevice this layer needs for feature-report exchanges, so
|
|
6
|
+
* tests can supply a fake instead of a real WebHID device. A real HIDDevice
|
|
7
|
+
* satisfies this structurally.
|
|
8
|
+
*/
|
|
9
|
+
export interface FeatureTransport {
|
|
10
|
+
sendFeatureReport(reportId: number, data: BufferSource): Promise<void>;
|
|
11
|
+
receiveFeatureReport(reportId: number): Promise<DataView>;
|
|
12
|
+
/**
|
|
13
|
+
* OUTPUT report, used only by the macro upload — every other command in
|
|
14
|
+
* this protocol is an 8-byte FEATURE report. Optional because most
|
|
15
|
+
* transports (and the test fakes that predate macros) have no reason to
|
|
16
|
+
* implement it; `uploadMacro` reports a clear error when it is absent.
|
|
17
|
+
*/
|
|
18
|
+
sendReport?(reportId: number, data: BufferSource): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export interface IncottTransactionOptions {
|
|
21
|
+
/** Delay between sending a request and reading the response. */
|
|
22
|
+
settleMs?: number;
|
|
23
|
+
/** How many reads to attempt before giving up. */
|
|
24
|
+
attempts?: number;
|
|
25
|
+
sleep?: (ms: number) => Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Serializes feature-report request/response pairs for the Incott protocol.
|
|
29
|
+
*
|
|
30
|
+
* The device exposes a single shared response buffer, so overlapping requests
|
|
31
|
+
* and leftover frames both produce values that belong to a different query —
|
|
32
|
+
* probing the same query three times in separate runs returned three
|
|
33
|
+
* different payloads on real hardware. Every request therefore runs alone,
|
|
34
|
+
* discards whatever was already latched, and accepts a frame only when its
|
|
35
|
+
* command and sub-command echo the request. Ported intact from IncottHub
|
|
36
|
+
* (`src/drivers/incott/transaction.ts`), including the stale-frame regression
|
|
37
|
+
* this exists to prevent — the prior-art Go implementation (IncottHIDApp)
|
|
38
|
+
* matches on the command byte alone and is fooled by exactly this.
|
|
39
|
+
*/
|
|
40
|
+
export declare class IncottTransactionQueue {
|
|
41
|
+
private readonly transport;
|
|
42
|
+
private readonly settleMs;
|
|
43
|
+
private readonly attempts;
|
|
44
|
+
private readonly sleep;
|
|
45
|
+
private tail;
|
|
46
|
+
constructor(transport: FeatureTransport, options?: IncottTransactionOptions);
|
|
47
|
+
/**
|
|
48
|
+
* Sends one request and returns the matching response frame, or null when
|
|
49
|
+
* no matching frame arrives. Never rejects: a device that stops answering
|
|
50
|
+
* yields null so the caller can render an em dash instead of a stale value.
|
|
51
|
+
*/
|
|
52
|
+
request(payload: Uint8Array, cmd: number, sub: number | null, axis?: number | null): Promise<Uint8Array | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Sends a write, which the device does not answer. Queued alongside
|
|
55
|
+
* requests so ordering holds, but it never reads: waiting for a response
|
|
56
|
+
* that will never arrive would spend the entire attempt budget per write.
|
|
57
|
+
*/
|
|
58
|
+
send(payload: Uint8Array): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Sends a 32-byte OUTPUT report, the macro upload's data path. Queued with
|
|
61
|
+
* everything else so it cannot interleave with the 8-byte header that
|
|
62
|
+
* announces it, and followed by a settle delay because the vendor waits
|
|
63
|
+
* 80 ms between the two halves of each chunk.
|
|
64
|
+
*/
|
|
65
|
+
sendOutput(reportId: number, payload: Uint8Array): Promise<void>;
|
|
66
|
+
private exchange;
|
|
67
|
+
private read;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Sends the identity query (`09 8f 00`) directly against a transport and
|
|
71
|
+
* checks for a well-formed reply — byte 0 the report id (`0x09`), byte 1 the
|
|
72
|
+
* echoed command (`0x8f`). Never throws: a transport whose `sendFeatureReport`
|
|
73
|
+
* rejects, or that answers with something else entirely, both resolve to
|
|
74
|
+
* `false` (via `IncottTransactionQueue`'s own catch-and-return-null path),
|
|
75
|
+
* exactly like a device that is not there.
|
|
76
|
+
*
|
|
77
|
+
* WHY THIS EXISTS (BUG, hardware-verified 2026-09-08): wired, the mouse
|
|
78
|
+
* exposes TWO top-level collections on usage page `0xFF05` on the same
|
|
79
|
+
* interface — identical as far as vendor/product id and usage page go — but
|
|
80
|
+
* only one of them actually answers feature reports. The other rejects every
|
|
81
|
+
* one at the OS level (`HidD_SetFeature: (0x00000001) Incorrect function` on
|
|
82
|
+
* Windows). Usage page alone cannot tell them apart; only sending something
|
|
83
|
+
* and checking for a real reply can. See `incottSelectCollection` for the
|
|
84
|
+
* ordered probe-and-pick algorithm this backs, and the comment on
|
|
85
|
+
* `IncottHidClient.open()` for why a WebHID-based client can only apply this
|
|
86
|
+
* to the single collection it was handed, not choose between two.
|
|
87
|
+
*/
|
|
88
|
+
export declare function incottProbeCollection(transport: FeatureTransport, options?: IncottTransactionOptions): Promise<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* Picks the first candidate transport whose collection actually answers the
|
|
91
|
+
* identity probe, trying candidates in the given order and moving on to the
|
|
92
|
+
* next one when a candidate throws, never replies, or replies with garbage.
|
|
93
|
+
* Returns `null` when no candidate answers.
|
|
94
|
+
*
|
|
95
|
+
* Candidates must be pre-ordered by the CALLER, most likely first — this
|
|
96
|
+
* function only probes in the order it is given, it does not itself inspect
|
|
97
|
+
* usage pages. This is the general form of the wired dead-collection fix
|
|
98
|
+
* (see `incottProbeCollection`): a transport layer that genuinely has more
|
|
99
|
+
* than one candidate to try (for example a Node-hid-based tool with access
|
|
100
|
+
* to every top-level collection's own path) can use this directly. WebHID
|
|
101
|
+
* cannot: it hands `IncottHidClient` exactly one `HIDDevice` per collection,
|
|
102
|
+
* already chosen by the browser's picker/filters before this driver ever
|
|
103
|
+
* sees it, so `IncottHidClient.open()` uses `incottProbeCollection` on
|
|
104
|
+
* itself instead of calling this with more than one candidate.
|
|
105
|
+
*/
|
|
106
|
+
export declare function incottSelectCollection<T extends FeatureTransport>(candidates: readonly T[], options?: IncottTransactionOptions): Promise<T | null>;
|
|
107
|
+
/**
|
|
108
|
+
* WebHID client for the Incott protocol (vendor 0x093A, products 0x522C /
|
|
109
|
+
* 0x622C). Ported from IncottHub, adapted to mouse-protocol's driver
|
|
110
|
+
* interface: the client owns `device`, `open()` and `close()` directly
|
|
111
|
+
* instead of taking an externally-managed transport, matching every other
|
|
112
|
+
* driver in this registry.
|
|
113
|
+
*
|
|
114
|
+
* FOUR bugs fixed 2026-09-08 from an owner's hardware probes in BOTH wireless
|
|
115
|
+
* and wired modes (see `docs/incott-testing.md`):
|
|
116
|
+
*
|
|
117
|
+
* 1. WIRED MODE WAS COMPLETELY BROKEN. The wired mouse exposes two
|
|
118
|
+
* identical-looking `0xFF05` collections; only one answers feature
|
|
119
|
+
* reports, and usage page alone cannot tell them apart. See `open()`'s
|
|
120
|
+
* identity probe and `incottProbeCollection`/`incottSelectCollection`.
|
|
121
|
+
* 2. `0x622C` means the connection is WIRED, not "charging" — charging is
|
|
122
|
+
* a consequence of being plugged in, not what the id encodes. See
|
|
123
|
+
* `incottIsWiredProduct` (renamed from `incottIsChargingProduct`) and
|
|
124
|
+
* `MouseStatus.connectionType` below.
|
|
125
|
+
* 3. The polling-rate ceiling depends on the connection: the full
|
|
126
|
+
* 125-8000 Hz ladder is wireless-only, and the mouse only reaches
|
|
127
|
+
* 1000 Hz over the cable — see `INCOTT_POLLING_STEPS_HZ_WIRED`.
|
|
128
|
+
* 4. The real model name ("Esports G23V2Pro") is only in the WIRED product
|
|
129
|
+
* string; wireless reports a generic name with no model in it at all.
|
|
130
|
+
* See `incottNormalizeProductName`.
|
|
131
|
+
*
|
|
132
|
+
* Polling rate (0x81) is verified readable on hardware, but `readStatus()`
|
|
133
|
+
* must not throw (see the write-a-driver doc): when it cannot be read after
|
|
134
|
+
* the transaction queue's full retry budget, the client falls back to an
|
|
135
|
+
* identity-only status — real `name`, `brand`, and whatever else was
|
|
136
|
+
* genuinely readable — with `ui.settingsReady: false` and
|
|
137
|
+
* `ui.valuesVerified: false` so the app hides the settings grid instead of
|
|
138
|
+
* rendering fabricated values. `MouseStatus.pollingRateHz` is non-nullable,
|
|
139
|
+
* so the degraded path still assigns it a number; see the comment at that
|
|
140
|
+
* assignment for why that is not a fabricated reading.
|
|
141
|
+
*
|
|
142
|
+
* DPI USED to have no known read-back at all; that changed 2026-09-08. DPI
|
|
143
|
+
* lives in a six-stage table (see `INCOTT_DPI_STAGE_COUNT` in
|
|
144
|
+
* `src/incott/index.ts`) with FOUR independent operations, not one:
|
|
145
|
+
*
|
|
146
|
+
* which stage is active read: `0x83`/`0x06` write: `0x03`/`0x06 <idx>`
|
|
147
|
+
* what a stage holds read: `0x82`/`<stage>` write: `0x02 <stage> <lo> <hi>`
|
|
148
|
+
*
|
|
149
|
+
* `readStatus()` reads which stage is active (`incottDecodeDpiStageIndex`)
|
|
150
|
+
* and every one of the six stages' stored values (`incottDecodeDpiStage`),
|
|
151
|
+
* populating `dpiStages`/`activeDpiStage` for OpenMouse's shared multi-stage
|
|
152
|
+
* DPI editor (`MouseUiHints.dpiStageEditor`) and deriving `dpi` as the active
|
|
153
|
+
* stage's own value — a genuine live read, not a write cache.
|
|
154
|
+
*
|
|
155
|
+
* `setActiveDpiStage()` and `setDpiStageValue()` map onto the select and edit
|
|
156
|
+
* operations above respectively, matching OpenMouse's existing generic
|
|
157
|
+
* contract (`requireClientMethod` in `openmouse/src/device/controller.ts`).
|
|
158
|
+
* `setDpi()` is kept for the plain preset row and is defined as "set the
|
|
159
|
+
* ACTIVE stage's value" — i.e. it is exactly `setDpiStageValue` at whichever
|
|
160
|
+
* stage is currently active — since that is the only meaning left for it now
|
|
161
|
+
* that a real select operation exists.
|
|
162
|
+
*
|
|
163
|
+
* A SECOND DPI BUG, found from an owner report and fixed the same day
|
|
164
|
+
* (2026-09-08): `setDpi()` used to be the *only* way to touch DPI, so the app
|
|
165
|
+
* called it every time the user picked a value from the plain preset row —
|
|
166
|
+
* indistinguishable, from the user's point of view, from "select the stage
|
|
167
|
+
* that already holds this value." It never did that: it read the active
|
|
168
|
+
* stage and overwrote *that* stage's stored value with whatever was picked,
|
|
169
|
+
* one stage at a time destroying the mouse's factory-programmed table.
|
|
170
|
+
* (IncottHIDApp's own `0x03`/`0x06` write — which that project mislabels "set
|
|
171
|
+
* DPI" — is actually the active-stage SELECT and never touches the table;
|
|
172
|
+
* see `INCOTT_CMD_SET_DPI_STAGE` in `src/incott/index.ts`.) Wiring
|
|
173
|
+
* `dpiStages`/`activeDpiStage`/`dpiStageEditor` here gives the app a real
|
|
174
|
+
* select control (`setActiveDpiStage`) so `setDpi` is no longer asked to do a
|
|
175
|
+
* select's job.
|
|
176
|
+
*
|
|
177
|
+
* `valuesVerified` is true once both the polling-rate query and the active
|
|
178
|
+
* stage's DPI read have answered — see `readStatus()`.
|
|
179
|
+
*
|
|
180
|
+
* A FIFTH bug, fixed 2026-09-08: battery used to be read from the `0x8e`
|
|
181
|
+
* feature-report reply, byte 6. Charging a unit through a full cycle (roughly
|
|
182
|
+
* 60% to roughly 97%) while polling that reply showed byte 6 never move at
|
|
183
|
+
* all — a constant, not a live reading, the same failure mode `0x89` byte 8
|
|
184
|
+
* suffered before it (see `INCOTT_CMD_QUERY_BATTERY` in
|
|
185
|
+
* `src/incott/index.ts`). The real battery level lives in an UNSOLICITED
|
|
186
|
+
* INPUT report the mouse emits on report id 0x09 while it is actively being
|
|
187
|
+
* used — see `onInputReport` below and `incottDecodeInputStatus`. The device
|
|
188
|
+
* only emits these while in use, so `readStatus()` reports `batteryPercent:
|
|
189
|
+
* null` / `batteryState: "Unknown"` until the first one arrives; nothing here
|
|
190
|
+
* fabricates a number or falls back to the disproven feature-report bytes.
|
|
191
|
+
* `batteryState`'s charging flag comes from the report's own high bit
|
|
192
|
+
* (`raw > 100`), not from the product id: `incottIsWiredProduct` (0x622C)
|
|
193
|
+
* still means the CONNECTION is wired, which is what `connectionType` below
|
|
194
|
+
* uses, and being wired does imply charging in practice, but the input report
|
|
195
|
+
* is the authoritative source for the charging state, not an inference from
|
|
196
|
+
* the product id.
|
|
197
|
+
*
|
|
198
|
+
* A SIXTH addition, 2026-09-10: performance mode (HP/Corded/LP) is now wired
|
|
199
|
+
* into OpenMouse's shared `powerModes`/`powerMode`/`setPowerMode` contract.
|
|
200
|
+
* The value-to-label mapping was hardware-confirmed by labelling every click
|
|
201
|
+
* in the vendor tool before recording its write — see `getPowerModes`,
|
|
202
|
+
* `setPowerMode`, and `INCOTT_SUB_PERFORMANCE` in `src/incott/index.ts` for
|
|
203
|
+
* the capture and the REVERSED-vs-UI warning (HP=2, Corded=1, LP=0). `readStatus()`
|
|
204
|
+
* populates `powerMode` from a live `0x84`/`0x05` read, leaving it `undefined`
|
|
205
|
+
* (never fabricated) when the collection is dead or the read fails.
|
|
206
|
+
*/
|
|
207
|
+
export declare class IncottHidClient {
|
|
208
|
+
readonly device: HIDDevice;
|
|
209
|
+
private readonly queue;
|
|
210
|
+
/**
|
|
211
|
+
* Cached decode of the mouse's unsolicited input report (battery plus a
|
|
212
|
+
* packed DPI-stage/polling-rate snapshot) — see `onInputReport` and the
|
|
213
|
+
* class comment's battery section. `null` until the first report arrives
|
|
214
|
+
* (the mouse only emits them while actively in use), which is exactly when
|
|
215
|
+
* `readStatus()` must report `batteryPercent: null` / `batteryState:
|
|
216
|
+
* "Unknown"` rather than a fabricated value.
|
|
217
|
+
*/
|
|
218
|
+
private lastInputStatus;
|
|
219
|
+
/**
|
|
220
|
+
* Whether `open()`'s identity probe got a well-formed reply from the
|
|
221
|
+
* collection WebHID handed this client. `null` until `open()` runs (every
|
|
222
|
+
* unit test that skips `open()` and calls `readStatus()` directly keeps
|
|
223
|
+
* this `null`, so it behaves exactly as before this field existed);
|
|
224
|
+
* `false` means this specific collection is the wired mouse's dead
|
|
225
|
+
* look-alike (see the class comment and `open()`).
|
|
226
|
+
*/
|
|
227
|
+
private collectionVerified;
|
|
228
|
+
constructor(device: HIDDevice, options?: IncottTransactionOptions);
|
|
229
|
+
/**
|
|
230
|
+
* Decodes the mouse's unsolicited input report and caches the result for
|
|
231
|
+
* `readStatus()` — see the class comment's battery section and
|
|
232
|
+
* `incottDecodeInputStatus` in `src/incott/index.ts`.
|
|
233
|
+
*
|
|
234
|
+
* BYTE-INDEX CONVENTION: WebHID's `inputreport` event carries `reportId`
|
|
235
|
+
* separately from `data`, and `data` EXCLUDES the report id — unlike this
|
|
236
|
+
* driver's feature-report frames, which include it because
|
|
237
|
+
* `receiveFeatureReport` returns it at byte 0 (see the top-of-file comment
|
|
238
|
+
* in `src/incott/index.ts` for that asymmetry, which this mirrors). So
|
|
239
|
+
* `event.data.getUint8(0)`/`getUint8(1)` are this report's bytes 1/2 in
|
|
240
|
+
* node-hid terms — node-hid's raw buffer includes the report id at index 0,
|
|
241
|
+
* which is how `captures/incott-8k-wireless/input-report-battery.hex` is
|
|
242
|
+
* indexed. Get this backwards and every field reads off by one byte.
|
|
243
|
+
*
|
|
244
|
+
* Filtered to report id `INCOTT_INPUT_REPORT_ID` (0x09): the mouse's other
|
|
245
|
+
* HID collections (mouse/keyboard boot reports, etc.) are not this vendor
|
|
246
|
+
* collection's traffic and must not be mistaken for it.
|
|
247
|
+
*/
|
|
248
|
+
private readonly onInputReport;
|
|
249
|
+
/**
|
|
250
|
+
* Usage page alone cannot tell the wired mouse's two look-alike `0xFF05`
|
|
251
|
+
* collections apart (see the class comment and `open()`), so this stays
|
|
252
|
+
* permissive on purpose: it accepts ANY device on a vendor-defined usage
|
|
253
|
+
* page with a matching product id, including the one that turns out to be
|
|
254
|
+
* the dead collection. Rejecting it here would also reject the live one,
|
|
255
|
+
* since WebHID hands this method one collection at a time and both look
|
|
256
|
+
* identical from `vendorId`/`productId`/`usagePage` alone. The actual
|
|
257
|
+
* distinction is made by probing after `open()` — see `open()` and
|
|
258
|
+
* `readStatus()`'s graceful degradation when the probe fails.
|
|
259
|
+
*/
|
|
260
|
+
static isSupported(device: HIDDevice): boolean;
|
|
261
|
+
/**
|
|
262
|
+
* WebHID request filters for the vendor collection, one per product id —
|
|
263
|
+
* both the wireless dongle's `0x522C` (`INCOTT_PRODUCT_ID`) and the wired
|
|
264
|
+
* `0x622C` (`INCOTT_PRODUCT_ID_WIRED`), hardware-verified 2026-09-08, so
|
|
265
|
+
* the picker offers the mouse in either mode.
|
|
266
|
+
*/
|
|
267
|
+
static get filters(): HIDDeviceFilter[];
|
|
268
|
+
/**
|
|
269
|
+
* The real writable range: 50-45000 DPI in steps of 50 (see `INCOTT_DPI_MIN`
|
|
270
|
+
* in `src/incott/index.ts`), returned densely so the shell's custom-DPI
|
|
271
|
+
* entry (which validates by exact membership, not by snapping to a nearby
|
|
272
|
+
* value) accepts any value in range — the same pattern already used for
|
|
273
|
+
* Razer's Viper V4 Pro (`100-50,000 in 50-DPI increments`) and for
|
|
274
|
+
* Zaunkoenig and Finalmouse. This is deliberately NOT
|
|
275
|
+
* `INCOTT_DPI_DEFAULT_STAGE_PRESETS` (the six round numbers the vendor
|
|
276
|
+
* calls default stage presets) — that list is too sparse for the shell to
|
|
277
|
+
* let a user dial in, say, 12000 DPI, which this mouse genuinely supports.
|
|
278
|
+
*/
|
|
279
|
+
getDpiOptions(): number[];
|
|
280
|
+
/** The vendor's six default DPI stage presets — a convenience list, not the writable range. See `INCOTT_DPI_DEFAULT_STAGE_PRESETS`. */
|
|
281
|
+
getDpiDefaultStagePresets(): number[];
|
|
282
|
+
/** Longest debounce the firmware accepts, in milliseconds (verified: section 8 of the IncottHub spec). */
|
|
283
|
+
getDebounceMaxMs(): number;
|
|
284
|
+
/** The firmware accepts any integer 0-30 ms, so every value in range is offered. */
|
|
285
|
+
getDebounceOptions(): number[];
|
|
286
|
+
/** Curated presets within the verified 1-900s sleep-timer range; see INCOTT_SLEEP_OPTIONS. */
|
|
287
|
+
getSleepOptions(): number[];
|
|
288
|
+
/**
|
|
289
|
+
* Opens the device, then PROBES it with the identity query before trusting
|
|
290
|
+
* it for anything else — see `incottProbeCollection`.
|
|
291
|
+
*
|
|
292
|
+
* WIRED-MODE BUG, hardware-verified 2026-09-08: the wired mouse exposes
|
|
293
|
+
* two `0xFF05` collections on the same interface that are indistinguishable
|
|
294
|
+
* by vendor id, product id, or usage page; only one of them answers
|
|
295
|
+
* feature reports at all (the other fails every `HidD_SetFeature` call at
|
|
296
|
+
* the OS level). WebHID hands this client exactly ONE `HIDDevice`, already
|
|
297
|
+
* chosen by the browser's picker/filters before this driver ever sees
|
|
298
|
+
* it — a WebHID `HIDDevice` corresponds to a single collection, so there is
|
|
299
|
+
* no second candidate here for this method to fall back to the way
|
|
300
|
+
* `incottSelectCollection` can for a transport with real alternatives. All
|
|
301
|
+
* `open()` CAN do in the browser is find out, immediately and cheaply,
|
|
302
|
+
* whether the one collection it got is the live one.
|
|
303
|
+
*
|
|
304
|
+
* This never throws on a dead collection — it records the result in
|
|
305
|
+
* `collectionVerified` instead. `readStatus()` checks that flag and skips
|
|
306
|
+
* straight to a fully degraded, `ui.settingsReady: false` status (see
|
|
307
|
+
* there) rather than burning the full retry budget on roughly a dozen
|
|
308
|
+
* queries that a collection already known to be dead cannot answer either.
|
|
309
|
+
*
|
|
310
|
+
* Also attaches `onInputReport` (see the class comment's battery section):
|
|
311
|
+
* the mouse's battery lives only in an unsolicited input report it emits
|
|
312
|
+
* while actively in use, and WebHID delivers those solely as `inputreport`
|
|
313
|
+
* events on the device — there is no way to poll for one, so the listener
|
|
314
|
+
* must be attached here, before the device is ever read, or an in-use
|
|
315
|
+
* report could arrive and be missed before anything is listening.
|
|
316
|
+
*/
|
|
317
|
+
open(): Promise<void>;
|
|
318
|
+
close(): Promise<void>;
|
|
319
|
+
readStatus(): Promise<MouseStatus>;
|
|
320
|
+
/**
|
|
321
|
+
* Sets the ACTIVE stage's stored DPI value — the only sane meaning left for
|
|
322
|
+
* a plain "set DPI" call now that a real stage-select operation exists (see
|
|
323
|
+
* `setActiveDpiStage` below and the class comment's account of the bug this
|
|
324
|
+
* used to have). This is exactly `setDpiStageValue(activeStage, dpi)`;
|
|
325
|
+
* confirms the write by reading that stage back, the same pattern every
|
|
326
|
+
* other setter in this client uses. Range/step are validated up front,
|
|
327
|
+
* before any device round-trip, so an invalid value never costs the query
|
|
328
|
+
* needed to find the active stage.
|
|
329
|
+
*/
|
|
330
|
+
setDpi(dpi: number): Promise<number>;
|
|
331
|
+
/**
|
|
332
|
+
* Sets both DPI axes on the ACTIVE stage — the shape a generic X/Y control
|
|
333
|
+
* needs, where `setDpiStageAxis` is per-stage and per-axis.
|
|
334
|
+
*
|
|
335
|
+
* Mirrors the vendor's own `setResolution`: one write with the "both" flag
|
|
336
|
+
* when the axes match, two axis-flagged writes when they differ. Named to
|
|
337
|
+
* match the method proposed upstream for a brand-agnostic axis control; if
|
|
338
|
+
* the maintainers settle on a different name this is the one line to
|
|
339
|
+
* rename.
|
|
340
|
+
*/
|
|
341
|
+
setAxisDpi(dpiX: number, dpiY: number): Promise<void>;
|
|
342
|
+
/**
|
|
343
|
+
* Uploads one macro into an on-device buffer.
|
|
344
|
+
*
|
|
345
|
+
* Ten 32-byte chunks, each announced by an 8-byte feature report and then
|
|
346
|
+
* carried by a 32-byte OUTPUT report on the same id — the only place this
|
|
347
|
+
* protocol uses an output report at all. Captured from the vendor tool
|
|
348
|
+
* 2026-09-11; see `captures/incott-8k-wireless/macro-upload-2026-09-11.hex`.
|
|
349
|
+
*
|
|
350
|
+
* The device does not acknowledge any of it, so unlike every other setter
|
|
351
|
+
* here there is nothing to verify against: there is no macro read command.
|
|
352
|
+
* Bind a button to `Macro <n>` and press it — that is the only confirmation
|
|
353
|
+
* available.
|
|
354
|
+
*/
|
|
355
|
+
uploadMacro(macro: IncottMacro): Promise<void>;
|
|
356
|
+
/** Reads the DPI cycle (stage count + active stage) in one query. */
|
|
357
|
+
private readDpiCycle;
|
|
358
|
+
/**
|
|
359
|
+
* SELECTS which DPI stage is active (`09 03 <count> <idx>`) — distinct from
|
|
360
|
+
* `setDpi`/`setDpiStageValue`, which EDIT a stage's stored value. Confirmed
|
|
361
|
+
* on hardware 2026-09-08 that a select never touches any stage's stored
|
|
362
|
+
* value (see `INCOTT_CMD_SET_DPI_STAGE` in `src/incott/index.ts`), so
|
|
363
|
+
* unlike every value setter in this client this one reads back the active
|
|
364
|
+
* index rather than a DPI value.
|
|
365
|
+
*
|
|
366
|
+
* The stage count is READ FIRST and written back unchanged. It shares the
|
|
367
|
+
* write with the index, so sending a constant here would silently resize a
|
|
368
|
+
* cycle that is not six stages long — see
|
|
369
|
+
* `INCOTT_DPI_STAGE_COUNT_DEFAULT`.
|
|
370
|
+
*/
|
|
371
|
+
setActiveDpiStage(stage: number): Promise<number>;
|
|
372
|
+
/**
|
|
373
|
+
* Sets how many stages the DPI cycle rotates through (`09 03 <count>
|
|
374
|
+
* <idx>`). The stored value of every stage is left alone — stages above
|
|
375
|
+
* the new count keep their values and simply stop being visited.
|
|
376
|
+
*
|
|
377
|
+
* The active stage rides along in the same write, so it is clamped into
|
|
378
|
+
* the new cycle rather than left pointing past the end.
|
|
379
|
+
*/
|
|
380
|
+
setDpiStageCount(count: number): Promise<number>;
|
|
381
|
+
/**
|
|
382
|
+
* EDITS one stage's stored DPI value directly, by index — unlike `setDpi`,
|
|
383
|
+
* which always targets whichever stage happens to be active right now.
|
|
384
|
+
* This is the write OpenMouse's shared multi-stage DPI editor uses when the
|
|
385
|
+
* user edits a specific stage row rather than the active-stage preset.
|
|
386
|
+
*/
|
|
387
|
+
setDpiStageValue(stage: number, dpi: number): Promise<number>;
|
|
388
|
+
setPollingRate(hz: number): Promise<number>;
|
|
389
|
+
setLiftOffDistance(level: LiftOffLevel): Promise<LiftOffLevel>;
|
|
390
|
+
setMotionSync(on: boolean): Promise<boolean>;
|
|
391
|
+
setAngleSnapping(on: boolean): Promise<boolean>;
|
|
392
|
+
setRippleControl(on: boolean): Promise<boolean>;
|
|
393
|
+
setDebounceTime(ms: number): Promise<number>;
|
|
394
|
+
setSleepTimeout(seconds: number): Promise<number>;
|
|
395
|
+
/**
|
|
396
|
+
* Not called generically by the app (no shared receiver-LED control exists
|
|
397
|
+
* yet), kept for protocol parity with IncottHub.
|
|
398
|
+
*
|
|
399
|
+
* NOTE for whoever wires this up: the receiver LED is a property of the
|
|
400
|
+
* 2.4 GHz dongle and is meaningless when `incottIsWiredProduct(device.productId)`
|
|
401
|
+
* is true (checked 2026-09-08) — there is no dongle in that mode. Checked
|
|
402
|
+
* `MouseUiHints` in `src/drivers/mouse-types.ts` for an existing `hide*`
|
|
403
|
+
* flag to gate this with and found none scoped to the receiver LED
|
|
404
|
+
* specifically (the closest, `hideSignalCard`, is about link-quality
|
|
405
|
+
* telemetry, a different control); a new hint was deliberately NOT added to
|
|
406
|
+
* that shared contract for a control this driver does not yet advertise
|
|
407
|
+
* anywhere. Whoever wires a shared receiver-LED control into `MouseStatus`
|
|
408
|
+
* should either add a scoped `hide*` flag there at that time, or simply
|
|
409
|
+
* omit the wiring outright when wired, matching the other wireless-only
|
|
410
|
+
* behavior in this driver (see `INCOTT_POLLING_STEPS_HZ_WIRED`).
|
|
411
|
+
*/
|
|
412
|
+
/**
|
|
413
|
+
* Reads all six button bindings, keyed by the physical button name.
|
|
414
|
+
*
|
|
415
|
+
* Returns null unless every button answered: see the call site in
|
|
416
|
+
* `readStatus` for why a partial read is not published. A binding the
|
|
417
|
+
* action table does not know (a keyboard key, a macro) reports its raw code
|
|
418
|
+
* as `Unknown (0x...)` rather than being shown as one of the offered
|
|
419
|
+
* actions — the shared remapper writes back what it displays, so labelling
|
|
420
|
+
* an unknown binding as a known action would rewrite it on the next edit.
|
|
421
|
+
*/
|
|
422
|
+
private readButtonMappings;
|
|
423
|
+
/**
|
|
424
|
+
* Reassigns one button, then reads it back and refuses to report success
|
|
425
|
+
* unless the device actually took the value.
|
|
426
|
+
*
|
|
427
|
+
* `button` is a physical name; the wire index it maps to is NOT the same
|
|
428
|
+
* number (Forward and Back are transposed — see
|
|
429
|
+
* `INCOTT_BUTTON_WIRE_INDEX`). This is a standalone command, so it cannot
|
|
430
|
+
* disturb DPI, polling or the other five buttons.
|
|
431
|
+
*/
|
|
432
|
+
setButtonMapping(button: string, actionLabel: string): Promise<void>;
|
|
433
|
+
/**
|
|
434
|
+
* Reads the Fire Key (rapid-fire) parameters — how many clicks a button
|
|
435
|
+
* bound to "Rapid fire" sends, and how far apart. Global to the device: the
|
|
436
|
+
* command carries no button index.
|
|
437
|
+
*/
|
|
438
|
+
getFireKey(): Promise<IncottFireKey | null>;
|
|
439
|
+
/**
|
|
440
|
+
* Writes the Fire Key parameters and verifies the read-back.
|
|
441
|
+
*
|
|
442
|
+
* Not advertised through `MouseStatus`: the shared contract has no
|
|
443
|
+
* rapid-fire field, so there is no generic control to publish this behind —
|
|
444
|
+
* the same position `setReceiverLed` is in. Kept for protocol parity and
|
|
445
|
+
* for whoever wires a control up.
|
|
446
|
+
*/
|
|
447
|
+
setFireKey(times: number, intervalMs: number): Promise<IncottFireKey>;
|
|
448
|
+
setReceiverLed(mode: number): Promise<number>;
|
|
449
|
+
/**
|
|
450
|
+
* Low-level codec method: writes the RAW 0-2 performance-mode value. Kept
|
|
451
|
+
* for protocol parity and as the primitive `setPowerMode` below builds on.
|
|
452
|
+
* Most callers should use `setPowerMode(name)` instead, which validates a
|
|
453
|
+
* name against the hardware-confirmed HP/Corded/LP mapping (see
|
|
454
|
+
* `INCOTT_SUB_PERFORMANCE` in `src/incott/index.ts`) and requires a
|
|
455
|
+
* matching read-back before reporting success.
|
|
456
|
+
*
|
|
457
|
+
* This method is intentionally more lenient than `setPowerMode`: a `null`
|
|
458
|
+
* read-back (the device not answering) does not throw here, since a raw
|
|
459
|
+
* numeric call has no name to validate up front and existing callers/tests
|
|
460
|
+
* rely on this tolerance. See `setPowerMode` for the stricter contract.
|
|
461
|
+
*/
|
|
462
|
+
setPerformanceMode(mode: number): Promise<number>;
|
|
463
|
+
/** See `setPerformanceMode`. Returns `null` when `0x84`/`0x05` does not answer. */
|
|
464
|
+
getPerformanceMode(): Promise<number | null>;
|
|
465
|
+
/**
|
|
466
|
+
* The named power/performance modes this mouse offers, in the vendor UI's
|
|
467
|
+
* own left-to-right display order (HP, Corded, LP) — see
|
|
468
|
+
* `INCOTT_PERFORMANCE_MODE_NAMES`. This order is deliberately NOT the wire
|
|
469
|
+
* value order: see `setPowerMode` and `INCOTT_SUB_PERFORMANCE` in
|
|
470
|
+
* `src/incott/index.ts` for the reversal this table exists to get right.
|
|
471
|
+
*/
|
|
472
|
+
getPowerModes(): string[];
|
|
473
|
+
/**
|
|
474
|
+
* OpenMouse's shared power/performance-mode contract
|
|
475
|
+
* (`requireClientMethod("setPowerMode", …)` in
|
|
476
|
+
* `openmouse/src/device/controller.ts`) — takes the mode NAME, not the raw
|
|
477
|
+
* wire value. Maps name -> wire through `incottPerformanceModeToWire`
|
|
478
|
+
* (`INCOTT_PERFORMANCE_MODE_TO_WIRE` in `src/incott/index.ts`), the single
|
|
479
|
+
* table the HP=2/Corded=1/LP=0 reversal lives in — hardware-confirmed
|
|
480
|
+
* 2026-09-10 by labelling each click in the vendor tool before recording
|
|
481
|
+
* its write; see `INCOTT_SUB_PERFORMANCE`'s doc comment.
|
|
482
|
+
*
|
|
483
|
+
* Rejects an unknown name BEFORE writing anything (same pattern as
|
|
484
|
+
* `incottValidateDpi`/`setDpi` above), then writes and requires a matching,
|
|
485
|
+
* non-null read-back — unlike the lower-level `setPerformanceMode`, a
|
|
486
|
+
* `null` read-back here is treated as a failure, not tolerated: every
|
|
487
|
+
* setter in this driver verifies its write, and an unverifiable write must
|
|
488
|
+
* report failure rather than claim success.
|
|
489
|
+
*/
|
|
490
|
+
setPowerMode(name: string): Promise<void>;
|
|
491
|
+
/** Queries return an all-zero frame on failure, which every decoder rejects. */
|
|
492
|
+
private query;
|
|
493
|
+
/**
|
|
494
|
+
* Reads ONE AXIS of one DPI stage. Separate from `query` because the axis
|
|
495
|
+
* has to be matched in the reply as well as sent: X and Y on the same stage
|
|
496
|
+
* are two requests with an identical command and sub-command, so the second
|
|
497
|
+
* would otherwise accept the first's latched frame.
|
|
498
|
+
*/
|
|
499
|
+
private queryDpiAxis;
|
|
500
|
+
/** Reads one axis of one stage, or null when the device does not answer. */
|
|
501
|
+
readDpiStageAxis(stage: number, axis: IncottDpiAxis): Promise<number | null>;
|
|
502
|
+
/**
|
|
503
|
+
* Writes one axis of one stage and verifies it by reading that axis back.
|
|
504
|
+
*
|
|
505
|
+
* Independent X and Y are real on this device — hardware-verified
|
|
506
|
+
* 2026-09-11, see `INCOTT_DPI_AXIS`. Writing `"both"` is what the ordinary
|
|
507
|
+
* `setDpiStageValue` does.
|
|
508
|
+
*/
|
|
509
|
+
setDpiStageAxis(stage: number, dpi: number, axis: IncottDpiAxis): Promise<number>;
|
|
510
|
+
private write;
|
|
511
|
+
}
|
|
512
|
+
export {};
|
|
513
|
+
//# sourceMappingURL=hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/incott/hid.ts"],"names":[],"mappings":"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"}
|