@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 @@
|
|
|
1
|
+
{"version":3,"file":"hid.js","sourceRoot":"","sources":["../../../src/drivers/incott/hid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { MouseStatus } from "../mouse-types.ts";
|
|
2
|
+
type LiftOff = NonNullable<MouseStatus["liftOffDistance"]>;
|
|
3
|
+
/**
|
|
4
|
+
* Keychron M6 client for the 0xffc1 vendor collection, the "8k" variant of
|
|
5
|
+
* Keychron Launcher's mouse protocol (63-byte 0xb3/0xb4 reads, 20-byte
|
|
6
|
+
* 0xb5/0xb6 writes). Not the VIA raw-HID protocol the Nape Pro speaks.
|
|
7
|
+
*
|
|
8
|
+
* Status report (0x06) layout, decoded from Keychron Launcher and confirmed
|
|
9
|
+
* on an M6 (firmware 1.0.3, USB) for every field the driver reads:
|
|
10
|
+
* [1] active onboard profile, zero-based; [50] profile count
|
|
11
|
+
* [2..4] per connection (USB, 2.4 GHz, Bluetooth): DPI stage in the low
|
|
12
|
+
* nibble, polling index in the high nibble
|
|
13
|
+
* [5..14] five DPI slots, little-endian 16-bit
|
|
14
|
+
* [15] bits 0-1 lift-off code, bit 2 ripple control, bit 3 angle
|
|
15
|
+
* snapping, bit 4 motion sync, bit 6 reversed scroll
|
|
16
|
+
* [16] DPI stages in use (1-5); unused tail slots keep stale values
|
|
17
|
+
* [17] debounce in ms; [18] sleep timeout in minutes
|
|
18
|
+
* [19] battery percent, bit 7 = charging
|
|
19
|
+
* [43..48] polling table as indexes into POLLING_RATES; [49] its length
|
|
20
|
+
* [52] bit 0 max-speed mode; [53] bit 2 = angle tuning supported
|
|
21
|
+
* [55] sensor angle as a signed byte; [61] lift-off fine level
|
|
22
|
+
* Settings writes are acknowledged with [0xe4, code, command]; code 0 is
|
|
23
|
+
* success and 7 means the command is not supported on this connection.
|
|
24
|
+
* The 0x40 write packet is the DPI part of this layout shifted one byte down
|
|
25
|
+
* (stage at [1..3], slots at [4..13], stage count at [14]).
|
|
26
|
+
*/
|
|
27
|
+
export declare class KeychronM6HidClient {
|
|
28
|
+
readonly device: HIDDevice;
|
|
29
|
+
private openedListener;
|
|
30
|
+
private identity;
|
|
31
|
+
private responseWaiter;
|
|
32
|
+
private readonly onInputReport;
|
|
33
|
+
constructor(device: HIDDevice);
|
|
34
|
+
static isSupported(device: HIDDevice): boolean;
|
|
35
|
+
open(): Promise<void>;
|
|
36
|
+
close(): Promise<void>;
|
|
37
|
+
getDpiOptions(): number[];
|
|
38
|
+
getSleepOptions(): number[];
|
|
39
|
+
getDebounceOptions(): number[];
|
|
40
|
+
readonly canDisableSleep = false;
|
|
41
|
+
readStatus(): Promise<MouseStatus>;
|
|
42
|
+
setDpi(dpi: number): Promise<number>;
|
|
43
|
+
setDpiStageValue(stage: number, dpi: number): Promise<number>;
|
|
44
|
+
setActiveDpiStage(stage: number): Promise<number>;
|
|
45
|
+
setDpiStageCount(count: number): Promise<number>;
|
|
46
|
+
setPollingRate(rateHz: number): Promise<number>;
|
|
47
|
+
setLiftOffDistance(lod: LiftOff): Promise<LiftOff>;
|
|
48
|
+
setMotionSync(enabled: boolean): Promise<boolean>;
|
|
49
|
+
setAngleSnapping(enabled: boolean): Promise<boolean>;
|
|
50
|
+
setRippleControl(enabled: boolean): Promise<boolean>;
|
|
51
|
+
setAngleTuning(degrees: number): Promise<number>;
|
|
52
|
+
setDebounceTime(debounceMs: number): Promise<number>;
|
|
53
|
+
setSleepTimeout(seconds: number): Promise<number>;
|
|
54
|
+
/** Switch the onboard profile (1-based, as the panel numbers them). */
|
|
55
|
+
setProfile(profile: number): Promise<number>;
|
|
56
|
+
private writeSensorFlag;
|
|
57
|
+
/**
|
|
58
|
+
* The 0x42 packet carries every sensor option at once; each toggle byte is
|
|
59
|
+
* 1 = on, 2 = off, 0 = leave alone, so resend the current state with the
|
|
60
|
+
* requested change applied.
|
|
61
|
+
*/
|
|
62
|
+
private writeSensor;
|
|
63
|
+
private requireDpi;
|
|
64
|
+
private requireStage;
|
|
65
|
+
private readSettings;
|
|
66
|
+
/**
|
|
67
|
+
* Firmware string (0x04 on 0xb3) and connection mode (0x02 on 0xb5) never
|
|
68
|
+
* change while connected, so they are read once. Either failing leaves the
|
|
69
|
+
* mouse usable: the mode falls back to what the product ID implies.
|
|
70
|
+
*/
|
|
71
|
+
private readIdentity;
|
|
72
|
+
private parseStatus;
|
|
73
|
+
private dpiSettingsPacket;
|
|
74
|
+
private pollingSettingsPacket;
|
|
75
|
+
private queryStatus;
|
|
76
|
+
private querySettings;
|
|
77
|
+
private writeSettings;
|
|
78
|
+
private query;
|
|
79
|
+
}
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=m6-hid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"m6-hid.d.ts","sourceRoot":"","sources":["../../../src/drivers/keychron/m6-hid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA0CrD,KAAK,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AA4B3D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,cAAc,CAIN;IAEhB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAU5B;gBAEU,MAAM,EAAE,SAAS;IAI7B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO;IAUxC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,aAAa,IAAI,MAAM,EAAE;IAIzB,eAAe,IAAI,MAAM,EAAE;IAI3B,kBAAkB,IAAI,MAAM,EAAE;IAI9B,QAAQ,CAAC,eAAe,SAAS;IAE3B,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAuDlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa7D,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBhD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY/C,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQlD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcpD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBvD,uEAAuE;IACjE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAcpC,eAAe;IAS7B;;;;OAIG;YACW,WAAW;IAezB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;YAMN,YAAY;IAM1B;;;;OAIG;YACW,YAAY;IAY1B,OAAO,CAAC,WAAW;IAqCnB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,qBAAqB;YAUf,WAAW;YAIX,aAAa;YAIb,aAAa;YAab,KAAK;CAyCpB"}
|
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
import { KEYCHRON_M6_COMMAND_REPORT_ID as COMMAND_REPORT_ID, KEYCHRON_M6_PRODUCT_ID as PRODUCT_ID, KEYCHRON_M6_RECEIVER_PRODUCT_ID as RECEIVER_PRODUCT_ID, KEYCHRON_M6_SETTINGS_REPORT_ID as SETTINGS_REPORT_ID, KEYCHRON_M6_STATUS_COMMAND as STATUS_COMMAND, KEYCHRON_M6_STATUS_PACKET_LENGTH as PACKET_LENGTH, KEYCHRON_M6_USAGE as USAGE, KEYCHRON_M6_USAGE_PAGE as USAGE_PAGE, KEYCHRON_VENDOR_ID, } from "@openmouse/protocol/keychron";
|
|
2
|
+
const QUERY_TIMEOUT_MS = 1200;
|
|
3
|
+
const SETTINGS_PACKET_LENGTH = 20;
|
|
4
|
+
const DPI_STAGE_COUNT = 5;
|
|
5
|
+
const DPI_MIN = 100;
|
|
6
|
+
const DPI_MAX = 26_000;
|
|
7
|
+
const DPI_STEP = 50;
|
|
8
|
+
/** Polling table entries index this scale (Keychron Launcher POLLING_RATE_VALUE_SCALE). */
|
|
9
|
+
const POLLING_RATES = [125, 500, 1000, 2000, 4000, 8000];
|
|
10
|
+
const ACK = 0xe4;
|
|
11
|
+
/** Firmware LOD codes on the PAW3950: 1 = 1 mm, 2 = 2 mm, 3 = 0.7 mm. */
|
|
12
|
+
const LOD_BY_LEVEL = { Low: 3, Medium: 1, High: 2 };
|
|
13
|
+
const SLEEP_MINUTES = [1, 3, 5, 10, 15, 30, 60, 120, 240];
|
|
14
|
+
const DEBOUNCE_MAX_MS = 20;
|
|
15
|
+
const ANGLE_LIMIT = 30;
|
|
16
|
+
const PROFILE_MAX = 5;
|
|
17
|
+
/** Commands on the 63-byte 0xb3 report (answers arrive on 0xb4). */
|
|
18
|
+
const CMD = { firmware: 0x04, status: 0x06 };
|
|
19
|
+
/** Commands on the 20-byte 0xb5 report (answers arrive on 0xb6). */
|
|
20
|
+
const SET = {
|
|
21
|
+
version: 0x02,
|
|
22
|
+
sleep: 0x0a,
|
|
23
|
+
profile: 0x0e,
|
|
24
|
+
dpi: 0x40,
|
|
25
|
+
polling: 0x41,
|
|
26
|
+
sensor: 0x42,
|
|
27
|
+
debounce: 0x43,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Keychron M6 client for the 0xffc1 vendor collection, the "8k" variant of
|
|
31
|
+
* Keychron Launcher's mouse protocol (63-byte 0xb3/0xb4 reads, 20-byte
|
|
32
|
+
* 0xb5/0xb6 writes). Not the VIA raw-HID protocol the Nape Pro speaks.
|
|
33
|
+
*
|
|
34
|
+
* Status report (0x06) layout, decoded from Keychron Launcher and confirmed
|
|
35
|
+
* on an M6 (firmware 1.0.3, USB) for every field the driver reads:
|
|
36
|
+
* [1] active onboard profile, zero-based; [50] profile count
|
|
37
|
+
* [2..4] per connection (USB, 2.4 GHz, Bluetooth): DPI stage in the low
|
|
38
|
+
* nibble, polling index in the high nibble
|
|
39
|
+
* [5..14] five DPI slots, little-endian 16-bit
|
|
40
|
+
* [15] bits 0-1 lift-off code, bit 2 ripple control, bit 3 angle
|
|
41
|
+
* snapping, bit 4 motion sync, bit 6 reversed scroll
|
|
42
|
+
* [16] DPI stages in use (1-5); unused tail slots keep stale values
|
|
43
|
+
* [17] debounce in ms; [18] sleep timeout in minutes
|
|
44
|
+
* [19] battery percent, bit 7 = charging
|
|
45
|
+
* [43..48] polling table as indexes into POLLING_RATES; [49] its length
|
|
46
|
+
* [52] bit 0 max-speed mode; [53] bit 2 = angle tuning supported
|
|
47
|
+
* [55] sensor angle as a signed byte; [61] lift-off fine level
|
|
48
|
+
* Settings writes are acknowledged with [0xe4, code, command]; code 0 is
|
|
49
|
+
* success and 7 means the command is not supported on this connection.
|
|
50
|
+
* The 0x40 write packet is the DPI part of this layout shifted one byte down
|
|
51
|
+
* (stage at [1..3], slots at [4..13], stage count at [14]).
|
|
52
|
+
*/
|
|
53
|
+
export class KeychronM6HidClient {
|
|
54
|
+
device;
|
|
55
|
+
openedListener = false;
|
|
56
|
+
identity = null;
|
|
57
|
+
responseWaiter = null;
|
|
58
|
+
onInputReport = (event) => {
|
|
59
|
+
if (!this.responseWaiter)
|
|
60
|
+
return;
|
|
61
|
+
const bytes = new Uint8Array(event.data.buffer.slice(event.data.byteOffset, event.data.byteOffset + event.data.byteLength));
|
|
62
|
+
if (!this.responseWaiter.match(bytes))
|
|
63
|
+
return;
|
|
64
|
+
const waiter = this.responseWaiter;
|
|
65
|
+
this.responseWaiter = null;
|
|
66
|
+
waiter.resolve(bytes);
|
|
67
|
+
};
|
|
68
|
+
constructor(device) {
|
|
69
|
+
this.device = device;
|
|
70
|
+
}
|
|
71
|
+
static isSupported(device) {
|
|
72
|
+
return device.vendorId === KEYCHRON_VENDOR_ID
|
|
73
|
+
&& (device.productId === PRODUCT_ID || device.productId === RECEIVER_PRODUCT_ID)
|
|
74
|
+
&& device.collections.some((collection) => collection.usagePage === USAGE_PAGE
|
|
75
|
+
&& collection.usage === USAGE
|
|
76
|
+
&& collection.outputReports.some((report) => report.reportId === COMMAND_REPORT_ID)
|
|
77
|
+
&& collection.inputReports.some((report) => report.reportId === COMMAND_REPORT_ID + 1));
|
|
78
|
+
}
|
|
79
|
+
async open() {
|
|
80
|
+
if (!this.device.opened)
|
|
81
|
+
await this.device.open();
|
|
82
|
+
if (!this.openedListener) {
|
|
83
|
+
this.device.addEventListener("inputreport", this.onInputReport);
|
|
84
|
+
this.openedListener = true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async close() {
|
|
88
|
+
if (this.openedListener) {
|
|
89
|
+
this.device.removeEventListener("inputreport", this.onInputReport);
|
|
90
|
+
this.openedListener = false;
|
|
91
|
+
}
|
|
92
|
+
this.responseWaiter?.reject(new Error("The Keychron M6 device was closed."));
|
|
93
|
+
this.responseWaiter = null;
|
|
94
|
+
if (this.device.opened)
|
|
95
|
+
await this.device.close();
|
|
96
|
+
}
|
|
97
|
+
getDpiOptions() {
|
|
98
|
+
return Array.from({ length: (DPI_MAX - DPI_MIN) / DPI_STEP + 1 }, (_, index) => DPI_MIN + index * DPI_STEP);
|
|
99
|
+
}
|
|
100
|
+
getSleepOptions() {
|
|
101
|
+
return SLEEP_MINUTES.map((minutes) => minutes * 60);
|
|
102
|
+
}
|
|
103
|
+
getDebounceOptions() {
|
|
104
|
+
return Array.from({ length: DEBOUNCE_MAX_MS + 1 }, (_, ms) => ms);
|
|
105
|
+
}
|
|
106
|
+
canDisableSleep = false;
|
|
107
|
+
async readStatus() {
|
|
108
|
+
await this.open();
|
|
109
|
+
const identity = await this.readIdentity();
|
|
110
|
+
const settings = this.parseStatus(await this.queryStatus(), identity.workMode);
|
|
111
|
+
const dpi = settings.dpiStages[settings.activeDpiStage] ?? settings.dpiStages[0] ?? 800;
|
|
112
|
+
const pollingRateHz = POLLING_RATES[settings.pollingTable[settings.pollingIndex] ?? 2] ?? 1000;
|
|
113
|
+
const supportedPollingRates = settings.pollingTable
|
|
114
|
+
.map((value) => POLLING_RATES[value])
|
|
115
|
+
.filter((value) => value !== undefined)
|
|
116
|
+
.sort((a, b) => a - b);
|
|
117
|
+
const liftOffDistance = Object.keys(LOD_BY_LEVEL)
|
|
118
|
+
.find((level) => LOD_BY_LEVEL[level] === settings.lod) ?? null;
|
|
119
|
+
return {
|
|
120
|
+
brand: "Keychron",
|
|
121
|
+
name: "Keychron M6",
|
|
122
|
+
ui: {
|
|
123
|
+
family: "keychron-m6",
|
|
124
|
+
defaultDisplayName: "Keychron M6",
|
|
125
|
+
hideUnsupportedPollingRates: true,
|
|
126
|
+
forceShowBattery: true,
|
|
127
|
+
statusNote: "Lift-off: Low is 0.7 mm, Medium is 1 mm, High is 2 mm.",
|
|
128
|
+
dpiStageEditor: {
|
|
129
|
+
maxStages: DPI_STAGE_COUNT,
|
|
130
|
+
countEditable: true,
|
|
131
|
+
minDpi: DPI_MIN,
|
|
132
|
+
maxDpi: DPI_MAX,
|
|
133
|
+
stepDpi: DPI_STEP,
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
batteryPercent: settings.batteryPercent <= 100 ? settings.batteryPercent : null,
|
|
137
|
+
batteryState: settings.charging ? "Charging" : "Discharging",
|
|
138
|
+
dpi,
|
|
139
|
+
dpiStages: settings.dpiStages.slice(0, settings.stageCount),
|
|
140
|
+
activeDpiStage: settings.activeDpiStage,
|
|
141
|
+
pollingRateHz,
|
|
142
|
+
supportedPollingRates: supportedPollingRates.length ? supportedPollingRates : [pollingRateHz],
|
|
143
|
+
activeProfile: settings.profileCount > 1 ? settings.profile + 1 : null,
|
|
144
|
+
profileCount: settings.profileCount > 1 ? settings.profileCount : undefined,
|
|
145
|
+
connectionType: this.device.productId === RECEIVER_PRODUCT_ID ? "Wireless" : "Wired",
|
|
146
|
+
connectionDetail: this.device.productId === RECEIVER_PRODUCT_ID
|
|
147
|
+
? "2.4 GHz (Keychron Link-KM)"
|
|
148
|
+
: "Wired USB",
|
|
149
|
+
liftOffDistance,
|
|
150
|
+
supportedLiftOffDistances: Object.keys(LOD_BY_LEVEL),
|
|
151
|
+
motionSync: settings.motionSync,
|
|
152
|
+
angleSnapping: settings.angleSnapping,
|
|
153
|
+
rippleControl: settings.rippleControl,
|
|
154
|
+
angleTuning: settings.angleSupported ? settings.angle : undefined,
|
|
155
|
+
debounceMs: settings.debounceMs,
|
|
156
|
+
sleepTimeout: settings.sleepMinutes > 0 && settings.sleepMinutes < 0xff ? settings.sleepMinutes * 60 : null,
|
|
157
|
+
firmware: [identity.firmware ?? "Firmware unavailable"],
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
async setDpi(dpi) {
|
|
161
|
+
this.requireDpi(dpi);
|
|
162
|
+
const settings = await this.readSettings();
|
|
163
|
+
settings.dpiStages[settings.activeDpiStage] = dpi;
|
|
164
|
+
await this.writeSettings(this.dpiSettingsPacket(settings));
|
|
165
|
+
const confirmed = (await this.readSettings()).dpiStages[settings.activeDpiStage];
|
|
166
|
+
if (confirmed !== dpi)
|
|
167
|
+
throw new Error(`The Keychron M6 kept ${confirmed} DPI instead of ${dpi} DPI.`);
|
|
168
|
+
return confirmed;
|
|
169
|
+
}
|
|
170
|
+
async setDpiStageValue(stage, dpi) {
|
|
171
|
+
this.requireDpi(dpi);
|
|
172
|
+
const settings = await this.readSettings();
|
|
173
|
+
this.requireStage(stage, settings.stageCount);
|
|
174
|
+
settings.dpiStages[stage] = dpi;
|
|
175
|
+
await this.writeSettings(this.dpiSettingsPacket(settings));
|
|
176
|
+
const confirmed = (await this.readSettings()).dpiStages[stage];
|
|
177
|
+
if (confirmed !== dpi) {
|
|
178
|
+
throw new Error(`The Keychron M6 kept ${confirmed} DPI on stage ${stage + 1} instead of ${dpi} DPI.`);
|
|
179
|
+
}
|
|
180
|
+
return confirmed;
|
|
181
|
+
}
|
|
182
|
+
async setActiveDpiStage(stage) {
|
|
183
|
+
const settings = await this.readSettings();
|
|
184
|
+
this.requireStage(stage, settings.stageCount);
|
|
185
|
+
settings.activeDpiStage = stage;
|
|
186
|
+
await this.writeSettings(this.dpiSettingsPacket(settings));
|
|
187
|
+
const confirmed = (await this.readSettings()).activeDpiStage;
|
|
188
|
+
if (confirmed !== stage)
|
|
189
|
+
throw new Error(`The Keychron M6 kept DPI stage ${confirmed + 1}.`);
|
|
190
|
+
return confirmed;
|
|
191
|
+
}
|
|
192
|
+
async setDpiStageCount(count) {
|
|
193
|
+
if (!Number.isInteger(count) || count < 1 || count > DPI_STAGE_COUNT) {
|
|
194
|
+
throw new Error(`The Keychron M6 holds between 1 and ${DPI_STAGE_COUNT} DPI stages.`);
|
|
195
|
+
}
|
|
196
|
+
const settings = await this.readSettings();
|
|
197
|
+
settings.stageCount = count;
|
|
198
|
+
// All five hardware slots keep their DPI; the count only decides how many
|
|
199
|
+
// the DPI button cycles through. The active stage rides along on the same
|
|
200
|
+
// packet, so shrinking past it would write a stage the mouse cannot hold.
|
|
201
|
+
if (settings.activeDpiStage >= count)
|
|
202
|
+
settings.activeDpiStage = count - 1;
|
|
203
|
+
await this.writeSettings(this.dpiSettingsPacket(settings));
|
|
204
|
+
const confirmed = (await this.readSettings()).stageCount;
|
|
205
|
+
if (confirmed !== count) {
|
|
206
|
+
throw new Error(`The Keychron M6 kept ${confirmed} DPI stages instead of ${count}.`);
|
|
207
|
+
}
|
|
208
|
+
return confirmed;
|
|
209
|
+
}
|
|
210
|
+
async setPollingRate(rateHz) {
|
|
211
|
+
const settings = await this.readSettings();
|
|
212
|
+
const pollingIndex = settings.pollingTable.findIndex((value) => POLLING_RATES[value] === rateHz);
|
|
213
|
+
if (pollingIndex < 0)
|
|
214
|
+
throw new Error(`The Keychron M6 does not support ${rateHz} Hz on this connection.`);
|
|
215
|
+
settings.pollingIndex = pollingIndex;
|
|
216
|
+
await this.writeSettings(this.pollingSettingsPacket(settings));
|
|
217
|
+
const confirmed = await this.readSettings();
|
|
218
|
+
const actual = POLLING_RATES[confirmed.pollingTable[confirmed.pollingIndex] ?? 2] ?? 1000;
|
|
219
|
+
if (actual !== rateHz)
|
|
220
|
+
throw new Error(`The Keychron M6 kept ${actual} Hz instead of ${rateHz} Hz.`);
|
|
221
|
+
return actual;
|
|
222
|
+
}
|
|
223
|
+
async setLiftOffDistance(lod) {
|
|
224
|
+
const code = LOD_BY_LEVEL[lod];
|
|
225
|
+
if (code === undefined)
|
|
226
|
+
throw new Error(`The Keychron M6 has no ${lod} lift-off distance.`);
|
|
227
|
+
const confirmed = await this.writeSensor({ lod: code });
|
|
228
|
+
if (confirmed.lod !== code)
|
|
229
|
+
throw new Error(`The Keychron M6 kept lift-off code ${confirmed.lod}.`);
|
|
230
|
+
return lod;
|
|
231
|
+
}
|
|
232
|
+
async setMotionSync(enabled) {
|
|
233
|
+
return this.writeSensorFlag("motionSync", enabled);
|
|
234
|
+
}
|
|
235
|
+
async setAngleSnapping(enabled) {
|
|
236
|
+
return this.writeSensorFlag("angleSnapping", enabled);
|
|
237
|
+
}
|
|
238
|
+
async setRippleControl(enabled) {
|
|
239
|
+
return this.writeSensorFlag("rippleControl", enabled);
|
|
240
|
+
}
|
|
241
|
+
async setAngleTuning(degrees) {
|
|
242
|
+
if (!Number.isInteger(degrees) || Math.abs(degrees) > ANGLE_LIMIT) {
|
|
243
|
+
throw new Error(`Keychron M6 angle tuning must be a whole number between -${ANGLE_LIMIT} and ${ANGLE_LIMIT} degrees.`);
|
|
244
|
+
}
|
|
245
|
+
if (!(await this.readSettings()).angleSupported) {
|
|
246
|
+
throw new Error("This Keychron M6 firmware does not support angle tuning.");
|
|
247
|
+
}
|
|
248
|
+
const packet = new Uint8Array(SETTINGS_PACKET_LENGTH);
|
|
249
|
+
packet[0] = SET.sensor;
|
|
250
|
+
packet[9] = 2;
|
|
251
|
+
packet[10] = degrees & 0xff;
|
|
252
|
+
await this.writeSettings(packet);
|
|
253
|
+
const confirmed = (await this.readSettings()).angle;
|
|
254
|
+
if (confirmed !== degrees)
|
|
255
|
+
throw new Error(`The Keychron M6 kept a ${confirmed}° sensor angle instead of ${degrees}°.`);
|
|
256
|
+
return confirmed;
|
|
257
|
+
}
|
|
258
|
+
async setDebounceTime(debounceMs) {
|
|
259
|
+
if (!Number.isInteger(debounceMs) || debounceMs < 0 || debounceMs > DEBOUNCE_MAX_MS) {
|
|
260
|
+
throw new Error(`Keychron M6 debounce must be between 0 and ${DEBOUNCE_MAX_MS} ms.`);
|
|
261
|
+
}
|
|
262
|
+
await this.open();
|
|
263
|
+
const packet = new Uint8Array(SETTINGS_PACKET_LENGTH);
|
|
264
|
+
packet[0] = SET.debounce;
|
|
265
|
+
packet[1] = debounceMs;
|
|
266
|
+
await this.writeSettings(packet);
|
|
267
|
+
const confirmed = (await this.readSettings()).debounceMs;
|
|
268
|
+
if (confirmed !== debounceMs)
|
|
269
|
+
throw new Error(`The Keychron M6 kept ${confirmed} ms debounce instead of ${debounceMs} ms.`);
|
|
270
|
+
return confirmed;
|
|
271
|
+
}
|
|
272
|
+
async setSleepTimeout(seconds) {
|
|
273
|
+
const minutes = Math.round(seconds / 60);
|
|
274
|
+
if (!SLEEP_MINUTES.includes(minutes)) {
|
|
275
|
+
throw new Error(`Keychron M6 sleep timeout must be one of ${SLEEP_MINUTES.join(", ")} minutes.`);
|
|
276
|
+
}
|
|
277
|
+
await this.open();
|
|
278
|
+
const packet = new Uint8Array(SETTINGS_PACKET_LENGTH);
|
|
279
|
+
packet[0] = SET.sleep;
|
|
280
|
+
packet[1] = 1;
|
|
281
|
+
packet[2] = minutes;
|
|
282
|
+
await this.writeSettings(packet);
|
|
283
|
+
const confirmed = (await this.readSettings()).sleepMinutes;
|
|
284
|
+
if (confirmed !== minutes)
|
|
285
|
+
throw new Error(`The Keychron M6 kept a ${confirmed} minute sleep timeout instead of ${minutes}.`);
|
|
286
|
+
return confirmed * 60;
|
|
287
|
+
}
|
|
288
|
+
/** Switch the onboard profile (1-based, as the panel numbers them). */
|
|
289
|
+
async setProfile(profile) {
|
|
290
|
+
const settings = await this.readSettings();
|
|
291
|
+
if (!Number.isInteger(profile) || profile < 1 || profile > Math.min(settings.profileCount, PROFILE_MAX)) {
|
|
292
|
+
throw new Error(`Keychron M6 profile must be between 1 and ${settings.profileCount}.`);
|
|
293
|
+
}
|
|
294
|
+
const packet = new Uint8Array(SETTINGS_PACKET_LENGTH);
|
|
295
|
+
packet[0] = SET.profile;
|
|
296
|
+
packet[1] = profile - 1;
|
|
297
|
+
await this.writeSettings(packet);
|
|
298
|
+
const confirmed = (await this.readSettings()).profile + 1;
|
|
299
|
+
if (confirmed !== profile)
|
|
300
|
+
throw new Error(`The Keychron M6 kept profile ${confirmed}.`);
|
|
301
|
+
return confirmed;
|
|
302
|
+
}
|
|
303
|
+
async writeSensorFlag(flag, enabled) {
|
|
304
|
+
const confirmed = await this.writeSensor({ [flag]: enabled });
|
|
305
|
+
if (confirmed[flag] !== enabled)
|
|
306
|
+
throw new Error(`The Keychron M6 kept ${flag} ${confirmed[flag] ? "on" : "off"}.`);
|
|
307
|
+
return confirmed[flag];
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* The 0x42 packet carries every sensor option at once; each toggle byte is
|
|
311
|
+
* 1 = on, 2 = off, 0 = leave alone, so resend the current state with the
|
|
312
|
+
* requested change applied.
|
|
313
|
+
*/
|
|
314
|
+
async writeSensor(change) {
|
|
315
|
+
const settings = { ...(await this.readSettings()), ...change };
|
|
316
|
+
const packet = new Uint8Array(SETTINGS_PACKET_LENGTH);
|
|
317
|
+
packet[0] = SET.sensor;
|
|
318
|
+
packet[1] = settings.lod;
|
|
319
|
+
packet[2] = settings.rippleControl ? 1 : 2;
|
|
320
|
+
packet[3] = settings.angleSnapping ? 1 : 2;
|
|
321
|
+
packet[4] = settings.motionSync ? 1 : 2;
|
|
322
|
+
packet[6] = settings.scrollReversed ? 2 : 1;
|
|
323
|
+
packet[8] = settings.maxSpeed ? 2 : 1;
|
|
324
|
+
packet[11] = settings.lodLevel;
|
|
325
|
+
await this.writeSettings(packet);
|
|
326
|
+
return await this.readSettings();
|
|
327
|
+
}
|
|
328
|
+
requireDpi(dpi) {
|
|
329
|
+
if (!Number.isInteger(dpi) || dpi < DPI_MIN || dpi > DPI_MAX || dpi % DPI_STEP !== 0) {
|
|
330
|
+
throw new Error(`Keychron M6 DPI must be a multiple of ${DPI_STEP} between ${DPI_MIN} and ${DPI_MAX}.`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
requireStage(stage, stageCount) {
|
|
334
|
+
if (!Number.isInteger(stage) || stage < 0 || stage >= stageCount) {
|
|
335
|
+
throw new Error(`DPI stage must be between 1 and ${stageCount}.`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
async readSettings() {
|
|
339
|
+
await this.open();
|
|
340
|
+
const identity = await this.readIdentity();
|
|
341
|
+
return this.parseStatus(await this.queryStatus(), identity.workMode);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Firmware string (0x04 on 0xb3) and connection mode (0x02 on 0xb5) never
|
|
345
|
+
* change while connected, so they are read once. Either failing leaves the
|
|
346
|
+
* mouse usable: the mode falls back to what the product ID implies.
|
|
347
|
+
*/
|
|
348
|
+
async readIdentity() {
|
|
349
|
+
if (this.identity)
|
|
350
|
+
return this.identity;
|
|
351
|
+
const fallbackMode = this.device.productId === RECEIVER_PRODUCT_ID ? 1 : 0;
|
|
352
|
+
const version = await this.querySettings(SET.version, [fallbackMode]).catch(() => null);
|
|
353
|
+
const workMode = version ? (version[9] ?? fallbackMode) & 0x07 : fallbackMode;
|
|
354
|
+
const firmware = await this.query(COMMAND_REPORT_ID, PACKET_LENGTH, [CMD.firmware, workMode], (bytes) => bytes[0] === CMD.firmware)
|
|
355
|
+
.then((bytes) => decodeFirmwareString(bytes) ?? (version ? decodeFirmwareNibbles(version) : null))
|
|
356
|
+
.catch(() => (version ? decodeFirmwareNibbles(version) : null));
|
|
357
|
+
this.identity = { firmware, workMode };
|
|
358
|
+
return this.identity;
|
|
359
|
+
}
|
|
360
|
+
parseStatus(bytes, workMode) {
|
|
361
|
+
if (bytes.length < 51 || bytes[0] !== STATUS_COMMAND) {
|
|
362
|
+
throw new Error("The Keychron M6 returned an invalid status report.");
|
|
363
|
+
}
|
|
364
|
+
const dpiStages = Array.from({ length: DPI_STAGE_COUNT }, (_, index) => {
|
|
365
|
+
const offset = 5 + index * 2;
|
|
366
|
+
return (bytes[offset] ?? 0) | ((bytes[offset + 1] ?? 0) << 8);
|
|
367
|
+
});
|
|
368
|
+
const pollingCount = Math.min(bytes[49] || 6, 6);
|
|
369
|
+
const stageCount = Math.min(bytes[16] || DPI_STAGE_COUNT, DPI_STAGE_COUNT);
|
|
370
|
+
const levels = bytes[2 + Math.min(workMode, 2)] ?? 0;
|
|
371
|
+
const flags = bytes[15] ?? 0;
|
|
372
|
+
const angle = bytes[55] ?? 0;
|
|
373
|
+
return {
|
|
374
|
+
profile: bytes[1] ?? 0,
|
|
375
|
+
profileCount: Math.min(bytes[50] ?? 0, PROFILE_MAX),
|
|
376
|
+
activeDpiStage: Math.min(levels & 0x0f, stageCount - 1),
|
|
377
|
+
dpiStages,
|
|
378
|
+
stageCount,
|
|
379
|
+
pollingTable: Array.from(bytes.slice(43, 43 + pollingCount)),
|
|
380
|
+
pollingIndex: (levels >> 4) & 0x0f,
|
|
381
|
+
lod: flags & 0x03,
|
|
382
|
+
lodLevel: bytes[61] ?? 0,
|
|
383
|
+
rippleControl: (flags & 0x04) !== 0,
|
|
384
|
+
angleSnapping: (flags & 0x08) !== 0,
|
|
385
|
+
motionSync: (flags & 0x10) !== 0,
|
|
386
|
+
scrollReversed: (flags & 0x40) !== 0,
|
|
387
|
+
maxSpeed: ((bytes[52] ?? 0) & 0x01) !== 0,
|
|
388
|
+
angle: angle > 127 ? angle - 256 : angle,
|
|
389
|
+
angleSupported: ((bytes[53] ?? 0) & 0x04) !== 0,
|
|
390
|
+
debounceMs: bytes[17] ?? 0,
|
|
391
|
+
sleepMinutes: bytes[18] ?? 0,
|
|
392
|
+
batteryPercent: (bytes[19] ?? 0) & 0x7f,
|
|
393
|
+
charging: ((bytes[19] ?? 0) & 0x80) !== 0,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
dpiSettingsPacket(settings) {
|
|
397
|
+
const packet = new Uint8Array(SETTINGS_PACKET_LENGTH);
|
|
398
|
+
packet[0] = SET.dpi;
|
|
399
|
+
packet[1] = settings.activeDpiStage;
|
|
400
|
+
packet[2] = settings.activeDpiStage;
|
|
401
|
+
packet[3] = settings.activeDpiStage;
|
|
402
|
+
settings.dpiStages.forEach((dpi, index) => {
|
|
403
|
+
packet[4 + index * 2] = dpi & 0xff;
|
|
404
|
+
packet[5 + index * 2] = (dpi >> 8) & 0xff;
|
|
405
|
+
});
|
|
406
|
+
packet[14] = settings.stageCount;
|
|
407
|
+
return packet;
|
|
408
|
+
}
|
|
409
|
+
pollingSettingsPacket(settings) {
|
|
410
|
+
const packet = new Uint8Array(SETTINGS_PACKET_LENGTH);
|
|
411
|
+
packet[0] = SET.polling;
|
|
412
|
+
packet[1] = settings.pollingIndex;
|
|
413
|
+
packet[2] = settings.pollingIndex;
|
|
414
|
+
packet[9] = settings.pollingTable.length;
|
|
415
|
+
packet.set(settings.pollingTable.slice(0, 6), 3);
|
|
416
|
+
return packet;
|
|
417
|
+
}
|
|
418
|
+
async queryStatus() {
|
|
419
|
+
return await this.query(COMMAND_REPORT_ID, PACKET_LENGTH, [STATUS_COMMAND], (bytes) => bytes[0] === STATUS_COMMAND);
|
|
420
|
+
}
|
|
421
|
+
async querySettings(command, args) {
|
|
422
|
+
return await this.query(SETTINGS_REPORT_ID, SETTINGS_PACKET_LENGTH, [command, ...args], (bytes) => bytes[0] === command);
|
|
423
|
+
}
|
|
424
|
+
async writeSettings(packet) {
|
|
425
|
+
const command = packet[0] ?? 0;
|
|
426
|
+
const reply = await this.query(SETTINGS_REPORT_ID, SETTINGS_PACKET_LENGTH, Array.from(packet), (bytes) => bytes[0] === command || (bytes[0] === ACK && bytes[2] === command));
|
|
427
|
+
if (reply[0] === ACK && reply[1] !== 0) {
|
|
428
|
+
throw new Error(`The Keychron M6 rejected command 0x${command.toString(16)} (code ${reply[1]}).`);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
async query(reportId, length, payload, match) {
|
|
432
|
+
if (this.responseWaiter)
|
|
433
|
+
throw new Error("Another Keychron M6 request is already in progress.");
|
|
434
|
+
const packet = new Uint8Array(length);
|
|
435
|
+
packet.set(payload.slice(0, length));
|
|
436
|
+
let timeout = 0;
|
|
437
|
+
let rejectResponse = null;
|
|
438
|
+
const response = new Promise((resolve, reject) => {
|
|
439
|
+
rejectResponse = reject;
|
|
440
|
+
timeout = window.setTimeout(() => {
|
|
441
|
+
this.responseWaiter = null;
|
|
442
|
+
reject(new Error(`The Keychron M6 did not answer command 0x${packet[0]?.toString(16)}.`));
|
|
443
|
+
}, QUERY_TIMEOUT_MS);
|
|
444
|
+
this.responseWaiter = {
|
|
445
|
+
match,
|
|
446
|
+
resolve: (bytes) => {
|
|
447
|
+
window.clearTimeout(timeout);
|
|
448
|
+
resolve(bytes);
|
|
449
|
+
},
|
|
450
|
+
reject: (reason) => {
|
|
451
|
+
window.clearTimeout(timeout);
|
|
452
|
+
reject(reason);
|
|
453
|
+
},
|
|
454
|
+
};
|
|
455
|
+
});
|
|
456
|
+
void response.catch(() => undefined);
|
|
457
|
+
try {
|
|
458
|
+
await this.device.sendReport(reportId, packet.buffer);
|
|
459
|
+
}
|
|
460
|
+
catch (error) {
|
|
461
|
+
this.responseWaiter = null;
|
|
462
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
463
|
+
rejectResponse?.(new Error(`Chrome could not write Keychron M6 HID report. ${detail}`));
|
|
464
|
+
}
|
|
465
|
+
return await response;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
/** 0x04 answer: [1] is the length of the ASCII version that starts at [2]. */
|
|
469
|
+
function decodeFirmwareString(bytes) {
|
|
470
|
+
const length = Math.min(bytes[1] ?? 0, bytes.length - 2);
|
|
471
|
+
const text = Array.from(bytes.slice(2, 2 + length))
|
|
472
|
+
.filter((byte) => byte >= 0x20 && byte < 0x7f)
|
|
473
|
+
.map((byte) => String.fromCharCode(byte))
|
|
474
|
+
.join("")
|
|
475
|
+
.trim();
|
|
476
|
+
if (!text)
|
|
477
|
+
return null;
|
|
478
|
+
return text.startsWith("v") ? text : `v${text}`;
|
|
479
|
+
}
|
|
480
|
+
/** 0x02 answer: major at [8], minor and patch in the nibbles of [7]. */
|
|
481
|
+
function decodeFirmwareNibbles(bytes) {
|
|
482
|
+
if (bytes.length < 9)
|
|
483
|
+
return null;
|
|
484
|
+
return `v${bytes[8]}.${(bytes[7] ?? 0) >> 4}.${(bytes[7] ?? 0) & 0x0f}`;
|
|
485
|
+
}
|
|
486
|
+
//# sourceMappingURL=m6-hid.js.map
|