@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,587 @@
|
|
|
1
|
+
import { ASUS_GLADIUS_II_USAGE, ASUS_GLADIUS_II_USAGE_PAGE, ASUS_VENDOR_ID, ROG_GLADIUS_II_PRODUCT_ID, } from "../asus/index.js";
|
|
2
|
+
import { ATK_COMPX_PRODUCT_IDS } from "./atk/products.js";
|
|
3
|
+
import { MICROSOFT_PRODUCT_CLASSIC, MICROSOFT_PRODUCT_PRO, MICROSOFT_VENDOR_ID, MICROSOFT_CLASSIC_USAGE_PAGE, MICROSOFT_CLASSIC_USAGE, MICROSOFT_PRO_USAGE_PAGE, MICROSOFT_PRO_USAGE } from "../microsoft/index.js";
|
|
4
|
+
import { INCOTT_PRODUCT_IDS, INCOTT_USAGE_PAGE, INCOTT_VENDOR_ID } from "../incott/index.js";
|
|
5
|
+
import { EGG_WE_HID_FILTERS } from "./endgame/egg-we-control.js";
|
|
6
|
+
import { GEARHUB_PRODUCTS, GEARHUB_VENDOR_ID } from "@openmouse/protocol/gearhub";
|
|
7
|
+
import { GWOLVES_PRODUCTS } from "./gwolves/products.js";
|
|
8
|
+
import { LAMZU_INCA_PRODUCTS, LAMZU_INCA_VENDOR_ID } from "@openmouse/protocol/lamzu";
|
|
9
|
+
import { MCHOSE_CONFIG_USAGE, MCHOSE_CONFIG_USAGE_PAGE, MCHOSE_DOCK_PRODUCT_ID, MCHOSE_DOCK_USAGE, MCHOSE_DOCK_USAGE_PAGE, MCHOSE_A5_GEN1_PRODUCTS, MCHOSE_A5_GEN1_USAGE_PAGE, MCHOSE_A5_GEN1_VENDOR_ID, } from "@openmouse/protocol/mchose";
|
|
10
|
+
import { HIDPP_BLUETOOTH_USAGE_PAGE, HIDPP_USAGE_PAGE, LOGITECH_BOLT_PRODUCT_IDS, LOGITECH_DIRECT_PRODUCT_IDS, } from "@openmouse/protocol/logitech";
|
|
11
|
+
import { RAZER_PRODUCTS, RAZER_PRODUCT_IDS } from "@openmouse/protocol/razer-devices";
|
|
12
|
+
import { PULSAR_XS1_PRODUCT_IDS } from "@openmouse/protocol/pulsar";
|
|
13
|
+
import { BITMOUSE_PRODUCT_IDS, BITMOUSE_USAGE, BITMOUSE_USAGE_PAGE, } from "@openmouse/protocol/bitmouse";
|
|
14
|
+
import { NINJUTSO_LEGACY_MOUSE_PRODUCT_IDS, NINJUTSO_LEGACY_RECEIVER_PRODUCT_IDS, NINJUTSO_LEGACY_VENDOR_ID, NINJUTSO_MOUSE_PRODUCT_IDS, NINJUTSO_RECEIVER_PRODUCT_IDS, NINJUTSO_VENDOR_ID, } from "@openmouse/protocol/ninjutso";
|
|
15
|
+
import { ZAUNKOENIG_PRODUCT_IDS, ZAUNKOENIG_USAGE_PAGE, ZAUNKOENIG_VENDOR_ID, } from "@openmouse/protocol/zaunkoenig";
|
|
16
|
+
import { CORSAIR_CONFIG_USAGE, CORSAIR_PRODUCT_IDS, CORSAIR_USAGE_PAGE, CORSAIR_VENDOR_ID, } from "@openmouse/protocol/corsair";
|
|
17
|
+
import { TEEVOLUTION_LCD_USAGE, TEEVOLUTION_LCD_USAGE_PAGE, } from "@openmouse/protocol/teevolution";
|
|
18
|
+
import { WOOTING_CONFIG_USAGE, WOOTING_CONFIG_USAGE_PAGE, WOOTING_PRODUCT_IDS, WOOTING_VENDOR_ID, } from "@openmouse/protocol/wooting";
|
|
19
|
+
import { STEELSERIES_PRODUCTS, STEELSERIES_VENDOR_ID, } from "@openmouse/protocol/steelseries";
|
|
20
|
+
import { WALLHACK_KEYBOARD_ALT_VENDOR_ID, WALLHACK_KEYBOARD_PRODUCT_IDS, WALLHACK_KEYBOARD_USAGE, WALLHACK_KEYBOARD_USAGE_PAGE, WALLHACK_MOUSE_PRODUCT_IDS, WALLHACK_MOUSE_USAGE, WALLHACK_MOUSE_USAGE_PAGE, WALLHACK_VENDOR_ID, } from "@openmouse/protocol/wallhack";
|
|
21
|
+
import { DAREU_COMMAND_USAGE, DAREU_COMMAND_USAGE_PAGE, DAREU_PRODUCT_IDS, DAREU_VENDOR_ID, } from "@openmouse/protocol/dareu";
|
|
22
|
+
import { HYPERX_PULSEFIRE_HASTE_KINGSTON_PIDS, HYPERX_PULSEFIRE_HASTE_HP_PIDS, HYPERX_USAGE_PAGE, HYPERX_VENDOR_ID_HP, HYPERX_VENDOR_ID_KINGSTON, } from "@openmouse/protocol/hyperx";
|
|
23
|
+
import { RAWM_PRODUCT_IDS, RAWM_USAGE, RAWM_USAGE_PAGE, RAWM_VENDOR_ID } from "@openmouse/protocol/rawm";
|
|
24
|
+
export const VENDOR_ID = {
|
|
25
|
+
asus: ASUS_VENDOR_ID,
|
|
26
|
+
pulsar: 0x3710,
|
|
27
|
+
endgameGear: 0x3367,
|
|
28
|
+
wlmouse: 0x36a7,
|
|
29
|
+
lamzu: 0x373e,
|
|
30
|
+
lamzuInca: LAMZU_INCA_VENDOR_ID,
|
|
31
|
+
attackshark: 0x373e,
|
|
32
|
+
logitech: 0x046d,
|
|
33
|
+
orbital: 0x1915,
|
|
34
|
+
rawm: RAWM_VENDOR_ID,
|
|
35
|
+
razer: 0x1532,
|
|
36
|
+
teevolution: 0x3554,
|
|
37
|
+
vgn: 0x3554,
|
|
38
|
+
atk: 0x373b,
|
|
39
|
+
finalmouse: 0x361d,
|
|
40
|
+
keychron: 0x3434,
|
|
41
|
+
moddo: 0x2fe3,
|
|
42
|
+
attackShark: 0x25a7,
|
|
43
|
+
attackSharkX: 0x1d57, // R1 / X11 family OEM VID (PIDs vary per firmware)
|
|
44
|
+
ninjutsoLegacy: NINJUTSO_LEGACY_VENDOR_ID,
|
|
45
|
+
ninjutso: NINJUTSO_VENDOR_ID,
|
|
46
|
+
zaunkoenig: ZAUNKOENIG_VENDOR_ID,
|
|
47
|
+
corsair: CORSAIR_VENDOR_ID,
|
|
48
|
+
fantech: 0x3151,
|
|
49
|
+
wooting: WOOTING_VENDOR_ID,
|
|
50
|
+
wallhack: WALLHACK_VENDOR_ID,
|
|
51
|
+
wallhackKeyboardAlt: WALLHACK_KEYBOARD_ALT_VENDOR_ID,
|
|
52
|
+
gwolves: 0x33e4,
|
|
53
|
+
steelseries: STEELSERIES_VENDOR_ID,
|
|
54
|
+
glorious: 0x093a,
|
|
55
|
+
// Pre-Pixart "classic" Glorious line (Model O/O-, Model D/D-, Model O V2).
|
|
56
|
+
// Shares 0x258a with several other Sonix-based OEM mice.
|
|
57
|
+
gloriousClassic: 0x258a,
|
|
58
|
+
gloriousClassicI: 0x22d4, // original Model I
|
|
59
|
+
gloriousClassicIWired: 0x320f, // Model O V2 / Model I 2 wired
|
|
60
|
+
gloriousO3: 0x3794, // Model O3 Wireless / receiver (newer CORE-v2 generation)
|
|
61
|
+
mchose: 0x3837,
|
|
62
|
+
mchoseA5Gen1: MCHOSE_A5_GEN1_VENDOR_ID,
|
|
63
|
+
ksnakeUsb: 0xa8a4, // K-snake X11 wired
|
|
64
|
+
ksnakeDongle: 0xa8a5, // K-snake X11 2.4 GHz dongle
|
|
65
|
+
microsoft: MICROSOFT_VENDOR_ID,
|
|
66
|
+
dareu: DAREU_VENDOR_ID,
|
|
67
|
+
// Shares 0x093a with Glorious's Pixart-based Model O 2 / I 2 family (see
|
|
68
|
+
// `glorious` above); GloriousHidClient.isSupported() only claims its own
|
|
69
|
+
// catalogue product ids, so the two never overlap.
|
|
70
|
+
incott: INCOTT_VENDOR_ID,
|
|
71
|
+
hyperxKingston: HYPERX_VENDOR_ID_KINGSTON,
|
|
72
|
+
hyperxHp: HYPERX_VENDOR_ID_HP,
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* ROG Gladius II P502 configuration interface.
|
|
76
|
+
*
|
|
77
|
+
* Hardware verified:
|
|
78
|
+
* VID 0x0B05
|
|
79
|
+
* PID 0x1845
|
|
80
|
+
* Usage Page 0xFF01
|
|
81
|
+
* Usage 0x0001
|
|
82
|
+
*/
|
|
83
|
+
export const ASUS_GLADIUS_II_HID_FILTERS = [
|
|
84
|
+
{
|
|
85
|
+
vendorId: ASUS_VENDOR_ID,
|
|
86
|
+
productId: ROG_GLADIUS_II_PRODUCT_ID,
|
|
87
|
+
usagePage: ASUS_GLADIUS_II_USAGE_PAGE,
|
|
88
|
+
usage: ASUS_GLADIUS_II_USAGE,
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
export const MCHOSE_A5_HID_FILTERS = [
|
|
92
|
+
...[...MCHOSE_A5_GEN1_PRODUCTS.keys()].map((productId) => ({
|
|
93
|
+
vendorId: MCHOSE_A5_GEN1_VENDOR_ID,
|
|
94
|
+
productId,
|
|
95
|
+
usagePage: MCHOSE_A5_GEN1_USAGE_PAGE,
|
|
96
|
+
})),
|
|
97
|
+
];
|
|
98
|
+
/** Exact PID and report-8 command collection measured on the TM265 receiver. */
|
|
99
|
+
export const DAREU_HID_FILTERS = [...DAREU_PRODUCT_IDS].map((productId) => ({
|
|
100
|
+
vendorId: DAREU_VENDOR_ID,
|
|
101
|
+
productId,
|
|
102
|
+
usagePage: DAREU_COMMAND_USAGE_PAGE,
|
|
103
|
+
usage: DAREU_COMMAND_USAGE,
|
|
104
|
+
}));
|
|
105
|
+
/**
|
|
106
|
+
* SteelSeries ships keyboards, headsets, and USB audio under 0x1038, so there
|
|
107
|
+
* must never be a VID-only SteelSeries filter. The Rival 3 Gen 1's config
|
|
108
|
+
* channel is hidapi interface 3, whose WebHID collection shape has not been
|
|
109
|
+
* captured yet, so the whole device is requested per product id and the
|
|
110
|
+
* picker offers each interface; the driver's firmware probe fails loudly on
|
|
111
|
+
* the ones that never answer (add the device again and choose another entry).
|
|
112
|
+
* Narrow these to a usage-page filter once the collection dump is recorded in
|
|
113
|
+
* docs/steelseries-testing.md.
|
|
114
|
+
*/
|
|
115
|
+
export const STEELSERIES_RIVAL3_FILTERS = [...STEELSERIES_PRODUCTS.keys()].map((productId) => ({ vendorId: STEELSERIES_VENDOR_ID, productId }));
|
|
116
|
+
// Pixart-based Model O 2 / I 2 family (OpenRGB issue #4649, linux-hardware.org).
|
|
117
|
+
export const GLORIOUS_PRODUCTS = new Map([
|
|
118
|
+
[0x821d, { name: "Model I 2 Wireless", wireless: false }],
|
|
119
|
+
[0x822a, { name: "Model O 2 Wireless", wireless: false }],
|
|
120
|
+
[0x822b, { name: "Model O 2 Bluetooth", wireless: true }],
|
|
121
|
+
[0x822d, { name: "Model O 2 Wireless receiver", wireless: true }],
|
|
122
|
+
[0x826a, { name: "Model O 2 Mini Wireless", wireless: false }],
|
|
123
|
+
[0x826d, { name: "Model O 2 Mini Wireless receiver", wireless: true }],
|
|
124
|
+
]);
|
|
125
|
+
/**
|
|
126
|
+
* Pre-Pixart "classic" Glorious line, reverse-engineered from
|
|
127
|
+
* https://github.com/louis4craft/glorious-ctl (devices.json + mouse.py),
|
|
128
|
+
* https://github.com/korkje/mxw, https://github.com/RealCrystalNight/Glorious-Mouse-Toolkit-Linux
|
|
129
|
+
* (an expanded mxw fork with its own device enum), and
|
|
130
|
+
* https://github.com/AwesomeTy18/GloriousBatteryMonitor (an unrelated C#
|
|
131
|
+
* battery-only tool whose device table cross-confirms the "wired PID +
|
|
132
|
+
* receiver PID" pairing for most of these models). Keyed by product id only
|
|
133
|
+
* for lookup convenience; isSupported() also checks the VID.
|
|
134
|
+
*
|
|
135
|
+
* `generation` gates which commands the driver will actually send:
|
|
136
|
+
* - "core1": the original protocol korkje/mxw reverse-engineered. Full
|
|
137
|
+
* support — RGB, debounce, battery (glorious-ctl), DPI/polling/LOD (mxw).
|
|
138
|
+
* - "core2": a newer, mostly-undocumented protocol generation (the 4K/8K-class
|
|
139
|
+
* mice: Model O3 Wireless, Model O2 Pro 4K/8K, Model D2 Pro 4K/8K). Only
|
|
140
|
+
* RGB, debounce, and battery are enabled for these — glorious-ctl's own
|
|
141
|
+
* `devices.json` lists Model O3/D2Pro-4K8K alongside the core1 devices and
|
|
142
|
+
* applies the exact same `mouse.py` commands uniformly, and
|
|
143
|
+
* AwesomeTy18/GloriousBatteryMonitor independently confirms the exact same
|
|
144
|
+
* battery-read command (byte-for-byte: class 0x02, subclass 0x02, command
|
|
145
|
+
* 0x83) works across its ENTIRE device list, core1 and core2 alike — two
|
|
146
|
+
* unrelated implementations agreeing is real evidence RGB/debounce/battery
|
|
147
|
+
* carry over. DPI, polling rate, and lift-off distance stay OFF for core2:
|
|
148
|
+
* korkje/mxw's own device list does not include any core2 model, and (for
|
|
149
|
+
* polling rate specifically) https://github.com/AMarcinkiewicz/GloriousAutoPollingRate
|
|
150
|
+
* shows the Model D2 Pro 4K/8K's real polling-rate command uses a
|
|
151
|
+
* DIFFERENT usage page (0xFFFF/0x0000) and report layout entirely from the
|
|
152
|
+
* one below — confirming core2 is not just core1 with new values, so
|
|
153
|
+
* guessing at DPI/LOD offsets for it would likely be silently wrong. See
|
|
154
|
+
* [[glorious-classic-protocol]] in memory for the full writeup, including
|
|
155
|
+
* the exact D2 Pro 4K/8K polling-rate bytes for whoever wires that in
|
|
156
|
+
* (needs multi-interface HID support this driver doesn't have yet).
|
|
157
|
+
*
|
|
158
|
+
* KNOWN UNRESOLVED DISCREPANCY: glorious-ctl's devices.json labels PID
|
|
159
|
+
* 0x2011 "Model D Wireless", but two independent, more structured sources
|
|
160
|
+
* (RealCrystalNight's Rust device enum and AwesomeTy18's C# device table)
|
|
161
|
+
* both instead pair 0x2011 with Model O (as its wired-mode PID, alongside
|
|
162
|
+
* receiver 0x2022) and put Model D's wired-mode PID at 0x2012. This table
|
|
163
|
+
* follows the 2-source majority below; if a real Model D Wireless answers
|
|
164
|
+
* "Model O Wireless" in the app, that's why — it's cosmetic only (the actual
|
|
165
|
+
* commands are identical either way), but worth fixing with a hardware
|
|
166
|
+
* report from whoever it happens to.
|
|
167
|
+
*/
|
|
168
|
+
export const GLORIOUS_CLASSIC_PRODUCTS = new Map([
|
|
169
|
+
[0x2011, { name: "Model O Wireless", wireless: false, generation: "core1" }], // see discrepancy note above
|
|
170
|
+
[0x2022, { name: "Model O Wireless", wireless: true, generation: "core1" }],
|
|
171
|
+
[0x2012, { name: "Model D Wireless", wireless: false, generation: "core1" }],
|
|
172
|
+
[0x2023, { name: "Model D Wireless", wireless: true, generation: "core1" }],
|
|
173
|
+
[0x2013, { name: "Model O- Wireless", wireless: false, generation: "core1" }],
|
|
174
|
+
[0x2024, { name: "Model O- Wireless receiver", wireless: true, generation: "core1" }],
|
|
175
|
+
[0x2014, { name: "Model D- Wireless", wireless: false, generation: "core1" }],
|
|
176
|
+
[0x2025, { name: "Model D- Wireless", wireless: true, generation: "core1" }],
|
|
177
|
+
[0x2033, { name: "Model O 2 Wireless", wireless: true, generation: "core1" }],
|
|
178
|
+
// "core1" here is unconfirmed, despite the name overlap with 0x2033 above -
|
|
179
|
+
// a real unit is on a completely different VID (gloriousClassicIWired,
|
|
180
|
+
// 0x320f, not gloriousClassic's 0x258a) and its feature report declares
|
|
181
|
+
// 263 bytes, not the 64 every other core1 device (including 0x2033) uses.
|
|
182
|
+
// A diagnostic confirmed the driver's core1 payloads write without error
|
|
183
|
+
// but do nothing on the mouse - see isConfirmedReportLength() in
|
|
184
|
+
// classic-hid.ts, which is what actually gates writes at runtime (not this
|
|
185
|
+
// label). Model I 2 Wireless/Wired below (0x821a/0x831a) share this same
|
|
186
|
+
// VID and are equally unconfirmed for the same reason.
|
|
187
|
+
[0x823a, { name: "Model O V2 Wired", wireless: false, generation: "core1" }],
|
|
188
|
+
[0x2015, { name: "Model O Pro", wireless: false, generation: "core1" }],
|
|
189
|
+
[0x2027, { name: "Model O Pro Wireless receiver", wireless: true, generation: "core1" }],
|
|
190
|
+
[0x2018, { name: "Series One Pro", wireless: false, generation: "core1" }],
|
|
191
|
+
[0x2031, { name: "Series One Pro Wireless receiver", wireless: true, generation: "core1" }],
|
|
192
|
+
[0x201a, { name: "Model D 2 PRO", wireless: false, generation: "core1" }],
|
|
193
|
+
[0x2034, { name: "Model D 2 PRO Wireless receiver", wireless: true, generation: "core1" }],
|
|
194
|
+
[0x1503, { name: "Model I", wireless: false, generation: "core1" }],
|
|
195
|
+
[0x821a, { name: "Model I 2 Wireless", wireless: false, generation: "core1" }], // unconfirmed - see the note on 0x823a above
|
|
196
|
+
[0x831a, { name: "Model I 2 Wired", wireless: false, generation: "core1" }], // unconfirmed - see the note on 0x823a above
|
|
197
|
+
// core2 — RGB/debounce/battery only, see the doc comment above.
|
|
198
|
+
[0xa312, { name: "Model O3 Wireless", wireless: true, generation: "core2" }],
|
|
199
|
+
[0xa300, { name: "Model O3 Wireless receiver", wireless: true, generation: "core2" }],
|
|
200
|
+
[0x201b, { name: "Model O2 Pro 4K/8K", wireless: false, generation: "core2" }],
|
|
201
|
+
[0x2035, { name: "Model O2 Pro 4K/8K Wireless receiver", wireless: true, generation: "core2" }],
|
|
202
|
+
[0x201c, { name: "Model D 2 PRO 4K/8KHz Edition", wireless: false, generation: "core2" }],
|
|
203
|
+
[0x2036, { name: "Model D 2 PRO 4K/8KHz Edition receiver", wireless: true, generation: "core2" }],
|
|
204
|
+
]);
|
|
205
|
+
export const GLORIOUS_CLASSIC_HID_FILTERS = [...GLORIOUS_CLASSIC_PRODUCTS.keys()].flatMap((productId) => [
|
|
206
|
+
{ vendorId: VENDOR_ID.gloriousClassic, productId },
|
|
207
|
+
{ vendorId: VENDOR_ID.gloriousClassicI, productId },
|
|
208
|
+
{ vendorId: VENDOR_ID.gloriousClassicIWired, productId },
|
|
209
|
+
{ vendorId: VENDOR_ID.gloriousO3, productId },
|
|
210
|
+
]);
|
|
211
|
+
// Keychron Nape Pro VIA raw HID. 0x0440 is wired; 0xd026/0xd029 are shared Link-KM receivers.
|
|
212
|
+
export const KEYCHRON_NAPE_PRODUCT_IDS = [0x0440, 0xd026, 0xd029];
|
|
213
|
+
export const KEYCHRON_NAPE_HID_FILTERS = KEYCHRON_NAPE_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.keychron, productId, usagePage: 0xff60, usage: 0x61 }));
|
|
214
|
+
export const KEYCHRON_M6_HID_FILTERS = [
|
|
215
|
+
{ vendorId: VENDOR_ID.keychron, productId: 0xd060, usagePage: 0xffc1, usage: 0x01 },
|
|
216
|
+
{ vendorId: VENDOR_ID.keychron, productId: 0xd029, usagePage: 0xffc1, usage: 0x01 },
|
|
217
|
+
];
|
|
218
|
+
// moddoMOUSE exposes its vendor config interface on usage page 0xff, usage 0x01
|
|
219
|
+
// (older firmware answers on usage 0x02). Offer both so the picker lists the
|
|
220
|
+
// control interface; the driver rejects anything without the config report.
|
|
221
|
+
export const MODDO_HID_FILTERS = [
|
|
222
|
+
{ vendorId: VENDOR_ID.moddo, usagePage: 0xff, usage: 0x01 },
|
|
223
|
+
{ vendorId: VENDOR_ID.moddo, usagePage: 0xff, usage: 0x02 },
|
|
224
|
+
];
|
|
225
|
+
// The X3 family's control channel is the Sonix XS-1 interface: a single
|
|
226
|
+
// 64-byte unnumbered feature report on usage page 0xffff. Request that
|
|
227
|
+
// collection directly so the picker lists the control interface instead of the
|
|
228
|
+
// mouse's plain pointer interface, which cannot answer feature reports.
|
|
229
|
+
export const PULSAR_XS1_HID_FILTERS = [...PULSAR_XS1_PRODUCT_IDS].map((productId) => ({ vendorId: VENDOR_ID.pulsar, productId, usagePage: 0xffff, usage: 0x01 }));
|
|
230
|
+
// Viper V2/V3 Pro and Mouse Dock Pro expose their control channel as a Generic
|
|
231
|
+
// Desktop Mouse collection. Limit this broad collection filter to known PIDs so
|
|
232
|
+
// it cannot also surface unrelated Razer keyboards or the Viper V4 Pro's
|
|
233
|
+
// ordinary boot-mouse interfaces.
|
|
234
|
+
export const RAZER_MOUSE_DOCK_PRO_CONTROL_FILTERS = [0x00a4].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
|
|
235
|
+
export const RAZER_VIPER_V2_CONTROL_FILTERS = [0x00a5, 0x00a6].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
|
|
236
|
+
export const RAZER_VIPER_V3_CONTROL_FILTERS = [0x00c0, 0x00c1].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
|
|
237
|
+
/**
|
|
238
|
+
* Confirmed against real hardware: a user's `navigator.hid.getDevices()` dump
|
|
239
|
+
* on Windows for a DeathAdder V3 HyperSpeed (0x00c5) showed the un-narrowed
|
|
240
|
+
* catch-all filter below granting five *other* collections but never the one
|
|
241
|
+
* that actually answers (usage 0x01:0x02, opened, featureReports [0]) — the
|
|
242
|
+
* same device's macOS dump did include it, as a separate grant. Without a
|
|
243
|
+
* dedicated filter, this generation falls to RAZER_REGISTRY_FILTERS, which
|
|
244
|
+
* offers the whole device with no usage restriction: every top-level
|
|
245
|
+
* collection appears as an identical, unlabeled checkbox in Chrome's picker,
|
|
246
|
+
* and picking the wrong one(s) silently fails with no way to tell which was
|
|
247
|
+
* correct.
|
|
248
|
+
*
|
|
249
|
+
* Every other Viper-receiver/HyperSpeed-generation model (`viper-receiver` and
|
|
250
|
+
* `new-receiver` transports, `vendorControlInterface` false, not `nativeOnly`)
|
|
251
|
+
* shares this exact interface shape per the driver's own `isMouseControlInterface`
|
|
252
|
+
* contract, so they get the same narrow filter here rather than waiting for
|
|
253
|
+
* each one to be separately reported broken. Left OUT of this batch,
|
|
254
|
+
* deliberately:
|
|
255
|
+
* - `vendorControlInterface: true` models (the pre-HyperSpeed "standard"
|
|
256
|
+
* generation, and the Viper V3 Pro SE) answer on a vendor-defined page
|
|
257
|
+
* instead, which is a different filter this evidence says nothing about.
|
|
258
|
+
* - DeathAdder Essential and DeathAdder V2 keep their existing whole-device
|
|
259
|
+
* filters: their control channel is a split interface, not this shape.
|
|
260
|
+
* - Naga V2 Pro (0x00a7/0x00a8) is already `verified: true` — it demonstrably
|
|
261
|
+
* connects via the broad filter today, so it is left alone rather than risk
|
|
262
|
+
* narrowing it to the wrong shape.
|
|
263
|
+
* - Cobra Pro, Naga V2 HyperSpeed, and the Pro Click/Basilisk Mobile
|
|
264
|
+
* productivity lines were left out: no report or capture confirms this
|
|
265
|
+
* shape for them, and their extra buttons/wheel make a different interface
|
|
266
|
+
* layout plausible.
|
|
267
|
+
*/
|
|
268
|
+
// Widened to match Razer's own Synapse Web: intercepting its live
|
|
269
|
+
// navigator.hid.requestDevice() call (synapse.razer.com/dashboard, "Add
|
|
270
|
+
// Device") for the models it currently offers (Viper V4 Pro 0xe5/0xe6,
|
|
271
|
+
// DeathAdder V4 Pro 0xbe/0xbf/0xef/0xf0) showed filters of exactly
|
|
272
|
+
// `{vendorId, productId, usagePage}` — usagePage 0x01 AND 0x0c, with NO
|
|
273
|
+
// `usage` field at all. That already matched RAZER_VIPER_V4_CONTROL_FILTERS
|
|
274
|
+
// below; it did not match this constant, which added a `usage: 0x02`
|
|
275
|
+
// restriction Razer's own reference implementation does not apply. Dropped
|
|
276
|
+
// here to follow the same pattern, on top of razerProbeControlInterface
|
|
277
|
+
// (hid.ts) trying the real protocol against whatever gets granted rather
|
|
278
|
+
// than assuming which single collection is correct.
|
|
279
|
+
export const RAZER_HYPERSPEED_CONTROL_FILTERS = [
|
|
280
|
+
0x0078, // Viper (see RAZER_VIPER_CONTROL_FILTERS above; kept for the doc trail)
|
|
281
|
+
0x007a, // Viper Ultimate (Wired)
|
|
282
|
+
0x007c, 0x007d, // DeathAdder V2 Pro (Wired/wireless) — issue #253
|
|
283
|
+
0x009e, 0x009f, // Viper Mini Signature Edition (Wired/wireless)
|
|
284
|
+
0x00b8, // Viper V3 HyperSpeed (already verified: true)
|
|
285
|
+
0x00c2, 0x00c3, // DeathAdder V3 Pro
|
|
286
|
+
0x00b6, 0x00b7, // DeathAdder V3 Pro (second SKU pair)
|
|
287
|
+
0x00c4, 0x00c5, // DeathAdder V3 HyperSpeed (Wired/wireless)
|
|
288
|
+
0x00aa, 0x00ab, // Basilisk V3 Pro
|
|
289
|
+
0x00cc, 0x00cd, // Basilisk V3 Pro 35K
|
|
290
|
+
0x00d6, 0x00d7, // Basilisk V3 Pro 35K Phantom Green
|
|
291
|
+
0x00be, 0x00bf, // DeathAdder V4 Pro
|
|
292
|
+
0x00ef, 0x00f0, // DeathAdder V4 Pro Carbon Fiber Edition
|
|
293
|
+
].flatMap((productId) => [0x01, 0x0c].map((usagePage) => ({ vendorId: VENDOR_ID.razer, productId, usagePage })));
|
|
294
|
+
// The Viper Mini answers on the same kind of single Generic Desktop Mouse
|
|
295
|
+
// control interface as the V3 Pro, so it gets the same narrow collection filter.
|
|
296
|
+
export const RAZER_VIPER_MINI_CONTROL_FILTERS = [0x008a].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
|
|
297
|
+
// The original Viper exposes the same single Generic Desktop Mouse control
|
|
298
|
+
// interface, so it gets the same narrow collection filter.
|
|
299
|
+
export const RAZER_VIPER_CONTROL_FILTERS = [0x0078].map((productId) => ({ vendorId: VENDOR_ID.razer, productId, usagePage: 0x01, usage: 0x02 }));
|
|
300
|
+
// Synapse Web exposes the V4 control interface through a single top-level
|
|
301
|
+
// Generic Desktop or Consumer collection with Feature reports. Request both
|
|
302
|
+
// pages so the browser offers that interface, then the driver rejects ordinary
|
|
303
|
+
// mouse/keyboard interfaces that lack the required report.
|
|
304
|
+
export const RAZER_VIPER_V4_CONTROL_FILTERS = [0x00e5, 0x00e6].flatMap((productId) => [0x01, 0x0c].map((usagePage) => ({ vendorId: VENDOR_ID.razer, productId, usagePage })));
|
|
305
|
+
// The DeathAdder Essential family splits its pointer and configuration
|
|
306
|
+
// channels across separate interfaces, and which usage page carries the
|
|
307
|
+
// configuration one varies by hardware revision. Request the whole device so
|
|
308
|
+
// the picker can offer every interface, then the driver rejects the ones that
|
|
309
|
+
// cannot answer. 0x006e is the original, 0x0071 the White Edition, 0x0098 the
|
|
310
|
+
// 2021 revision.
|
|
311
|
+
export const RAZER_DEATHADDER_ESSENTIAL_FILTERS = [0x006e, 0x0071, 0x0098].map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
|
|
312
|
+
// The Cobra's control interface layout has not been pinned down, so the whole
|
|
313
|
+
// device is requested and the driver accepts whichever interface answers.
|
|
314
|
+
export const RAZER_COBRA_FILTERS = [0x00a3].map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
|
|
315
|
+
/**
|
|
316
|
+
* Razer product ids whose control interface is known, and which therefore get a
|
|
317
|
+
* narrower filter of their own above. Excluded from the catch-all below so a
|
|
318
|
+
* broad filter cannot quietly widen one that was deliberately narrowed.
|
|
319
|
+
*/
|
|
320
|
+
const RAZER_NARROWED_PRODUCT_IDS = new Set([
|
|
321
|
+
0x00a4, 0x00a5, 0x00a6, 0x00c0, 0x00c1, 0x006e, 0x0071, 0x0098, 0x0084,
|
|
322
|
+
// Viper and Viper Mini already had their own narrow filters defined above
|
|
323
|
+
// (RAZER_VIPER_CONTROL_FILTERS / RAZER_VIPER_MINI_CONTROL_FILTERS) but were
|
|
324
|
+
// never excluded from the catch-all below, so they carried this same
|
|
325
|
+
// ambiguous-picker bug the whole time. Excluded here alongside the rest of
|
|
326
|
+
// RAZER_HYPERSPEED_CONTROL_FILTERS' coverage.
|
|
327
|
+
0x0078, 0x008a,
|
|
328
|
+
0x007a, 0x007c, 0x007d, 0x009e, 0x009f, 0x00b8, 0x00c2, 0x00c3, 0x00b6,
|
|
329
|
+
0x00b7, 0x00c4, 0x00c5, 0x00aa, 0x00ab, 0x00cc, 0x00cd, 0x00d6, 0x00d7,
|
|
330
|
+
0x00be, 0x00bf, 0x00ef, 0x00f0,
|
|
331
|
+
]);
|
|
332
|
+
/**
|
|
333
|
+
* Every remaining product in the Razer registry. Which interface carries the
|
|
334
|
+
* control channel has not been established for these, and it varies by
|
|
335
|
+
* revision, so the whole device is requested and the picker offers each
|
|
336
|
+
* interface: the driver rejects the ones that cannot answer, and a model whose
|
|
337
|
+
* first entry never replies is added again on another entry.
|
|
338
|
+
*
|
|
339
|
+
* Products flagged `nativeOnly` in the registry are left out: their control
|
|
340
|
+
* channel is on a Chrome-protected collection, so no granted interface can
|
|
341
|
+
* ever answer and offering them just produces a dead picker entry.
|
|
342
|
+
*/
|
|
343
|
+
export const RAZER_REGISTRY_FILTERS = RAZER_PRODUCT_IDS
|
|
344
|
+
.filter((productId) => !RAZER_NARROWED_PRODUCT_IDS.has(productId))
|
|
345
|
+
.filter((productId) => !RAZER_PRODUCTS.get(productId)?.nativeOnly)
|
|
346
|
+
.map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
|
|
347
|
+
// The DeathAdder V2 keeps the Essential family's split interface layout, so it
|
|
348
|
+
// needs the same whole-device request rather than a single-collection filter.
|
|
349
|
+
export const RAZER_DEATHADDER_V2_FILTERS = [0x0084].map((productId) => ({ vendorId: VENDOR_ID.razer, productId }));
|
|
350
|
+
export const TEEVOLUTION_PRODUCT_IDS = [0xf520, 0xf523, 0xf5bb, 0xf522];
|
|
351
|
+
// Logitech HID++ control interfaces addressed through a receiver slot.
|
|
352
|
+
// 0xc54d and 0xc547 are newer Lightspeed receivers, 0xc539 is HERO-era
|
|
353
|
+
// Lightspeed, 0xc0a8 is the PRO X 2 Superstrike USB interface, and Bolt
|
|
354
|
+
// product ids live in ./logitech/protocol with the direct-connect list.
|
|
355
|
+
export const LOGITECH_RECEIVER_PRODUCT_IDS = [
|
|
356
|
+
0xc54d,
|
|
357
|
+
0xc539,
|
|
358
|
+
0xc0a8,
|
|
359
|
+
0xc547,
|
|
360
|
+
...LOGITECH_BOLT_PRODUCT_IDS,
|
|
361
|
+
];
|
|
362
|
+
// Every Logitech product with an HID++ control interface, receiver-addressed or
|
|
363
|
+
// not. Direct-connect and Bolt product IDs live in ./logitech/protocol so the
|
|
364
|
+
// driver and these filters cannot disagree about which index a mouse answers on.
|
|
365
|
+
export const LOGITECH_PRODUCT_IDS = [
|
|
366
|
+
...LOGITECH_RECEIVER_PRODUCT_IDS,
|
|
367
|
+
...LOGITECH_DIRECT_PRODUCT_IDS,
|
|
368
|
+
];
|
|
369
|
+
/**
|
|
370
|
+
* Every Logitech HID++ control interface, not only the product ids listed
|
|
371
|
+
* above: a mouse we have never seen should still be offered. Usage 1 is the
|
|
372
|
+
* short-report HID++ collection used by Lightspeed and for Bolt receiver
|
|
373
|
+
* registers; usage 2 is the long-report collection Bolt mice need for HID++
|
|
374
|
+
* 2.0 feature traffic. The driver decides mouse-vs-keyboard after connecting.
|
|
375
|
+
*/
|
|
376
|
+
export const LOGITECH_RECEIVER_FILTERS = [
|
|
377
|
+
{ vendorId: VENDOR_ID.logitech, usagePage: HIDPP_USAGE_PAGE, usage: 0x0001 },
|
|
378
|
+
{ vendorId: VENDOR_ID.logitech, usagePage: HIDPP_USAGE_PAGE, usage: 0x0002 },
|
|
379
|
+
];
|
|
380
|
+
/**
|
|
381
|
+
* The same protocol reached over Bluetooth, where none of the filters above
|
|
382
|
+
* match: a paired MX Master exposes one vendor collection on 0xFF43 and nothing
|
|
383
|
+
* on 0xFF00, so it was listed by the diagnostics scan (which filters by vendor
|
|
384
|
+
* id alone) while never appearing in the picker at all.
|
|
385
|
+
*
|
|
386
|
+
* Matched by page, without a usage, because 0xFF43 is Logitech's own page and
|
|
387
|
+
* the collection is numbered differently across firmware.
|
|
388
|
+
*/
|
|
389
|
+
export const LOGITECH_BLUETOOTH_FILTERS = [
|
|
390
|
+
{ vendorId: VENDOR_ID.logitech, usagePage: HIDPP_BLUETOOTH_USAGE_PAGE },
|
|
391
|
+
];
|
|
392
|
+
// Retained for existing imports; points at the first supported receiver.
|
|
393
|
+
export const LOGITECH_RECEIVER_FILTER = LOGITECH_RECEIVER_FILTERS[0];
|
|
394
|
+
export const WLMOUSE_PRODUCTS = new Map([
|
|
395
|
+
[0xa860, { name: "Beast G", wireless: true }],
|
|
396
|
+
[0xa861, { name: "Beast G", wireless: false }],
|
|
397
|
+
[0xa863, { name: "Huan", wireless: true }],
|
|
398
|
+
[0xa864, { name: "Huan", wireless: false }],
|
|
399
|
+
[0xa866, { name: "Beast Miao", wireless: true }],
|
|
400
|
+
[0xa867, { name: "Beast Miao", wireless: false }],
|
|
401
|
+
[0xa868, { name: "Beast Mini Pro", wireless: true }],
|
|
402
|
+
[0xa869, { name: "Beast Mini Pro", wireless: false }],
|
|
403
|
+
[0xa870, { name: "Beast X Pro", wireless: true }],
|
|
404
|
+
[0xa871, { name: "Beast X Pro", wireless: false }],
|
|
405
|
+
[0xa872, { name: "Strider", wireless: true }],
|
|
406
|
+
[0xa873, { name: "Strider", wireless: false }],
|
|
407
|
+
[0xa874, { name: "Ying", wireless: true }],
|
|
408
|
+
[0xa875, { name: "Ying", wireless: false }],
|
|
409
|
+
[0xa878, { name: "Sword X", wireless: true }],
|
|
410
|
+
[0xa879, { name: "Sword X", wireless: false }],
|
|
411
|
+
[0xa880, { name: "Beast Max", wireless: true }],
|
|
412
|
+
[0xa881, { name: "Beast Max", wireless: false }],
|
|
413
|
+
[0xa882, { name: "WLmouse 1K receiver", wireless: true }],
|
|
414
|
+
[0xa883, { name: "Beast X", wireless: true }],
|
|
415
|
+
[0xa884, { name: "Beast X", wireless: false }],
|
|
416
|
+
[0xa885, { name: "Beast Mini", wireless: true }],
|
|
417
|
+
[0xa886, { name: "Beast Mini", wireless: false }],
|
|
418
|
+
]);
|
|
419
|
+
export const WLMOUSE_MAX_POLLING_HZ = new Map([
|
|
420
|
+
[0xa882, 1000],
|
|
421
|
+
]);
|
|
422
|
+
// Wooting analog boards expose their command-capable config interface on usage
|
|
423
|
+
// page 0xFF55, usage 0x01. Offer only that page: a board also presents a legacy
|
|
424
|
+
// 0xFF00 collection and the 0xFF53 analog stream, and matching those too would
|
|
425
|
+
// list the same physical keyboard several times in the picker. The driver reads
|
|
426
|
+
// commands through 0xFF55 alone.
|
|
427
|
+
export const WOOTING_HID_FILTERS = WOOTING_PRODUCT_IDS.map((productId) => ({ vendorId: WOOTING_VENDOR_ID, productId, usagePage: WOOTING_CONFIG_USAGE_PAGE, usage: WOOTING_CONFIG_USAGE }));
|
|
428
|
+
export const WALLHACK_HID_FILTERS = [
|
|
429
|
+
...[...WALLHACK_MOUSE_PRODUCT_IDS].map((productId) => ({ vendorId: WALLHACK_VENDOR_ID, productId, usagePage: WALLHACK_MOUSE_USAGE_PAGE, usage: WALLHACK_MOUSE_USAGE })),
|
|
430
|
+
...[...WALLHACK_KEYBOARD_PRODUCT_IDS].flatMap((productId) => [WALLHACK_VENDOR_ID, WALLHACK_KEYBOARD_ALT_VENDOR_ID].map((vendorId) => ({ vendorId, productId, usagePage: WALLHACK_KEYBOARD_USAGE_PAGE, usage: WALLHACK_KEYBOARD_USAGE }))),
|
|
431
|
+
];
|
|
432
|
+
/**
|
|
433
|
+
* Lamzu's own vendor id carries the Inca 8K. Unlike the broad 0x373e filter
|
|
434
|
+
* this one is narrowed to usage page 0xffff, which keeps the mouse, consumer,
|
|
435
|
+
* system and keyboard collections on MI_00/MI_01 out of the picker on any
|
|
436
|
+
* platform that exposes a device's interfaces as separate HIDDevices. It
|
|
437
|
+
* cannot narrow further: the config channel is MI_02, whose usage is 0x0000,
|
|
438
|
+
* and a WebHID filter cannot pin a zero usage.
|
|
439
|
+
*
|
|
440
|
+
* That leaves MI_01's 0xffff/0x01 vendor collection as the only entry this
|
|
441
|
+
* filter still admits, and the driver's feature-report-0 check rejects it — a
|
|
442
|
+
* WebHID enumeration of both connections shows that collection declaring no
|
|
443
|
+
* feature reports at all, while only 0xffff/0x0000 declares report 0. See
|
|
444
|
+
* docs/lamzu-inca-testing.md.
|
|
445
|
+
*
|
|
446
|
+
* On Chrome/Windows the narrowing is moot: all seven collections arrive on a
|
|
447
|
+
* single HIDDevice, so the device is one picker entry whatever the filter says.
|
|
448
|
+
*/
|
|
449
|
+
export const LAMZU_INCA_HID_FILTERS = [...LAMZU_INCA_PRODUCTS.keys()].map((productId) => ({ vendorId: VENDOR_ID.lamzuInca, productId, usagePage: 0xffff }));
|
|
450
|
+
/**
|
|
451
|
+
* GearHub-V5 receivers (Lingbao M5 Pro, Attack Shark R2, …) and the wired
|
|
452
|
+
* product id. 0x3151 is the MicLink/mlzn ODM vendor id, shared with unrelated
|
|
453
|
+
* keyboards and mice, so these are requested per product id rather than
|
|
454
|
+
* vendor-wide.
|
|
455
|
+
*/
|
|
456
|
+
export const GEARHUB_HID_FILTERS = [...GEARHUB_PRODUCTS.keys()].map((productId) => ({ vendorId: GEARHUB_VENDOR_ID, productId, usagePage: 0xffff, usage: 0x02 }));
|
|
457
|
+
// Corsair NXP-family mice answer on the interface whose collection is usage
|
|
458
|
+
// page 0xffc2, usage 4 (64-byte feature reports on id 0). MI_00 also carries
|
|
459
|
+
// an 0xffc2 collection (usage 3) that never answers, so the usage is required
|
|
460
|
+
// or the picker lists the same mouse twice.
|
|
461
|
+
export const CORSAIR_HID_FILTERS = CORSAIR_PRODUCT_IDS.map((productId) => ({
|
|
462
|
+
vendorId: CORSAIR_VENDOR_ID,
|
|
463
|
+
productId,
|
|
464
|
+
usagePage: CORSAIR_USAGE_PAGE,
|
|
465
|
+
usage: CORSAIR_CONFIG_USAGE,
|
|
466
|
+
}));
|
|
467
|
+
export const MICROSOFT_HID_FILTERS = [
|
|
468
|
+
{ vendorId: VENDOR_ID.microsoft, productId: MICROSOFT_PRODUCT_CLASSIC, usagePage: MICROSOFT_CLASSIC_USAGE_PAGE, usage: MICROSOFT_CLASSIC_USAGE }, // Classic
|
|
469
|
+
{ vendorId: VENDOR_ID.microsoft, productId: MICROSOFT_PRODUCT_PRO, usagePage: MICROSOFT_PRO_USAGE_PAGE, usage: MICROSOFT_PRO_USAGE }, // Pro
|
|
470
|
+
];
|
|
471
|
+
/**
|
|
472
|
+
* The Incott 8K wireless mouse (and its charging-state product id) answer the
|
|
473
|
+
* vendor protocol on usage page 0xFF05. Narrowed per product id and usage
|
|
474
|
+
* page, like the other 0x093a filter above, so the picker offers the
|
|
475
|
+
* protocol-carrying collection specifically rather than relying only on the
|
|
476
|
+
* broad Glorious VID-only filter that already happens to admit this VID.
|
|
477
|
+
*/
|
|
478
|
+
export const INCOTT_HID_FILTERS = INCOTT_PRODUCT_IDS.map((productId) => ({
|
|
479
|
+
vendorId: INCOTT_VENDOR_ID,
|
|
480
|
+
productId,
|
|
481
|
+
usagePage: INCOTT_USAGE_PAGE,
|
|
482
|
+
}));
|
|
483
|
+
/**
|
|
484
|
+
* HyperX Pulsefire Haste family. The config channel is the vendor collection
|
|
485
|
+
* on usage page 0xFF00 (usage 0x01). The original wired model enumerates
|
|
486
|
+
* under Kingston VID 0x0951; HP-era models use 0x03F0.
|
|
487
|
+
*/
|
|
488
|
+
export const HYPERX_KINGSTON_HID_FILTERS = [...HYPERX_PULSEFIRE_HASTE_KINGSTON_PIDS].map((productId) => ({ vendorId: VENDOR_ID.hyperxKingston, productId, usagePage: HYPERX_USAGE_PAGE }));
|
|
489
|
+
export const HYPERX_HP_HID_FILTERS = [...HYPERX_PULSEFIRE_HASTE_HP_PIDS].map((productId) => ({ vendorId: VENDOR_ID.hyperxHp, productId, usagePage: HYPERX_USAGE_PAGE }));
|
|
490
|
+
export const HYPERX_HID_FILTERS = [
|
|
491
|
+
...HYPERX_KINGSTON_HID_FILTERS,
|
|
492
|
+
...HYPERX_HP_HID_FILTERS,
|
|
493
|
+
];
|
|
494
|
+
export const SUPPORTED_HID_FILTERS = [
|
|
495
|
+
...ASUS_GLADIUS_II_HID_FILTERS,
|
|
496
|
+
...DAREU_HID_FILTERS,
|
|
497
|
+
...ZAUNKOENIG_PRODUCT_IDS.map((productId) => ({
|
|
498
|
+
vendorId: ZAUNKOENIG_VENDOR_ID,
|
|
499
|
+
productId,
|
|
500
|
+
usagePage: ZAUNKOENIG_USAGE_PAGE,
|
|
501
|
+
})),
|
|
502
|
+
...CORSAIR_HID_FILTERS,
|
|
503
|
+
{ vendorId: VENDOR_ID.finalmouse, productId: 0x0100, usagePage: 0xff00, usage: 0x0001 },
|
|
504
|
+
{ vendorId: VENDOR_ID.pulsar },
|
|
505
|
+
...PULSAR_XS1_HID_FILTERS,
|
|
506
|
+
// The Pulsar 4K Wireless Receiver enumerates under the shared Teevolution/VGN
|
|
507
|
+
// vendor id with a Pulsar-specific product id, so the broad VID-only filter
|
|
508
|
+
// keeps it visible in the picker; the driver disambiguates by product id.
|
|
509
|
+
// Lamzu's Atlantis generation lands here too — 0x3554 is CompX's ODM id, and
|
|
510
|
+
// this filter already surfaces it, so it needs no entry of its own.
|
|
511
|
+
{ vendorId: VENDOR_ID.vgn },
|
|
512
|
+
{ vendorId: VENDOR_ID.endgameGear },
|
|
513
|
+
{ vendorId: VENDOR_ID.wlmouse },
|
|
514
|
+
// 0x373e is the shared CompX ODM vendor id behind Lamzu, CRDRAKO, and
|
|
515
|
+
// Attack Shark. The broad filter surfaces all of them; each driver rejects
|
|
516
|
+
// interfaces that lack the feature-report-0 control channel.
|
|
517
|
+
{ vendorId: VENDOR_ID.lamzu },
|
|
518
|
+
...LAMZU_INCA_HID_FILTERS,
|
|
519
|
+
{ vendorId: VENDOR_ID.orbital, usagePage: 0xff0a, usage: 1 },
|
|
520
|
+
...[...RAWM_PRODUCT_IDS].map((productId) => ({
|
|
521
|
+
vendorId: VENDOR_ID.rawm,
|
|
522
|
+
productId,
|
|
523
|
+
usagePage: RAWM_USAGE_PAGE,
|
|
524
|
+
usage: RAWM_USAGE,
|
|
525
|
+
})),
|
|
526
|
+
// MCHOSE ships keyboards and audio devices under 0x3837 too, so this stays
|
|
527
|
+
// narrowed to the mouse configuration collection rather than the whole VID.
|
|
528
|
+
...MCHOSE_A5_HID_FILTERS,
|
|
529
|
+
// Both mouse generations answer on this collection — the A7 V2 with inverted
|
|
530
|
+
// feature reports, the A7 V3 with its own output-report protocol — so one
|
|
531
|
+
// filter offers the whole mouse line and the drivers split it by product id.
|
|
532
|
+
{ vendorId: VENDOR_ID.mchose, usagePage: MCHOSE_CONFIG_USAGE_PAGE, usage: MCHOSE_CONFIG_USAGE },
|
|
533
|
+
// The MagDock is a separate device on its own usage page; it carries the RGB.
|
|
534
|
+
{ vendorId: VENDOR_ID.mchose, productId: MCHOSE_DOCK_PRODUCT_ID, usagePage: MCHOSE_DOCK_USAGE_PAGE, usage: MCHOSE_DOCK_USAGE },
|
|
535
|
+
...TEEVOLUTION_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.teevolution, productId })),
|
|
536
|
+
...TEEVOLUTION_PRODUCT_IDS.map((productId) => ({
|
|
537
|
+
vendorId: VENDOR_ID.teevolution,
|
|
538
|
+
productId,
|
|
539
|
+
usagePage: TEEVOLUTION_LCD_USAGE_PAGE,
|
|
540
|
+
usage: TEEVOLUTION_LCD_USAGE,
|
|
541
|
+
})),
|
|
542
|
+
...RAZER_MOUSE_DOCK_PRO_CONTROL_FILTERS,
|
|
543
|
+
...RAZER_VIPER_V2_CONTROL_FILTERS,
|
|
544
|
+
...RAZER_VIPER_V3_CONTROL_FILTERS,
|
|
545
|
+
...RAZER_HYPERSPEED_CONTROL_FILTERS,
|
|
546
|
+
...RAZER_VIPER_MINI_CONTROL_FILTERS,
|
|
547
|
+
...RAZER_VIPER_CONTROL_FILTERS,
|
|
548
|
+
{ vendorId: VENDOR_ID.vgn, productId: 0xfb56 },
|
|
549
|
+
{ vendorId: VENDOR_ID.vgn, productId: 0xfb57 },
|
|
550
|
+
{ vendorId: VENDOR_ID.atk, usagePage: 0xff02, usage: 2 },
|
|
551
|
+
...BITMOUSE_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.atk, productId, usagePage: BITMOUSE_USAGE_PAGE, usage: BITMOUSE_USAGE })),
|
|
552
|
+
...ATK_COMPX_PRODUCT_IDS.map((productId) => ({ vendorId: VENDOR_ID.vgn, productId, usagePage: 0xff02, usage: 2 })),
|
|
553
|
+
{ vendorId: VENDOR_ID.attackShark },
|
|
554
|
+
{ vendorId: VENDOR_ID.attackSharkX },
|
|
555
|
+
...RAZER_VIPER_V4_CONTROL_FILTERS,
|
|
556
|
+
...RAZER_DEATHADDER_ESSENTIAL_FILTERS,
|
|
557
|
+
...RAZER_COBRA_FILTERS,
|
|
558
|
+
...KEYCHRON_NAPE_HID_FILTERS,
|
|
559
|
+
...KEYCHRON_M6_HID_FILTERS,
|
|
560
|
+
...RAZER_REGISTRY_FILTERS,
|
|
561
|
+
...RAZER_DEATHADDER_V2_FILTERS,
|
|
562
|
+
...EGG_WE_HID_FILTERS,
|
|
563
|
+
...MODDO_HID_FILTERS,
|
|
564
|
+
...WOOTING_HID_FILTERS,
|
|
565
|
+
...[...NINJUTSO_LEGACY_MOUSE_PRODUCT_IDS, ...NINJUTSO_LEGACY_RECEIVER_PRODUCT_IDS]
|
|
566
|
+
.map((productId) => ({ vendorId: NINJUTSO_LEGACY_VENDOR_ID, productId })),
|
|
567
|
+
...[...NINJUTSO_MOUSE_PRODUCT_IDS, ...NINJUTSO_RECEIVER_PRODUCT_IDS]
|
|
568
|
+
.map((productId) => ({ vendorId: NINJUTSO_VENDOR_ID, productId })),
|
|
569
|
+
...LOGITECH_RECEIVER_FILTERS,
|
|
570
|
+
...LOGITECH_BLUETOOTH_FILTERS,
|
|
571
|
+
...GEARHUB_HID_FILTERS,
|
|
572
|
+
// Fantech mice use vendor usage page 0xFFFF, usage 0x02 for configuration.
|
|
573
|
+
{ vendorId: VENDOR_ID.fantech, usagePage: 0xffff, usage: 0x02 },
|
|
574
|
+
...WALLHACK_HID_FILTERS,
|
|
575
|
+
...[...GWOLVES_PRODUCTS.keys()].map((productId) => ({ vendorId: VENDOR_ID.gwolves, productId, usagePage: 0xff02 })),
|
|
576
|
+
...STEELSERIES_RIVAL3_FILTERS,
|
|
577
|
+
{ vendorId: VENDOR_ID.glorious },
|
|
578
|
+
...GLORIOUS_CLASSIC_HID_FILTERS,
|
|
579
|
+
// K-snake X11 exposes its 0x55-framed control channel on 0xFF01:0x10 for
|
|
580
|
+
// both the wired USB VID and the 2.4 GHz dongle VID.
|
|
581
|
+
{ vendorId: VENDOR_ID.ksnakeUsb, productId: 0x2255, usagePage: 0xff01, usage: 0x10 },
|
|
582
|
+
{ vendorId: VENDOR_ID.ksnakeDongle, productId: 0x2255, usagePage: 0xff01, usage: 0x10 },
|
|
583
|
+
...MICROSOFT_HID_FILTERS,
|
|
584
|
+
...INCOTT_HID_FILTERS,
|
|
585
|
+
...HYPERX_HID_FILTERS,
|
|
586
|
+
];
|
|
587
|
+
//# sourceMappingURL=vendors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendors.js","sourceRoot":"","sources":["../../src/drivers/vendors.ts"],"names":[],"mappings":"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"}
|