wvke-sdk 1.0.20260422
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/README.md +180 -0
- package/dist/assets/image/axis/ef/wc/icon.png.wvke +0 -0
- package/dist/assets/image/axis/ef/wc/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/ef/wc/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/37B/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/37B/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/37B/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20F/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20F/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20F/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20S/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20T/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20T/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20T/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20U/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20U/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20U/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20U-020/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20U-020/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-20U-020/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-37C/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ABL/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ABL/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ABL/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ARI/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ARI/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ARI/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-CYULTRA/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-CYULTRA/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-CYULTRA/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-GAME/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-GAME/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-GAME/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-GAMEL/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-GAMEL/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-GAMEL/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-HL/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-HL/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-HL/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-LYZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-LYZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-LYZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-MAX/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-MAX/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-MAX/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-PRO/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-PRO/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-PRO/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-SDZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-SDZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-SDZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-SJZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-SJZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-SJZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-XHBZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-XHBZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-XHBZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-XHFZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-XHFZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-XHFZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YHZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YHZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YHZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YHZP/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YHZP/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YHZP/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YJZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YJZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YJZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YLZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YLZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-YLZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ZL/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ZL/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ZL/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ZLZ/icon.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ZLZ/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/gateron/KS-ZLZ/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/hexgears/bl/icon.png.wvke +0 -0
- package/dist/assets/image/axis/hexgears/bl/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/hexgears/bl/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/hexgears/vc/icon.png.wvke +0 -0
- package/dist/assets/image/axis/hexgears/vc/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/hexgears/vc/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/bjl/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/bjl/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/bjl/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/bl/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/bl/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/bl/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/boxdg/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/boxdg/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/boxdg/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/cs/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/cs/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/cs/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/jc/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/jc/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/jc/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/jgz/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/jgz/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/jgz/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/lm/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/lm/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/lm/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/lr/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/lr/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/lr/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/mxdg/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/mxdg/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/mxdg/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/ql/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/ql/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/ql/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/sm/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/sm/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/sm/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/tkc/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/tkc/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/tkc/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/vc/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/vc/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/vc/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/xc/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/xc/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/xc/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/zy/icon.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/zy/z_b.png.wvke +0 -0
- package/dist/assets/image/axis/kailh/zy/z_y.png.wvke +0 -0
- package/dist/assets/image/axis/ttc/jcz/icon.png.wvke +0 -0
- package/dist/assets/image/axis/ttc/pom/icon.png.wvke +0 -0
- package/dist/assets/image/axis/ttc/rgbwcw/icon.png.wvke +0 -0
- package/dist/assets/image/axis/ttc/twc/icon.png.wvke +0 -0
- package/dist/assets/image/axis/ttc/wcw/icon.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/BrightnessD.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/BrightnessU.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/Mute.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/Playpause.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/calc.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/email.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/next.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/player.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/previous.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/profiles.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/stop.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/volume+.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/volume-.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/web_back.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/web_bookmarks.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/web_home.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/web_refresh.png.wvke +0 -0
- package/dist/assets/image/command_icon/media/web_search.png.wvke +0 -0
- package/dist/assets/image/command_icon/media//350/247/243/351/224/201/351/224/201.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/back.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/forward.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/leftkey.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/middlekey.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/rightkey.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/xj.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/xjj.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/yj.png.wvke +0 -0
- package/dist/assets/image/command_icon/mouse/yjj.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/Lockcomputer.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/Print.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/Selectall.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/copy.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/desktop.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/find.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/mycomputer.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/newfile.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/paste.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/revoke.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/run.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/save.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/shear.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/togglewindow.png.wvke +0 -0
- package/dist/assets/image/command_icon/system/windowClose.png.wvke +0 -0
- package/dist/assets/image/tools/ADD.png.wvke +0 -0
- package/dist/assets/image/tools/DKS.png.wvke +0 -0
- package/dist/assets/image/tools/END.png.wvke +0 -0
- package/dist/assets/image/tools/HOTKEY.png.wvke +0 -0
- package/dist/assets/image/tools/MACRO.png.wvke +0 -0
- package/dist/assets/image/tools/MPT.png.wvke +0 -0
- package/dist/assets/image/tools/MT.png.wvke +0 -0
- package/dist/assets/image/tools/REST.png.wvke +0 -0
- package/dist/assets/image/tools/RS.png.wvke +0 -0
- package/dist/assets/image/tools/SOCD.png.wvke +0 -0
- package/dist/assets/image/tools/TGL.png.wvke +0 -0
- package/dist/assets/image/tools/auto.png.wvke +0 -0
- package/dist/assets/image/tools/folder.png.wvke +0 -0
- package/dist/assets/image/tools/link.png.wvke +0 -0
- package/dist/assets/image/tools/macro_type.png.wvke +0 -0
- package/dist/assets/image/tools/password.png.wvke +0 -0
- package/dist/assets/image/tools/site.png.wvke +0 -0
- package/dist/assets/image/tools/txt.png.wvke +0 -0
- package/dist/favicon.svg +24 -0
- package/dist/icons.svg +24 -0
- package/dist/index.d.ts +565 -0
- package/dist/logo.svg +34 -0
- package/dist/wvke-sdk.es.js +6649 -0
- package/dist/wvke-sdk.umd.js +1 -0
- package/package.json +17 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.WvkeSdk={}))})(this,function(e){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var t={RESPONSE_CODE:{DEVICE_CODE:`0x81`,RM6X21_CODE:`0xAB`,GLOBAL_FUNC_CODE:`0x80`,GLOBAL_LIGTH_CODE:`0x98`,GLOBAL_BATTERY_CODE:`0xB7`,GLOBAL_LOGO_LIGTH_CODE:`0x99`,GLOBAL_JOURNEY_CODE:`0xA9`,RT_ALL_JOURNEY_CODE:`0x80`,RM6X21_JOURNEY_CODE:`0x92`,RM6X21_LAYOUT0_CODE:`0xA3`,RM6X21_ARGB_CODE:`0xAA`,CONNECT_MODE:{USB:0,Bluetooth1:1,Bluetooth2:2,Bluetooth3:3,WIRELESS:4},MATRIX6X21_CODE:{ADC_HALL_CODE:`0x02`,KEY_STATUS_CODE:`0x03`,ADC_MAX_JOURNEY_CODE:`0x04`,ADC_MIN_JOURNEY_CODE:`0x05`,ADC_ORIGINAL_CODE:`0x06`,ADC_MAX_ORIGINAL_CODE:`0x07`,ADC_MIN_ORIGINAL_CODE:`0x08`},MATRIX6X21_LAYOUT_CODE:{FN0:`0x00`,FN1:`0x01`,JOURNEY4:`0x04`,MODE:`0x08`,RTDOWN14:`0x14`,RTUP15:`0x15`,SAFE16:`0x16`,SAFE17:`0x17`,AXIS19:`0x19`},MATRIX6X21_LAYOUT_MODE_CODE:{HRT:`0x20`,DKS:`0x01`,SOCD:`0x08`,MPT:`0x02`,MT:`0x03`,END:`0x05`,TGL:`0x04`,RS:`0x09`,MACRO:`0x06`},MATRIX6X21_ADVANCED_FUNC_CODE:{DKS:`0xA6`,SOCD:`0xAC`,MPT:`0xA7`,MT:`0xA4`,END:`0xA8`,TGL:`0XA5`,RS:`0xAD`,MACRO:`0xA1`},CUSTOM_BUTTON_COMMAND_TYPE_CMD:{KEY:`0x00`,MEDIA1:`0x10`,MEDIA2:`0x11`,MEDIA3:`0x12`,HOTKEY:`0x60`,MOUSE:`0x70`,SYS:`0xF1`,SYS1:`0xF0`,MACRO:`0xE0`},FUNC_TYPE_CMD:{MAC:`0x22`,WIN_KEY_STATUS:`0x20`,RETE:`0x50`,LOD:`0xB4`,DPI:`0xB5`,SLEEP:`0xB6`,SITE:`0x60`,FIRST_FLAG:`0xB3`,SERIAL_NUMBER:`0xB2`,PROFILE_INDEX:`0x70`,RT_ALL:`0xA1`},UPGRADE:{SIGN:`0x88`,ERASE:`0x89`,WRITE:`0x8C`,READ:`0x8D`,RCRC:`0x8E`},UPGRADE_SIGN_TYPE:{SIGN1:`0x02`,SIGN2:`0x03`,SIGN3:`0x02`,SIGN4:`0x04`}},SET_DEVICE_RT_ALL_JOURNEY_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0xA1`,`0x00`,`0xFF`,`0xFF`],READ_DEVICE_RT_ALL_JOURNEY_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0xA1`,`0xFF`,`0xFF`,`0xFF`],SET_DEVICE_REST_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x11`,`0xFF`,`0xFF`],SET_DEVICE_RETE_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0x50`,`0x00`,`0xFF`,`0xFF`],SET_DEVICE_WIN_MODE_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x30`,`0x00`,`0xFF`,`0xFF`],SET_DEVICE_MAC_MODE_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x31`,`0x00`,`0xFF`,`0xFF`],SET_DEVICE_LOD_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0xB4`,`0x01`,`0xFF`,`0xFF`],READ_DEVICE_LOD_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0xB4`,`0xFF`,`0xFF`,`0xFF`],SET_DEVICE_SLEEP_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0xB6`,`0x01`,`0xFF`,`0xFF`],READ_DEVICE_SLEEP_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0xB6`,`0xFF`,`0xFF`,`0xFF`],SET_DEVICE_DPI_CMD:[`0x5C`,`0x0C`,`0x00`,`0x9C`,`0xB5`,`0x01`,`0x0a`,`0x32`,`0x00`,`0x0b`,`0x32`,`0x00`,`0x01`,`0x01`,`0xFF`,`0xFF`],READ_DEVICE_DPI_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0xB5`,`0x00`,`0xFF`,`0xFF`],READ_DEVICE_BATTERY_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0xB7`,`0x00`,`0xFF`,`0xFF`],READ_DEVICE_RETE_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x50`,`0xFF`,`0xFF`],READ_DEVICE_WIN_MODE_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x21`,`0xFF`,`0xFF`],READ_DEVICE_MAC_MODE_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x22`,`0xFF`,`0xFF`],SET_DEVICE_PROFILE_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0x70`,`0x02`,`0xFF`,`0xFF`],READ_DEVICE_PROFILE_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0x70`,`0xFF`,`0xFF`,`0xFF`],SET_DEVICE_FIRST_FLAG_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0xB3`,`0x01`,`0xFF`,`0xFF`],READ_DEVICE_FIRST_FLAG_CMD:[`0x5C`,`0x04`,`0x00`,`0x94`,`0xB3`,`0xFF`,`0xFF`,`0xFF`],SET_DEVICE_SERIAL_NUMBER_CMD:[`0x5C`,`0x05`,`0x00`,`0x95`,`0xB1`,`0x02`,`0xFF`,`0xFF`,`0xFF`,`0xFF`],READ_DEVICE_SERIAL_NUMBER_CMD:[`0x5C`,`0x05`,`0x00`,`0x95`,`0xB2`,`0x02`,`0xFF`,`0xFF`,`0xFF`,`0xFF`],SET_DEVICE_WIN_STATUS_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x20`,`0x00`,`0xFF`,`0xFF`],READ_DEVICE_WIN_STATUS_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x20`,`0xFF`,`0xFF`],SET_DEVICE_SITE_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x60`],READ_DEVICE_SITE_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x60`,`0xFF`,`0xFF`],READ_DEVICE_INFO_CMD:[`0x5C`,`0x02`,`0x01`,`0x93`,`0xFF`,`0xFF`],READ_DEFKEY_MATRIX_CMD:{ROW1_ROW2:[`0x5C`,`0x03`,`0x2B`,`0XC0`,`0x00`,`0x00`,`0x01`],ROW3_ROW4:[`0x5C`,`0x03`,`0x2B`,`0XC2`,`0x00`,`0x02`,`0x03`],ROW5_ROW6:[`0x5C`,`0x03`,`0x2B`,`0XC4`,`0x00`,`0x04`,`0x05`]},READ_RM6X21_HALL_16BIT_CMD:{ROW1_ROW3:[`0x5C`,`0x04`,`0x12`,`0xA6`,`0x02`,`0x01`,`0xFF`,`0xFF`],ROW4_ROW6:[`0x5C`,`0x04`,`0x12`,`0xA6`,`0x02`,`0x02`,`0xFF`,`0xFF`]},READ_RM6X21_ADC_16BIT_CMD:{ROW1_ROW3:[`0x5C`,`0x04`,`0x12`,`0xA6`,`0x06`,`0x01`,`0xFF`,`0xFF`],ROW4_ROW6:[`0x5C`,`0x04`,`0x12`,`0xA6`,`0x06`,`0x02`,`0xFF`,`0xFF`]},READ_RM6X21_KEYSTATUS_8BIT_CMD:[`0x5C`,`0x04`,`0x12`,`0xA6`,`0x03`,`0x01`,`0xFF`,`0xFF`],READ_LAYOUT_KEY_CUSTOM_HEAD_CMD:[`0x5C`,`0x39`,`0x23`,`0xED`,`0x00`],SET_DEVICE_PRGB_CMD:`0x5C.0x2c.0x18.0xd4.0x01.0x00.0x00.0x00.0x00.0x00.0x00.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0x7F.0x7F.0xFF.0xFF.0x00.0x00.0xFF.0x7F.0x00.0x7F.0xFF.0x7F.0x7F.0x00.0xFF.0x7F.0x7F.0x7F.0xFF.0x00.0x00.0x00.0x00.0x01.0x03.0x04.0x03.0x0f.0xFF.0xFF`.split(`.`),SET_CUSTOM_BUTTON_MODE_CMD:`0x5C.0x2c.0x18.0xd4.0x01.0x00.0x00.0x00.0x00.0x00.0x00.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0x7F.0x7F.0xFF.0xFF.0x00.0x00.0xFF.0x7F.0x00.0x7F.0xFF.0x7F.0x7F.0x00.0xFF.0x7F.0x7F.0x7F.0xFF.0x00.0x00.0x00.0x00.0x01.0x04.0x15.0x03.0x02.0xFF.0xFF`.split(`.`),SET_CUSTOM_LOGO_MODE_CMD:`0x5C.0x2c.0x19.0xd5.0x01.0x00.0x00.0x00.0x00.0x00.0x00.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0x7F.0x7F.0xFF.0xFF.0x00.0x00.0xFF.0x7F.0x00.0x7F.0xFF.0x7F.0x7F.0x00.0xFF.0x7F.0x7F.0x7F.0xFF.0x00.0x00.0x00.0x00.0x01.0x03.0x04.0x03.0x0f.0xFF.0xFF`.split(`.`),SET_CUSTOM_LOGO_CMD:`0x5C.0x2b.0x19.0xd5.0x01.0x00.0x00.0x00.0x00.0x00.0x00.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0x7F.0x7F.0xFF.0xFF.0x00.0x00.0xFF.0x7F.0x00.0x7F.0xFF.0x7F.0x7F.0x00.0xFF.0x7F.0x7F.0x7F.0xFF.0x00.0x00.0x00.0x00.0x01.0x03.0x04.0x03.0x00.0x00.0x00`.split(`.`),SET_CUSTOM_BUTTON_RGB_HEAD_CMD:[`0x5C`,`0x39`,`0x2A`,`0xFF`,`0x01`],SET_CUSTOM_BUTTON_RGB_END_CMD:[`0x5C`,`0x39`,`0x2A`,`0xF8`,`0x01`,`0xfe`,`0xfe`,`0xfe`,`0xfe`],PRGBBRIGHTNESS:`0x03`,PRGBSPEED:`0x03`,PRGBLIST:[],READ_GLOBAL_JOURNEY_CMD:[`0x5C`,`0x0F`,`0x29`,`0xC9`,`0x00`],SET_GLOBAL_JOURNEY_CMD:[`0x5C`,`0x0F`,`0x29`,`0xC9`,`0x01`,`0x00`,`0x00`,`0x00`,`0x00`,`0xC8`,`0x00`,`0xC8`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`],SET_DEVICE_FUNCTION_OP_CMD:[`0x5C`,`0x03`,`0x00`,`0x93`,`0x0C`,`0xFF`,`0xFF`],SET_DEVICE_BUTTON_OP_HEAD:[`0x5C`,`0x39`,`0x23`,`0xFF`,`0x01`],SET_DEVICE_BUTTON_OP_CMD:[`0x5C`,`0x39`,`0x23`,`0xED`,`0x01`,`0x1b`,`0x00`,`0xFF`,`0x00`],SET_DEVICE_BUTTON_AXIS_CMD:[`0x5C`,`0x39`,`0x23`,`0xED`,`0x01`,`0xFF`,`0x19`,`0xFF`,`0x00`,`0xFF`,`0xFF`],SET_DEVICE_BUTTON_OP_FN_CMD:[`0x5C`,`0x39`,`0x23`,`0xED`,`0x01`,`0x1b`,`0x01`,`0xFF`,`0x00`],SET_DEVICE_BUTTON_DEL_CMD:[`0x5C`,`0x39`,`0x23`,`0xED`,`0x01`,`0x00`,`0x08`,`0x00`,`0x00`,`0x00`,`0x08`,`0x00`,`0x00`,`0x00`,`0x00`],SET_DEVICE_BUTTON_JOURNEY_CMD:[`0xFF`,`0x04`,`0x00`,`0x00`],SET_RESET_BUTTON_JOURNEY_CMD:[`0xFF`,`0x08`,`0x00`,`0x00`,`0xFF`,`0x04`,`0xd0`,`0x07`],SET_DEVICE_BUTTON_RT_CMD:[`0xFF`,`0x08`,`0x20`,`0x00`,`0xFF`,`0x14`,`0x00`,`0x00`,`0xFF`,`0x15`,`0x00`,`0x00`],SET_DEVICE_BUTTON_SAFEZONE_CMD:[`0xFF`,`0x16`,`0x00`,`0x00`,`0xFF`,`0x17`,`0x00`,`0x00`],SET_RESET_BUTTON_RT_CMD:[`0xFF`,`0x08`,`0x00`,`0x00`,`0xFF`,`0x04`,`0xd0`,`0x07`],SET_DEVICE_FUNCTION_TGL_CMD:`0x5C.0x3A.0x25.0xEF.0x01.0xFF.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF`.split(`.`),SET_DEVICE_FUNCTION_END_CMD:`0x5C.0x04.0x28.0xBD.0x01.0xFF.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0x00`.split(`.`),SET_DEVICE_FUNCTION_MT_CMD:`0x5C.0x07.0x24.0xD0.0x01.0xFF.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00`.split(`.`),SET_DEVICE_FUNCTION_RS_CMD:`0x5C.0x05.0x2D.0xc7.0x01.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00`.split(`.`),SET_DEVICE_FUNCTION_MPT_CMD:`0x5C.0x33.0x27.0xEB.0x01.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00`.split(`.`),SET_DEVICE_FUNCTION_DKS_CMD:`0x5C.0x38.0x26.0xEF.0x01.0xFF.0xFF.0x00.0xFF.0x00.0xFF.0x00.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0x00.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0xFF.0x00.0x00.0x00.0x00.0x00`.split(`.`),SET_DEVICE_FUNCTION_SOCD_CMD:`0x5C.0x07.0x2C.0xC4.0x01.0xFF.0xFF.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00.0x00`.split(`.`),MACRO_TYPE_CMD:{DELAY:[`0x06`,`0x00`,`0x00`],KEY_DOWN:[`0x84`,`0x00`,`0x00`],KEY_UP:[`0x04`,`0x00`,`0x00`],MOUSE_X:[`0x85`,`0x00`,`0x00`],MOUSE_Y:[`0x05`,`0x00`,`0x00`]},SET_DEVICE_FUNCTION_MACRO_CMD:[`0x5C`,`0x00`,`0x20`,`0xFF`,`0x01`,`0xFF`,`0xFF`,`0x00`],SET_DEVICE_SIGN1_CMD:[`0x5C`,`0x27`,`0x08`,`0xBF`,`0x02`],SET_DEVICE_SIGN2_CMD:[`0x5C`,`0x27`,`0x08`,`0xBF`,`0x03`],SET_DEVICE_SIGN_ERASE_CMD:[`0x5C`,`0x09`,`0x09`,`0xA2`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0xFF`,`0x00`,`0x00`],SET_DEVICE_SIGN3_CMD:`0x5C.0x27.0x08.0xBF.0x02.0x10.0x77.0xc6.0xf4.0x87.0xf4.0xd1.0x0f.0xf1.0xc0.0x91.0x00.0x3b.0x0b.0xb1.0xa4.0x14.0x10.0x38.0x31.0x38.0x32.0x37.0x34.0x37.0x38.0x30.0x39.0x30.0x39.0x36.0x34.0x35.0x37.0xFF.0xFF.0xFF.0xFF`.split(`.`),SET_DEVICE_SIGN4_CMD:[`0x5C`,`0x27`,`0x08`,`0xBF`,`0x04`],SET_DEVICE_SIGN5_CMD:[`0x5C`,`0x27`,`0x08`,`0xBF`,`0x06`],SET_DEVICE_SIGN6_CMD:[`0x5C`,`0x27`,`0x08`,`0xBF`,`0x05`],SET_DEVICE_SIGN_REBOOT_CMD:[`0x5C`,`0x02`,`0x0A`,`0x9C`,`0xFF`,`0xFF`,`0x00`,`0x00`,`0x00`],READ_DEVICE_APP_CRC_CMD:[`0x5C`,`0x0A`,`0x0E`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0xFF`,`0xFF`],SET_DEVICE_SIGN_APP_CMD:[`0x5C`,`0x0A`,`0x0B`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`,`0x00`],SET_DEVICE_WRITE_FIRMWARE_CMD:[`0x5C`,`0xFA`,`0x0C`,`0xFF`,`0x00`,`0x00`,`0x00`,`0x00`,`0xF4`,`0x00`]},n={KEYMAP:[{Name:`A`,Task:`A`,VKCode:`65`,ScanCode:`30`,Flag:`0`,Hid:`0x04`,Value:`A`},{Name:`B`,Task:`B`,VKCode:`66`,ScanCode:`48`,Flag:`0`,Hid:`0x05`,Value:`B`},{Name:`C`,Task:`C`,VKCode:`67`,ScanCode:`46`,Flag:`0`,Hid:`0x06`,Value:`C`},{Name:`D`,Task:`D`,VKCode:`68`,ScanCode:`32`,Flag:`0`,Hid:`0x07`,Value:`D`},{Name:`E`,Task:`E`,VKCode:`69`,ScanCode:`18`,Flag:`0`,Hid:`0x08`,Value:`E`},{Name:`F`,Task:`F`,VKCode:`70`,ScanCode:`33`,Flag:`0`,Hid:`0x09`,Value:`F`},{Name:`G`,Task:`G`,VKCode:`71`,ScanCode:`34`,Flag:`0`,Hid:`0x0A`,Value:`G`},{Name:`H`,Task:`H`,VKCode:`72`,ScanCode:`35`,Flag:`0`,Hid:`0x0B`,Value:`H`},{Name:`I`,Task:`I`,VKCode:`73`,ScanCode:`23`,Flag:`0`,Hid:`0x0C`,Value:`I`},{Name:`J`,Task:`J`,VKCode:`74`,ScanCode:`36`,Flag:`0`,Hid:`0x0D`,Value:`J`},{Name:`K`,Task:`K`,VKCode:`75`,ScanCode:`37`,Flag:`0`,Hid:`0x0E`,Value:`K`},{Name:`L`,Task:`L`,VKCode:`76`,ScanCode:`38`,Flag:`0`,Hid:`0x0F`,Value:`L`},{Name:`M`,Task:`M`,VKCode:`77`,ScanCode:`50`,Flag:`0`,Hid:`0x10`,Value:`M`},{Name:`N`,Task:`N`,VKCode:`78`,ScanCode:`49`,Flag:`0`,Hid:`0x11`,Value:`N`},{Name:`O`,Task:`O`,VKCode:`79`,ScanCode:`24`,Flag:`0`,Hid:`0x12`,Value:`O`},{Name:`P`,Task:`P`,VKCode:`80`,ScanCode:`25`,Flag:`0`,Hid:`0x13`,Value:`P`},{Name:`Q`,Task:`Q`,VKCode:`81`,ScanCode:`16`,Flag:`0`,Hid:`0x14`,Value:`Q`},{Name:`R`,Task:`R`,VKCode:`82`,ScanCode:`19`,Flag:`0`,Hid:`0x15`,Value:`R`},{Name:`S`,Task:`S`,VKCode:`83`,ScanCode:`31`,Flag:`0`,Hid:`0x16`,Value:`S`},{Name:`T`,Task:`T`,VKCode:`84`,ScanCode:`20`,Flag:`0`,Hid:`0x17`,Value:`T`},{Name:`U`,Task:`U`,VKCode:`85`,ScanCode:`22`,Flag:`0`,Hid:`0x18`,Value:`U`},{Name:`V`,Task:`V`,VKCode:`86`,ScanCode:`47`,Flag:`0`,Hid:`0x19`,Value:`V`},{Name:`W`,Task:`W`,VKCode:`87`,ScanCode:`16`,Flag:`0`,Hid:`0x1A`,Value:`W`},{Name:`X`,Task:`X`,VKCode:`88`,ScanCode:`45`,Flag:`0`,Hid:`0x1B`,Value:`X`},{Name:`Y`,Task:`Y`,VKCode:`89`,ScanCode:`21`,Flag:`0`,Hid:`0x1C`,Value:`Y`},{Name:`Z`,Task:`Z`,VKCode:`90`,ScanCode:`44`,Flag:`0`,Hid:`0x1D`,Value:`Z`},{Name:`0`,Task:`0`,VKCode:`48`,ScanCode:`11`,Flag:`0`,Hid:`0x27`,Value:`U0`},{Name:`1`,Task:`1`,VKCode:`49`,ScanCode:`2`,Flag:`0`,Hid:`0x1E`,Value:`U1`},{Name:`2`,Task:`2`,VKCode:`50`,ScanCode:`3`,Flag:`0`,Hid:`0x1F`,Value:`U2`},{Name:`3`,Task:`3`,VKCode:`51`,ScanCode:`4`,Flag:`0`,Hid:`0x20`,Value:`U3`},{Name:`4`,Task:`4`,VKCode:`52`,ScanCode:`5`,Flag:`0`,Hid:`0x21`,Value:`U4`},{Name:`5`,Task:`5`,VKCode:`53`,ScanCode:`6`,Flag:`0`,Hid:`0x22`,Value:`U5`},{Name:`6`,Task:`6`,VKCode:`54`,ScanCode:`7`,Flag:`0`,Hid:`0x23`,Value:`U6`},{Name:`7`,Task:`7`,VKCode:`55`,ScanCode:`8`,Flag:`0`,Hid:`0x24`,Value:`U7`},{Name:`8`,Task:`8`,VKCode:`56`,ScanCode:`9`,Flag:`0`,Hid:`0x25`,Value:`U8`},{Name:`9`,Task:`9`,VKCode:`57`,ScanCode:`10`,Flag:`0`,Hid:`0x26`,Value:`U9`},{Name:`Num Lock`,Task:`Num LOCK`,VKCode:`144`,ScanCode:`69`,Flag:`1`,Hid:`0x53`,Value:`NUMLOCK`},{Name:`Num /`,Task:`Num /`,VKCode:`111`,ScanCode:`53`,Flag:`1`,Hid:`0x54`,Value:`NUMSLASH`},{Name:`Num *`,Task:`Num *`,VKCode:`106`,ScanCode:`55`,Flag:`0`,Hid:`0x55`,Value:`NUMSTAR`},{Name:`Num `,Task:`Num `,VKCode:`109`,ScanCode:`74`,Flag:`0`,Hid:`0x56`,Value:`NUMMINUS`},{Name:`Num +`,Task:`Num +`,VKCode:`107`,ScanCode:`78`,Flag:`0`,Hid:`0x57`,Value:`NUMPLUS`},{Name:`Num Enter`,Task:`Num ENTER`,VKCode:`13`,ScanCode:`28`,Flag:`1`,Hid:`0x58`,Value:`NUMENTER`},{Name:`Num .`,Task:`Num .`,VKCode:`110`,ScanCode:`83`,Flag:`0`,Hid:`0x63`,Value:`NUMPERIOD`},{Name:`Num 0`,Task:`Num 0`,VKCode:`96`,ScanCode:`82`,Flag:`0`,Hid:`0x62`,Value:`Num 0`},{Name:`Num 1`,Task:`Num 1`,VKCode:`97`,ScanCode:`79`,Flag:`0`,Hid:`0x59`,Value:`Num 1`},{Name:`Num 2`,Task:`Num 2`,VKCode:`98`,ScanCode:`80`,Flag:`0`,Hid:`0x5A`,Value:`Num 2`},{Name:`Num 3`,Task:`Num 3`,VKCode:`99`,ScanCode:`81`,Flag:`0`,Hid:`0x5B`,Value:`Num 3`},{Name:`Num 4`,Task:`Num 4`,VKCode:`100`,ScanCode:`75`,Flag:`0`,Hid:`0x5C`,Value:`Num 4`},{Name:`Num 5`,Task:`Num 5`,VKCode:`101`,ScanCode:`76`,Flag:`0`,Hid:`0x5D`,Value:`Num 5`},{Name:`Num 6`,Task:`Num 6`,VKCode:`102`,ScanCode:`77`,Flag:`0`,Hid:`0x5E`,Value:`Num 6`},{Name:`Num 7`,Task:`Num 7`,VKCode:`103`,ScanCode:`71`,Flag:`0`,Hid:`0x5F`,Value:`Num 7`},{Name:`Num 8`,Task:`Num 8`,VKCode:`104`,ScanCode:`72`,Flag:`0`,Hid:`0x60`,Value:`Num 8`},{Name:`Num 9`,Task:`Num 9`,VKCode:`105`,ScanCode:`73`,Flag:`0`,Hid:`0x61`,Value:`Num 9`},{Name:`Esc`,Task:`Esc`,VKCode:`27`,ScanCode:`1`,Flag:`0`,Hid:`0x29`,Value:`Esc`},{Name:`F1`,Task:`F1`,VKCode:`112`,ScanCode:`59`,Flag:`0`,Hid:`0x3A`,Value:`F1`},{Name:`F2`,Task:`F2`,VKCode:`113`,ScanCode:`60`,Flag:`0`,Hid:`0x3B`,Value:`F2`},{Name:`F3`,Task:`F3`,VKCode:`114`,ScanCode:`61`,Flag:`0`,Hid:`0x3C`,Value:`F3`},{Name:`F4`,Task:`F4`,VKCode:`115`,ScanCode:`62`,Flag:`0`,Hid:`0x3D`,Value:`F4`},{Name:`F5`,Task:`F5`,VKCode:`116`,ScanCode:`63`,Flag:`0`,Hid:`0x3E`,Value:`F5`},{Name:`F6`,Task:`F6`,VKCode:`117`,ScanCode:`64`,Flag:`0`,Hid:`0x3F`,Value:`F6`},{Name:`F7`,Task:`F7`,VKCode:`118`,ScanCode:`65`,Flag:`0`,Hid:`0x40`,Value:`F7`},{Name:`F8`,Task:`F8`,VKCode:`119`,ScanCode:`66`,Flag:`0`,Hid:`0x41`,Value:`F8`},{Name:`F9`,Task:`F9`,VKCode:`120`,ScanCode:`67`,Flag:`0`,Hid:`0x42`,Value:`F9`},{Name:`F10`,Task:`F10`,VKCode:`121`,ScanCode:`68`,Flag:`0`,Hid:`0x43`,Value:`F10`},{Name:`F11`,Task:`F11`,VKCode:`122`,ScanCode:`87`,Flag:`0`,Hid:`0x44`,Value:`F11`},{Name:`F12`,Task:`F12`,VKCode:`123`,ScanCode:`88`,Flag:`0`,Hid:`0x45`,Value:`F12`},{Name:"`",Task:"`",VKCode:`192`,ScanCode:`41`,Flag:`0`,Hid:`0x35`,Value:`TILDE`},{Name:`-`,Task:`-`,VKCode:`189`,ScanCode:`12`,Flag:`0`,Hid:`0x2D`,Value:`MINUS`},{Name:`+`,Task:`+`,VKCode:`187`,ScanCode:`13`,Flag:`0`,Hid:`0x2E`,Value:`EQUAL`},{Name:`Backspace`,Task:`BACKSPACE`,VKCode:`8`,ScanCode:`14`,Flag:`0`,Hid:`0x2A`,Value:`Backspace`},{Name:`[`,Task:`[`,VKCode:`219`,ScanCode:`26`,Flag:`0`,Hid:`0x2F`,Value:`LBRACKET`},{Name:`]`,Task:`]`,VKCode:`221`,ScanCode:`27`,Flag:`0`,Hid:`0x30`,Value:`RBRACKET`},{Name:`\\`,Task:`\\`,VKCode:`220`,ScanCode:`43`,Flag:`0`,Hid:`0x31`,Value:`BACKSLASH`},{Name:`;`,Task:`;`,VKCode:`186`,ScanCode:`39`,Flag:`0`,Hid:`0x33`,Value:`SEMICOLON`},{Name:`'`,Task:`'`,VKCode:`222`,ScanCode:`40`,Flag:`0`,Hid:`0x34`,Value:`QUOTE`},{Name:`Enter`,Task:`ENTER`,VKCode:`13`,ScanCode:`28`,Flag:`0`,Hid:`0x28`,Value:`Enter`},{Name:`,`,Task:`,`,VKCode:`188`,ScanCode:`51`,Flag:`0`,Hid:`0x36`,Value:`COMMA`},{Name:`.`,Task:`.`,VKCode:`190`,ScanCode:`52`,Flag:`0`,Hid:`0x37`,Value:`PERIOD`},{Name:`/`,Task:`/`,VKCode:`191`,ScanCode:`53`,Flag:`0`,Hid:`0x38`,Value:`SLASH`},{Name:`Tab`,Task:`Tab`,VKCode:`9`,ScanCode:`15`,Flag:`0`,Hid:`0x2B`,Value:`Tab`},{Name:`CapsLock`,Task:`CAPSLOCK`,VKCode:`20`,ScanCode:`58`,Flag:`0`,Hid:`0x39`,Value:`CAPSLOCK`},{Name:`Ctrl`,Task:`LCTRL`,VKCode:`162`,ScanCode:`29`,Flag:`0`,Hid:`0xE0`,Value:`LCTRL`},{Name:`Shift`,Task:`LSHIFT`,VKCode:`160`,ScanCode:`42`,Flag:`0`,Hid:`0xE1`,Value:`LSHIFT`},{Name:`Alt`,Task:`LALT`,VKCode:`164`,ScanCode:`56`,Flag:`0`,Hid:`0xE2`,Value:`LALT`},{Name:`Win`,Task:`LWIN`,VKCode:`91`,ScanCode:`91`,Flag:`1`,Hid:`0xE3`,Value:`LWIN`},{Name:`Ctrl`,Task:`RCTRL`,VKCode:`163`,ScanCode:`29`,Flag:`1`,Hid:`0xE4`,Value:`RCTRL`},{Name:`Shift`,Task:`RSHIFT`,VKCode:`161`,ScanCode:`54`,Flag:`1`,Hid:`0xE5`,Value:`RSHIFT`},{Name:`Alt`,Task:`RALT`,VKCode:`165`,ScanCode:`56`,Flag:`1`,Hid:`0xE6`,Value:`RALT`},{Name:`Win`,Task:`RWIN`,VKCode:`91`,ScanCode:`92`,Flag:`1`,Hid:`0xE7`,Value:`RWIN`},{Name:`Menu`,Task:`Menu`,VKCode:`93`,ScanCode:`93`,Flag:`1`,Hid:`0x65`,Value:`Menu`},{Name:`Space`,Task:`Space`,VKCode:`32`,ScanCode:`57`,Flag:`0`,Hid:`0x2C`,Value:`Space`},{Name:`Space`,Task:`Space`,VKCode:`32`,ScanCode:`57`,Flag:`0`,Hid:`0xF0`,Value:`Space`},{Name:`Space`,Task:`Space`,VKCode:`32`,ScanCode:`57`,Flag:`0`,Hid:`0xF1`,Value:`Space`},{Name:`Print Screen`,Task:`PRINTSCREEN`,VKCode:`44`,ScanCode:`55`,Flag:`1`,Hid:`0x46`,Value:`PRINTSCREEN`},{Name:`Scroll Lock`,Task:`SCROLLLOCK`,VKCode:`145`,ScanCode:`70`,Flag:`0`,Hid:`0x47`,Value:`SCROLLLOCK`},{Name:`Pause`,Task:`PAUSE`,VKCode:`19`,ScanCode:`69`,Flag:`0`,Hid:`0x48`,Value:`PAUSE`},{Name:`Insert`,Task:`INSERT`,VKCode:`45`,ScanCode:`82`,Flag:`1`,Hid:`0x49`,Value:`INSERT`},{Name:`Home`,Task:`HOME`,VKCode:`36`,ScanCode:`71`,Flag:`1`,Hid:`0x4A`,Value:`HOME`},{Name:`PgUp`,Task:`PAGEUP`,VKCode:`33`,ScanCode:`73`,Flag:`1`,Hid:`0x4B`,Value:`PAGEUP`},{Name:`Delete`,Task:`DELETE`,VKCode:`46`,ScanCode:`83`,Flag:`1`,Hid:`0x4C`,Value:`DELETE`},{Name:`End`,Task:`END`,VKCode:`35`,ScanCode:`79`,Flag:`1`,Hid:`0x4D`,Value:`END`},{Name:`PgDn`,Task:`PAGEDOWN`,VKCode:`34`,ScanCode:`81`,Flag:`1`,Hid:`0x4E`,Value:`PAGEDOWN`},{Name:`Up`,Task:`UP`,VKCode:`38`,ScanCode:`72`,Flag:`1`,Hid:`0x52`,Value:`Up`},{Name:`Down`,Task:`DOWN`,VKCode:`40`,ScanCode:`80`,Flag:`1`,Hid:`0x51`,Value:`Down`},{Name:`Left`,Task:`LEFT`,VKCode:`37`,ScanCode:`75`,Flag:`1`,Hid:`0x50`,Value:`Left`},{Name:`Right`,Task:`Right`,VKCode:`39`,ScanCode:`77`,Flag:`1`,Hid:`0x4F`,Value:`Right`},{Name:`MUTE`,Task:`MUTE`,VKCode:`7F`,Hid:`0x7F`,Value:`MUTE`},{Name:`CALC`,Task:`CALC`,VKCode:`7F`,Hid:`0x92`,Value:`CALC`},{Name:`VOICE +`,Task:`VOICE +`,VKCode:`7F`,Hid:`0x80`,Value:`VOICE +`},{Name:`VOICE `,Task:`VOICE `,VKCode:`7F`,Hid:`0x81`,Value:`VOICE `},{Name:`FN`,Task:`FN`,VKCode:`91`,Hid:`0x01`,Value:`FN`},{Name:`FN2`,Task:`FN2`,VKCode:`91`,Hid:`0x02`,Value:`FN2`},{Name:`FN3`,Task:`FN3`,VKCode:`91`,Hid:`0x03`,Value:`FN3`}]},r={protocolVer:1,lastBinVer:-1,curDeviceMode:null,curDeviceHandle:null,curWebHandle:null,manualUrl:``,ConnectMode:0,Battery:0,Ischarge:0,kaleidoscope:0,FirmwareID:-1,FirmwareVer:-1,FirmwareNum:-1,FirmwareFull:-1,RunMode:-1,SN:-1,SNDatas:-1,SignDatas:-1,SignSN:-1,SignCRC:-1,ProfileIndex:0,curWebSite:``,reteVal:0,lodVal:0,macStatus:0,winKeyStatus:0,FirstFlag:-1,SerialNumber:-1,modeLigth:1,modeChildLigth:1,brightnessLigth:1,speedLigth:1,sleep:2,modeLigthLogo:-1,modeChildLigthLogo:0,brightnessLigthLogo:0,speedLigthLogo:0,sleepLogo:0,journey_global:2,rt_all_journey:0,curMaxJourney:0,curMaxJourneyKeyStatus:0,keyMapStructure:{index:-1,key_name:``,name:``,hid:0,axisSet:{brand:``,name:``,model:``},journey:0,adc_data:0,key_status:0,fn:0,fn_custom:{fn_code:``,type:``,name:``,content:``},is_set:1,custom:{type:``,name:``,content:``},journey_RT:{down:`-`,up:`-`},journey_global:`-`,safe_zone_top:`-`,safe_zone_bottom:`-`,journey_trigger:`-`,select:0,working_mode:0,axis:0,routeAxis:0,ARGB:0,RGB:`#ffffff`},DPIS:[],MatrixList:{MatrixKey:[],MatrixADCTemp:[],MatrixADC:[],MatrixJourneyTemp:[],MatrixJourney:[],MatrixLayout0Temp:[],MatrixLayout0:[],MatrixLayout1Temp:[],MatrixLayout1:[],MatrixLayout4Temp:[],MatrixLayout4:[],MatrixLayout14Temp:[],MatrixLayout14:[],MatrixLayout15Temp:[],MatrixLayout15:[],MatrixLayout16Temp:[],MatrixLayout16:[],MatrixLayout17Temp:[],MatrixLayout17:[],MatrixLayout19Temp:[],MatrixLayout19:[],MatrixLayout8Temp:[],MatrixLayout8:[],MatrixKeyStatus:[],KeyMap:[]},keyMapIndexByHid:null,ListenID:-1,typeMatrixID:-1,typeMatrixPageID:-1,inPage:0,log(e,t){let n=new Date,r=`[${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,`0`)}-${String(n.getDate()).padStart(2,`0`)} ${String(n.getHours()).padStart(2,`0`)}:${String(n.getMinutes()).padStart(2,`0`)}:${String(n.getSeconds()).padStart(2,`0`)} ${String(n.getMilliseconds()).padStart(3,`0`)}]`,i=``,a=``;switch(e){case 0:i=`LOG`,a=`color: blue;`;break;case 1:i=`SUCCESS`,a=`color: green;`;break;case 2:i=`WARNING`,a=`color: orange;`;break;case 3:i=`ERROR`,a=`color: red; font-weight: bold;`;break;default:i=`LOG`,a=``;break}console.log(`%c${r} [${i}] ${t}`,a)},unpack(e){let t=[];for(let n=0;n<e.length;n+=10)t.push(e.slice(n,n+10));return t},padTo512(e){let t=e.length,n=Math.ceil(t/65536)*65536,r=new Uint8Array(n);r.set(e);for(let e=t;e<n;e++)r[e]=255;return r},padToPackage540(e){let t=e.length,n=Math.ceil(t/540)*540,r=new Uint8Array(n);r.set(e);for(let e=t;e<n;e++)r[e]=255;return r},getHighLowBits32(e){let t=(e&4294901760)>>16,n=e&65535;if(e>=0&&e<=4294967295){let e=[n&255,n>>8,t&255,t>>8];return e[0]=e[0].toString(16),e[1]=e[1].toString(16),e[2]=e[2].toString(16),e[3]=e[3].toString(16),e}else throw Error(`The decimal number must be between 0 and 65535.`)},getGifBufferCommand(e,t){let n=t.SET_DEVICE_WRITE_IMAGE_START_CMD,r=[];for(let t=0;t<e.length;t+=512){let i=e.slice(t,t+512);i=this.padToPackage540(i);for(let e=0;e<i.length;e+=54){let t=i.slice(e,e+54),a=this.mergeUint8Arrays([n,t]),o=a[a.length-1],s=this.getCRC1(a[1],a[2],o);s=this.getHighLowBits(s),a[3]=parseInt(s[0],16),r.push(a)}}return this.unpack(r)},redMatrix(e){let t=new Uint8Array(e.READ_DEFKEY_MATRIX_CMD.ROW1_ROW2.map(e=>parseInt(e,16)));this.curDeviceHandle.sendReport(0,t),setTimeout(()=>{let t=new Uint8Array(e.READ_DEFKEY_MATRIX_CMD.ROW3_ROW4.map(e=>parseInt(e,16)));this.curDeviceHandle.sendReport(0,t)},500),setTimeout(()=>{let t=new Uint8Array(e.READ_DEFKEY_MATRIX_CMD.ROW5_ROW6.map(e=>parseInt(e,16)));this.curDeviceHandle.sendReport(0,t)},1e3)},sendHidDataCallBack(){this.curWebHandle&&typeof this.curWebHandle.refreshHIDeviceData==`function`&&this.curWebHandle.refreshHIDeviceData()},getCRC(e,t,n){return 145+parseInt(e,16)+parseInt(t,16)+parseInt(n,16)},getCRC1(e,t,n){return 187+e+t+n},getWorkingMode(e,t){switch(e&=15,e){case parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.DKS):return`DKS`;case parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.SOCD):return`SOCD`;case parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.MPT):return`MPT`;case parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.MT):return`MT`;case parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.END):return`END`;case parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.TGL):return`TGL`;case parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.RS):return`RS`}return``},getBottonHidOJBFromName(e,t){t=this.isNumber(parseInt(t))?`U`+t:t,t=t==`\\`?`\\\\`:t,t=t==`=`?`+`:t;let n=null,r=e.KEYMAP;for(var i in r)if(r[i].Value==t){n=r[i];break}return n??=this.getBottonHidOJBFromTask(e,t),n},getBottonHidOJBFromTask(e,t){t=this.isNumber(parseInt(t))?`U`+t:t,t=t==`\\`?`\\\\`:t,t=t==`=`?`+`:t;let n=null,r=e.KEYMAP;for(var i in r)if(r[i].Task==t){n=r[i];break}return n??=this.getBottonHidOJBFromName(e,t),n},getBottonHidOJBFromHID(e,t){let n=e.KEYMAP;for(var r in n)if(parseInt(n[r].Hid,16)==t)return n[r]},getBottonHidOJBFromHIDMedia(e,t){for(let n in e)for(let r in e[n])if(t==e[n][r].code)return e[n][r]},startListeningNormal(e){let t=this;this.ListenID=setInterval(function(){setTimeout(()=>{let n=new Uint8Array(e.READ_RM6X21_HALL_16BIT_CMD.ROW1_ROW3.map(e=>parseInt(e,16)));t.typeMatrixID=parseInt(e.READ_RM6X21_HALL_16BIT_CMD.ROW1_ROW3[4],16),t.typeMatrixPageID=parseInt(e.READ_RM6X21_HALL_16BIT_CMD.ROW1_ROW3[5],16),t.curDeviceHandle.sendReport(0,n)},1),setTimeout(()=>{let n=new Uint8Array(e.READ_RM6X21_HALL_16BIT_CMD.ROW4_ROW6.map(e=>parseInt(e,16)));t.typeMatrixID=parseInt(e.READ_RM6X21_HALL_16BIT_CMD.ROW4_ROW6[4],16),t.typeMatrixPageID=parseInt(e.READ_RM6X21_HALL_16BIT_CMD.ROW4_ROW6[5],16),t.curDeviceHandle.sendReport(0,n)},10),setTimeout(()=>{let n=new Uint8Array(e.READ_RM6X21_ADC_16BIT_CMD.ROW1_ROW3.map(e=>parseInt(e,16)));t.typeMatrixID=parseInt(e.READ_RM6X21_ADC_16BIT_CMD.ROW1_ROW3[4],16),t.typeMatrixPageID=parseInt(e.READ_RM6X21_ADC_16BIT_CMD.ROW1_ROW3[5],16),t.curDeviceHandle.sendReport(0,n)},20),setTimeout(()=>{let n=new Uint8Array(e.READ_RM6X21_ADC_16BIT_CMD.ROW4_ROW6.map(e=>parseInt(e,16)));t.typeMatrixID=parseInt(e.READ_RM6X21_ADC_16BIT_CMD.ROW4_ROW6[4],16),t.typeMatrixPageID=parseInt(e.READ_RM6X21_ADC_16BIT_CMD.ROW4_ROW6[5],16),t.curDeviceHandle.sendReport(0,n)},30),setTimeout(()=>{let n=new Uint8Array(e.READ_RM6X21_KEYSTATUS_8BIT_CMD.map(e=>parseInt(e,16)));t.typeMatrixID=parseInt(e.READ_RM6X21_KEYSTATUS_8BIT_CMD[4],16),t.typeMatrixPageID=parseInt(e.READ_RM6X21_KEYSTATUS_8BIT_CMD[5],16),t.curDeviceHandle.sendReport(0,n)},40)},60)},formatJourneyMapMatrix(){let e=0;for(var t=0;t<6;t++)for(var n=0;n<21;n++)this.MatrixList.KeyMap[t][n].journey=this.MatrixList.MatrixJourney[e],this.MatrixList.KeyMap[t][n].adc_data=this.MatrixList.MatrixADC[e],this.MatrixList.KeyMap[t][n].key_status=this.MatrixList.MatrixKeyStatus[e],e++},setARGBKey(e,t){let n=this.toHexStringArr(e).slice(5,61);if(!t.keyMapIndexByHid){t.keyMapIndexByHid={};for(let e=0;e<t.MatrixList.KeyMap.length;e++)for(let n=0;n<t.MatrixList.KeyMap[e].length;n++){let r=t.MatrixList.KeyMap[e][n];t.keyMapIndexByHid[String(r.hid)]={i:e,j:n}}}for(let e=0;e<n.length;e+=4){let r=n[e],i=t.keyMapIndexByHid[String(r)];if(!i)continue;let a=parseInt(n[e+1],16)+`,`+parseInt(n[e+2],16)+`,`+parseInt(n[e+3],16),o=`#`+n[e+1].toString()+n[e+2].toString()+n[e+3].toString(),s=t.MatrixList.KeyMap[i.i][i.j];s.ARGB===a&&s.RGB===o||(s.ARGB=a,s.RGB=o,s.lightStyle=`--bgcolor:`+o+`;--bgAcolor:rgb(`+a+`,0.1)`)}},setMatrixJourneyHeadData(e,t){let n=this.toHexStringArr(e);if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_HALL_CODE)&&this.typeMatrixPageID==1){let e=n.slice(6,64);this.MatrixList.MatrixJourneyTemp=e,this.inPage=1}else if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_HALL_CODE)){let e=n.slice(6,64);this.MatrixList.MatrixJourneyTemp.push.apply(this.MatrixList.MatrixJourneyTemp,e),this.inPage=1}else if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_ORIGINAL_CODE)&&this.typeMatrixPageID==1){let e=n.slice(6,64);this.MatrixList.MatrixADCTemp=e,this.inPage=1}else if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_ORIGINAL_CODE)){let e=n.slice(6,64);this.MatrixList.MatrixADCTemp.push.apply(this.MatrixList.MatrixADCTemp,e),this.inPage=1}else if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.KEY_STATUS_CODE)){this.inPage=1,this.formatJourney(),this.formatJourneyMapMatrix(),this.sendHidDataCallBack(),this.curMaxJourneyKeyStatus=0;let e=n.slice(6,64);this.MatrixList.MatrixKeyStatus=e}},setMatrixJourneyNOHeadData(e,t){if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_HALL_CODE)){this.inPage++;let t=this.toHexStringArr(e),n=this.inPage==3?4:64,r=t.slice(0,n);this.MatrixList.MatrixJourneyTemp.push.apply(this.MatrixList.MatrixJourneyTemp,r)}else if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_ORIGINAL_CODE)){this.inPage++;let t=this.toHexStringArr(e),n=this.inPage==3?4:64,r=t.slice(0,n);this.MatrixList.MatrixADCTemp.push.apply(this.MatrixList.MatrixADCTemp,r)}else if(this.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.KEY_STATUS_CODE)){this.inPage++;let t=this.toHexStringArr(e),n=this.inPage==3?4:64,r=t.slice(0,n);this.MatrixList.MatrixKeyStatus.push.apply(this.MatrixList.MatrixKeyStatus,r)}},formatJourney(){this.MatrixList.MatrixJourney=[],this.MatrixList.MatrixJourneyTemp=this.MatrixList.MatrixJourneyTemp.slice(0,252);for(var e=0;e<this.MatrixList.MatrixJourneyTemp.length;e++)if(e%2==0){var t=parseInt(this.MatrixList.MatrixJourneyTemp[e+1],16);t=(t&255)<<8|(t&65280)>>8;var n=t+parseInt(this.MatrixList.MatrixJourneyTemp[e],16);this.MatrixList.MatrixJourney.push(n)}this.MatrixList.MatrixADC=[],this.MatrixList.MatrixADCTemp=this.MatrixList.MatrixADCTemp.slice(0,252);for(var e=0;e<this.MatrixList.MatrixADCTemp.length;e++)if(e%2==0){var t=parseInt(this.MatrixList.MatrixADCTemp[e+1],16);t=(t&255)<<8|(t&65280)>>8;var n=t+parseInt(this.MatrixList.MatrixADCTemp[e],16);this.MatrixList.MatrixADC.push(n)}for(var e in this.MatrixList.MatrixKeyStatus)this.MatrixList.MatrixKeyStatus[e]=parseInt(this.MatrixList.MatrixKeyStatus[e],16);this.curMaxJourneyKeyStatus=this.getMaxValue(this.MatrixList.MatrixKeyStatus),this.curMaxJourney=this.getMaxValue(this.MatrixList.MatrixJourney),this.curMaxJourney/=1e3},setGlobalJourneyData(e,t){let n=this.toHexStringArr(e);var r=parseInt(n[8],16);r=(r&255)<<8|(r&65280)>>8,t.journey_global=(r+parseInt(n[7],16))/1e3},setGlobalLigthData(e,t){let n=this.toHexStringArr(e);t.modeLigth=n[43],t.modeChildLigth=n[41],t.brightnessLigth=n[42],t.speedLigth=n[44],t.sleep=n[45]},setGlobalLigthLogoData(e,t){let n=this.toHexStringArr(e);t.modeLigthLogo=n[43],t.modeChildLigthLogo=n[41],t.brightnessLigthLogo=n[42],t.speedLigthLogo=n[44],t.sleepLogo=n[45]},getDGVal(e,t){var n=parseInt(t,16);return n=(n&255)<<8|(n&65280)>>8,n+parseInt(e,16)},setAdvancedFuncData(e,t,n,r){let i=n.MatrixList.KeyMap,a=function(e,t,r){for(let a in i)for(let o in i[a])i[a][o].name==e&&(n.MatrixList.KeyMap[a][o].custom||(n.MatrixList.KeyMap[a][o].custom={type:``,name:``,content:``}),n.MatrixList.KeyMap[a][o].custom.type=t,n.MatrixList.KeyMap[a][o].custom.content=r)},o=this.toHexStringArr(e);switch(parseInt(o[2],16)){case parseInt(t.RESPONSE_CODE.MATRIX6X21_ADVANCED_FUNC_CODE.SOCD):{let e=this.getBottonHidOJBFromHID(r,parseInt(o[5],16)),t=this.getBottonHidOJBFromHID(r,parseInt(o[6],16)),n=e.Value+`|`+t.Value;a(e.Value,`SOCD`,n)}break;case parseInt(t.RESPONSE_CODE.MATRIX6X21_ADVANCED_FUNC_CODE.DKS):{let e=this.getBottonHidOJBFromHID(r,parseInt(o[5],16)),t=this.getBottonHidOJBFromHID(r,parseInt(o[6],16)),n=this.getBottonHidOJBFromHID(r,parseInt(o[8],16)),i=this.getBottonHidOJBFromHID(r,parseInt(o[10],16)),s=this.getBottonHidOJBFromHID(r,parseInt(o[12],16));o[10],o[11],o[12],o[13];let c=e.Value+`,`+t.Value+`|`+n.Value+`|`+i.Value+`|`+s.Value;a(e.Name,`DKS`,c)}break;case parseInt(t.RESPONSE_CODE.MATRIX6X21_ADVANCED_FUNC_CODE.MPT):{let e=this.getBottonHidOJBFromHID(r,parseInt(o[5],16)),t=this.getBottonHidOJBFromHID(r,parseInt(o[6],16)),n=this.getBottonHidOJBFromHID(r,parseInt(o[8],16)),i=this.getBottonHidOJBFromHID(r,parseInt(o[10],16));var s=this.getDGVal(o[12],o[13])/1e3,c=this.getDGVal(o[14],o[15])/1e3,l=this.getDGVal(o[16],o[17])/1e3;let u=e.Value+`|`+t.Value+`|`+s+`|`+n.Value+`|`+c+`|`+i.Value+`|`+l;a(e.Name,`MPT`,u)}break;case parseInt(t.RESPONSE_CODE.MATRIX6X21_ADVANCED_FUNC_CODE.MT):{let e=this.getBottonHidOJBFromHID(r,parseInt(o[5],16)),t=this.getBottonHidOJBFromHID(r,parseInt(o[6],16)),n=this.getBottonHidOJBFromHID(r,parseInt(o[8],16)),i=parseInt(o[10],16)*10,s=e.Value+`|`+n.Value+`|`+t.Value+`|`+i;a(e.Name,`MT`,s)}break;case parseInt(t.RESPONSE_CODE.MATRIX6X21_ADVANCED_FUNC_CODE.END):{let e=this.getBottonHidOJBFromHID(r,parseInt(o[5],16)),t=this.getBottonHidOJBFromHID(r,parseInt(o[6],16)),n=e.Value+`|`+t.Value;a(e.Name,`END`,n)}break;case parseInt(t.RESPONSE_CODE.MATRIX6X21_ADVANCED_FUNC_CODE.TGL):{let e=this.getBottonHidOJBFromHID(r,parseInt(o[5],16)),t=this.getBottonHidOJBFromHID(r,parseInt(o[6],16)),n=parseInt(o[8],16)*10,i=e.Value+`|`+t.Value+`|`+n;a(e.Name,`TGL`,i)}break}},getCurrentConfig(e){let t=this.toHexStringArr(e);return parseInt(t[6],16)},getDeviceSleep(e){let t=this.toHexStringArr(e),n=parseInt(t[6],16);return this.sleep=n,n},setGlobalFuncData(e,t,n){let r=this.toHexStringArr(e);if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.MAC))n.macStatus=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.WIN_KEY_STATUS))n.winKeyStatus=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.RETE))n.reteVal=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.LOD))n.lodVal=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.SLEEP))n.sleep=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.DPI)){var i=parseInt(r[9],16);i=(i&255)<<8|(i&65280)>>8;var a=i+parseInt(r[8],16),o=parseInt(r[12],16);o=(o&255)<<8|(o&65280)>>8;var s=o+parseInt(r[11],16);let e={index:parseInt(r[6],16),x:a,y:s,is_cur:parseInt(r[13],16),is_activate:parseInt(r[14],16)};n.DPIS.push(e)}else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.SITE)){let t=new TextDecoder;n.curWebSite=this.trimSpaces(t.decode(e.slice(6,parseInt(r[1],16)+3)))}else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.FIRST_FLAG))n.FirstFlag=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.SERIAL_NUMBER)){var c=parseInt(r[8],16);c=(c&255)<<8|(c&65280)>>8;var l=c+parseInt(r[7],16);l>2e4&&(c=parseInt(r[7],16),c=(c&255)<<8|(c&65280)>>8,l=c+parseInt(r[6],16)),n.SerialNumber=l}else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.PROFILE_INDEX))n.ProfileIndex=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.FUNC_TYPE_CMD.RT_ALL))n.rt_all_journey=parseInt(r[6],16);else if(parseInt(r[5],16)==parseInt(t.RESPONSE_CODE.GLOBAL_BATTERY_CODE)){let e=parseInt(r[6],16),t=parseInt(r[7],16);n.Battery=e,n.Ischarge=t}},setUpgradeSignFuncData(e,t,n){this.toHexStringArr(e);{let t=new TextDecoder;this.trimSpaces(t.decode(e.slice(7,23))),this.trimSpaces(t.decode(e.slice(23,39))),n.SignDatas=e.slice(7,23),n.SignSN=e.slice(23,39)}},setUpgradeCRCData(e,t,n){n.SignCRC=e.slice(13,15)},setMatrixLayoutData(e,t,n){let r=this.toHexStringArr(e);if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.FN0)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout0Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.FN0)){let e=r.slice(5,61);n.MatrixList.MatrixLayout0Temp.push.apply(n.MatrixList.MatrixLayout0Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.FN1)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout1Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.FN1)){let e=r.slice(5,61);n.MatrixList.MatrixLayout1Temp.push.apply(n.MatrixList.MatrixLayout1Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout4Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4)){let e=r.slice(5,61);n.MatrixList.MatrixLayout4Temp.push.apply(n.MatrixList.MatrixLayout4Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.RTDOWN14)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout14Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.RTDOWN14)){let e=r.slice(5,61);n.MatrixList.MatrixLayout14Temp.push.apply(n.MatrixList.MatrixLayout14Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.RTUP15)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout15Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.RTUP15)){let e=r.slice(5,61);n.MatrixList.MatrixLayout15Temp.push.apply(n.MatrixList.MatrixLayout15Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.SAFE16)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout16Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.SAFE16)){let e=r.slice(5,61);n.MatrixList.MatrixLayout16Temp.push.apply(n.MatrixList.MatrixLayout16Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.SAFE17)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout17Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.SAFE17)){let e=r.slice(5,61);n.MatrixList.MatrixLayout17Temp.push.apply(n.MatrixList.MatrixLayout17Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.AXIS19)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout19Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.AXIS19)){let e=r.slice(5,61);n.MatrixList.MatrixLayout19Temp.push.apply(n.MatrixList.MatrixLayout19Temp,e)}if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.MODE)&&n.typeMatrixPageID==1){let e=r.slice(5,61);n.MatrixList.MatrixLayout8Temp=e}else if(n.typeMatrixID==parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.MODE)){let e=r.slice(5,61);n.MatrixList.MatrixLayout8Temp.push.apply(n.MatrixList.MatrixLayout8Temp,e)}},formatLayout0(e,t,n,r){this.MatrixList.MatrixLayout0=[];for(var i=0;i<this.MatrixList.MatrixLayout0Temp.length;i++)if(i%4==0){let r=this.MatrixList.MatrixLayout0Temp[i],a=parseInt(this.MatrixList.MatrixLayout0Temp[i+2],16),o=parseInt(this.MatrixList.MatrixLayout0Temp[i+3],16);o&=240;let s={hid:r,type:``,name:``,content:``};if(a==parseInt(r,16))continue;switch(o){case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.KEY,16):s.name=this.getBottonHidOJBFromHID(t,a).Name,s.type=s.name;break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA1,16):case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA2,16):case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA3,16):a=`0x`+this.MatrixList.MatrixLayout0Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout0Temp[i+3].toString(16),s.name=this.getBottonHidOJBFromHIDMedia(n,a).name,s.type=s.name;break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.HOTKEY,16):{a=`0x`+this.MatrixList.MatrixLayout0Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout0Temp[i+3].toString(16);let e=this.getBottonHidOJBFromHIDMedia(n,a);if(e)s.name=e.name,s.type=s.name;else{let e=a.split(`,`),n=this.getBottonHidOJBFromHID(t,e[0]);s.type=this.parseHotKeyCommand(parseInt(e[1],16))+n.Name}}break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MOUSE,16):a=`0x`+this.MatrixList.MatrixLayout0Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout0Temp[i+3].toString(16),s.name=this.getBottonHidOJBFromHIDMedia(n,a).name,s.type=s.name;break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.SYS,16):case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.SYS1,16):{a=`0x`+this.MatrixList.MatrixLayout0Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout0Temp[i+3].toString(16);let e=this.getBottonHidOJBFromHIDMedia(n,a);e?(s.name=e.name,s.type=s.name):(console.log(a),s.type=`SYS`)}break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MACRO,16):s.type=`MACRO`;break;default:console.log(o),s.type=`FUNC`;break}this.MatrixList.MatrixLayout0.push(s)}let a=0;for(var i=0;i<6;i++)for(var o=0;o<21;o++){for(let e in this.MatrixList.MatrixLayout0)this.MatrixList.MatrixLayout0[e].type!=``&&this.MatrixList.MatrixLayout0[e].hid==r.MatrixList.KeyMap[i][o].hid&&(r.MatrixList.KeyMap[i][o].custom.name=this.MatrixList.MatrixLayout0[e].type,r.MatrixList.KeyMap[i][o].custom.type=this.MatrixList.MatrixLayout0[e].type);a++}},formatLayout1(e,t,n,r){this.MatrixList.MatrixLayout1=[];for(var i=0;i<this.MatrixList.MatrixLayout1Temp.length;i++)if(i%4==0){let r=this.MatrixList.MatrixLayout1Temp[i],a=parseInt(this.MatrixList.MatrixLayout1Temp[i+2],16),o=parseInt(this.MatrixList.MatrixLayout1Temp[i+3],16);o&=240;let s={hid:r,type:``,name:``,content:``,fn_code:`0x`+this.MatrixList.MatrixLayout1Temp[i+2]+`,0x`+this.MatrixList.MatrixLayout1Temp[i+3]};if(o==0&&a==1||a==parseInt(r,16))continue;switch(o){case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.KEY,16):s.name=this.getBottonHidOJBFromHID(t,a).Name,s.type=s.name;break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA1,16):case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA2,16):case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA3,16):a=`0x`+this.MatrixList.MatrixLayout1Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout1Temp[i+3].toString(16),s.name=this.getBottonHidOJBFromHIDMedia(n,a).name,s.type=s.name;break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.HOTKEY,16):{a=`0x`+this.MatrixList.MatrixLayout1Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout1Temp[i+3].toString(16);let e=this.getBottonHidOJBFromHIDMedia(n,a);if(e)s.name=e.name,s.type=s.name;else{let e=a.split(`,`),n=this.getBottonHidOJBFromHID(t,e[0]);s.type=this.parseHotKeyCommand(parseInt(e[1],16))+n.Name}}break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MOUSE,16):a=`0x`+this.MatrixList.MatrixLayout1Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout1Temp[i+3].toString(16),s.name=this.getBottonHidOJBFromHIDMedia(n,a).name,s.type=s.name;break;case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.SYS,16):case parseInt(e.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.SYS1,16):{a=`0x`+this.MatrixList.MatrixLayout1Temp[i+2].toString(16)+`,0x`+this.MatrixList.MatrixLayout1Temp[i+3].toString(16);let e=this.getBottonHidOJBFromHIDMedia(n,a);e?(s.name=e.name,s.type=s.name):(console.log(a),s.type=`SYS`)}break;default:console.log(o),s.type=`FUNC`;break}this.MatrixList.MatrixLayout1.push(s)}let a=0;for(var i=0;i<6;i++)for(var o=0;o<21;o++){for(let e in this.MatrixList.MatrixLayout1)this.MatrixList.MatrixLayout1[e].type!=``&&this.MatrixList.MatrixLayout1[e].hid==r.MatrixList.KeyMap[i][o].hid&&(r.MatrixList.KeyMap[i][o].fn_custom.fn_code=this.MatrixList.MatrixLayout1[e].fn_code,r.MatrixList.KeyMap[i][o].fn_custom.name=this.MatrixList.MatrixLayout1[e].type,r.MatrixList.KeyMap[i][o].fn_custom.type=this.MatrixList.MatrixLayout1[e].type);a++}},formatLayout4(e){this.MatrixList.MatrixLayout4=[];for(var t=0;t<this.MatrixList.MatrixLayout4Temp.length;t++)if(t%4==0){let e=this.MatrixList.MatrixLayout4Temp[t];var n=parseInt(this.MatrixList.MatrixLayout4Temp[t+3],16);n=(n&255)<<8|(n&65280)>>8;let r={hid:e,journey:n+parseInt(this.MatrixList.MatrixLayout4Temp[t+2],16)};this.MatrixList.MatrixLayout4.push(r)}let r=0;for(var t=0;t<6;t++)for(var i=0;i<21;i++){for(let n in this.MatrixList.MatrixLayout4)this.MatrixList.MatrixLayout4[n].hid==e.MatrixList.KeyMap[t][i].hid&&(e.MatrixList.KeyMap[t][i].journey_trigger=this.MatrixList.MatrixLayout4[n].journey/1e3);r++}},formatLayout8(e){this.MatrixList.MatrixLayout8=[];for(var t=0;t<this.MatrixList.MatrixLayout8Temp.length;t++)if(t%4==0){let e=this.MatrixList.MatrixLayout8Temp[t];var n=parseInt(this.MatrixList.MatrixLayout8Temp[t+3],16);n=(n&255)<<8|(n&65280)>>8;let r={hid:e,working_mode:n+parseInt(this.MatrixList.MatrixLayout8Temp[t+2],16)};this.MatrixList.MatrixLayout8.push(r)}let r=0;for(var t=0;t<6;t++)for(var i=0;i<21;i++){for(let n in this.MatrixList.MatrixLayout8)this.MatrixList.MatrixLayout8[n].hid==e.MatrixList.KeyMap[t][i].hid&&(e.MatrixList.KeyMap[t][i].working_mode=this.MatrixList.MatrixLayout8[n].working_mode);r++}},formatLayout14(e){this.MatrixList.MatrixLayout14=[];for(var t=0;t<this.MatrixList.MatrixLayout14Temp.length;t++)if(t%4==0){let e=this.MatrixList.MatrixLayout14Temp[t];var n=parseInt(this.MatrixList.MatrixLayout14Temp[t+3],16);n=(n&255)<<8|(n&65280)>>8;let r={hid:e,down:n+parseInt(this.MatrixList.MatrixLayout14Temp[t+2],16)};this.MatrixList.MatrixLayout14.push(r)}let r=0;for(var t=0;t<6;t++)for(var i=0;i<21;i++){for(let n in this.MatrixList.MatrixLayout14)this.MatrixList.MatrixLayout14[n].hid==e.MatrixList.KeyMap[t][i].hid&&(e.MatrixList.KeyMap[t][i].journey_RT.down=this.MatrixList.MatrixLayout14[n].down/1e3);r++}},formatLayout15(e){this.MatrixList.MatrixLayout15=[];for(var t=0;t<this.MatrixList.MatrixLayout15Temp.length;t++)if(t%4==0){let e=this.MatrixList.MatrixLayout15Temp[t];var n=parseInt(this.MatrixList.MatrixLayout15Temp[t+3],16);n=(n&255)<<8|(n&65280)>>8;let r={hid:e,up:n+parseInt(this.MatrixList.MatrixLayout15Temp[t+2],16)};this.MatrixList.MatrixLayout15.push(r)}let r=0;for(var t=0;t<6;t++)for(var i=0;i<21;i++){for(let n in this.MatrixList.MatrixLayout15)this.MatrixList.MatrixLayout15[n].hid==e.MatrixList.KeyMap[t][i].hid&&(e.MatrixList.KeyMap[t][i].journey_RT.up=this.MatrixList.MatrixLayout15[n].up/1e3);r++}},formatLayout16(e){this.MatrixList.MatrixLayout16=[];for(var t=0;t<this.MatrixList.MatrixLayout16Temp.length;t++)if(t%4==0){let e=this.MatrixList.MatrixLayout16Temp[t];var n=parseInt(this.MatrixList.MatrixLayout16Temp[t+3],16);n=(n&255)<<8|(n&65280)>>8;let r={hid:e,down:n+parseInt(this.MatrixList.MatrixLayout16Temp[t+2],16)};this.MatrixList.MatrixLayout16.push(r)}let r=0;for(var t=0;t<6;t++)for(var i=0;i<21;i++){for(let n in this.MatrixList.MatrixLayout16)this.MatrixList.MatrixLayout16[n].hid==e.MatrixList.KeyMap[t][i].hid&&(e.MatrixList.KeyMap[t][i].safe_zone_top=this.MatrixList.MatrixLayout16[n].down/1e3);r++}},formatLayout17(e){this.MatrixList.MatrixLayout17=[];for(var t=0;t<this.MatrixList.MatrixLayout17Temp.length;t++)if(t%4==0){let e=this.MatrixList.MatrixLayout17Temp[t];var n=parseInt(this.MatrixList.MatrixLayout17Temp[t+3],16);n=(n&255)<<8|(n&65280)>>8;let r={hid:e,up:n+parseInt(this.MatrixList.MatrixLayout17Temp[t+2],16)};this.MatrixList.MatrixLayout17.push(r)}let r=0;for(var t=0;t<6;t++)for(var i=0;i<21;i++){for(let n in this.MatrixList.MatrixLayout17)this.MatrixList.MatrixLayout17[n].hid==e.MatrixList.KeyMap[t][i].hid&&(e.MatrixList.KeyMap[t][i].safe_zone_bottom=this.MatrixList.MatrixLayout17[n].up/1e3);r++}},formatLayout19(e){this.MatrixList.MatrixLayout19=[];for(var t=0;t<this.MatrixList.MatrixLayout19Temp.length;t++)if(t%4==0){let e=this.MatrixList.MatrixLayout19Temp[t];var n=parseInt(this.MatrixList.MatrixLayout19Temp[t+3],16),r=parseInt(this.MatrixList.MatrixLayout19Temp[t+3],16);r=(r&255)<<8|(r&65280)>>8;let i={hid:e,axis:parseInt(this.MatrixList.MatrixLayout19Temp[t+2],16),routeAxis:n};this.MatrixList.MatrixLayout19.push(i)}let i=0;for(var t=0;t<6;t++)for(var a=0;a<21;a++){for(let n in this.MatrixList.MatrixLayout19)this.MatrixList.MatrixLayout19[n].hid==e.MatrixList.KeyMap[t][a].hid&&(e.MatrixList.KeyMap[t][a].axis=this.MatrixList.MatrixLayout19[n].axis,e.MatrixList.KeyMap[t][a].routeAxis=this.MatrixList.MatrixLayout19[n].routeAxis);i++}},getMaxValue(e){return e.reduce((e,t)=>t>e?t:e,e[0])},getDeviceInfo(e){let t=new TextDecoder;this.toHexString(e);let n=parseInt(this.toHexString(Array.from(e.slice(5,9)).reverse()),16),r=parseInt(this.toHexString(e.slice(10,11)),16),i=parseInt(this.toHexString(e.slice(11,12)),16),a=this.trimSpaces(t.decode(e.slice(13,29)),16);var o=this.trimSpaces(t.decode(e.slice(30,42)));o=o.split(`.`).pop();let s=parseInt(this.toHexString(e.slice(46,47)),16),c=this.toHexString(e.slice(59,63));return this.ConnectMode=s,this.FirmwareID=n,this.FirmwareNum=o,this.RunMode=i,this.SN=a,this.SNDatas=e.slice(13,29),{BoardID:n,FWsize:r,RunMode:i,SN:a,Version:o,ConnectMode:s,CheckNum:c}},getADCData(e,t){},getSetPRGBCmd(e){return e},mergeUint8Arrays(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;return e.forEach(e=>{n.set(e,r),r+=e.length}),n},toHexString(e){return e.reduce((e,t)=>e+t.toString(16).padStart(2,`0`),``)},toHexStringArr(e){return e.reduce((e,t)=>e+t.toString(16).padStart(2,`0`),``).match(/.{1,2}/g)},fromHexString(e){return new Uint8Array(e.toString().match(/.{1,2}/g).map(e=>parseInt(e,16)))},trimSpaces(e){return e=e.replace(/\u0000/g,``),e=e.replace(/\u0010/g,``),e=e.replace(/\r/g,``),e=e.replace(/\n/g,``),e},getHighLowBits(e){if(e>=0&&e<=65535){let t=[e&255,e>>8];return t[0]=t[0].toString(16),t[1]=t[1].toString(16),t}else throw Error(`The decimal number must be between 0 and 65535.`)},startCalibrate(e){e.SET_DEVICE_FUNCTION_OP_CMD[4]=`0x0C`;let t=new Uint8Array(e.SET_DEVICE_FUNCTION_OP_CMD.map(e=>parseInt(e,16)));this.curDeviceHandle.sendReport(0,t),setTimeout(()=>{this.startListeningNormal(e)},100)},stopListening(){this.ListenID!==-1&&(clearInterval(this.ListenID),this.ListenID=-1)},async stopCalibrate(e){this.stopListening(),await new Promise(e=>setTimeout(e,1e3));let t=[...e.SET_DEVICE_FUNCTION_OP_CMD];t[4]=`0x0D`;let n=new Uint8Array(t.map(e=>parseInt(e,16)));await this.curDeviceHandle.sendReport(0,n)},isNumber(e){return typeof e==`number`&&!isNaN(e)},parseHotKeyCommand(e){let t=[{Name:`Ctrl`,Hid:`0x01`},{Name:`Shift`,Hid:`0x02`},{Name:`Alt`,Hid:`0x04`},{Name:`Win`,Hid:`0x08`}],n=``,r=e&15;for(var i=0;i<t.length;i++)r&parseInt(t[i].Hid,16)&&(n+=t[i].Name+`+`);return n},getHotKeyCommand(e,t){let n={modifier:0,key:0},r=function(e){let t=[{Name:`Ctrl`,Hid:`0x01`},{Name:`Shift`,Hid:`0x02`},{Name:`Alt`,Hid:`0x04`},{Name:`Win`,Hid:`0x08`},{Name:`LCTRL`,Hid:`0x01`},{Name:`LSHIFT`,Hid:`0x02`},{Name:`RCTRL`,Hid:`0x01`},{Name:`RSHIFT`,Hid:`0x02`}];for(var n=0;n<t.length;n++)if(t[n].Name==e)return t[n];return!1},i=t.split(`+`),a=0;for(let e=0;e<i.length;e++){let t=r(i[e]);t&&(t.Hid=parseInt(t.Hid,16),a=a==0?t.Hid:a|=t.Hid)}let o=i[i.length-1],s=this.getBottonHidOJBFromName(e,o);return a=a|=96,n.modifier=a.toString(16),n.key=s.Hid,n},getMacroCommand(e,t,n,r,i,a,o){let s=this,c=function(e){let t=n.KEYMAP;for(var r in t)if(t[r].VKCode==e)return t[r].Hid},l=function(e){switch(e.type){case`keydown`:{let n=c(e.keyCode),r=t.MACRO_TYPE_CMD.KEY_DOWN;return r[1]=n,r}break;case`keyup`:{let n=c(e.keyCode),r=t.MACRO_TYPE_CMD.KEY_UP;return r[1]=n,r}break;case`mousedown`:{let n=t.MACRO_TYPE_CMD.KEY_DOWN;return n[1]=e.keyCode.toString(16),n}break;case`mouseup`:{let n=t.MACRO_TYPE_CMD.KEY_UP;return n[1]=e.keyCode.toString(16),n}break;case`time`:{let n=s.getHighLowBits(e.keyCode),r=t.MACRO_TYPE_CMD.DELAY;return r[1]=n[0],r[2]=n[1],r}break}},u=[];for(let e=0;e<r.length;e++){let t=l(r[e]);u.push(...t)}u.unshift(o.toString(16)),u.unshift(a.toString(16)),u.unshift(i.toString(16));let d=function(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},f=t.SET_DEVICE_FUNCTION_MACRO_CMD;f[5]=e.toString(16),f[6]=(r.length*3+3).toString(16),f[7]=`0x00`;let p=d(u,56);for(let e in p){e==p.length-1&&(f[7]=`0x01`),p[e]=f.concat(p[e]),p[e][1]=(p[e].length-4).toString(16);let t=p[e][p[e].length-1];p[e][3]=this.getCRC(p[e][1],p[e][2],t),p[e][3]=p[e][3].toString(16)}return p},chunkArray(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},getButtonJourneyCommand(e,t,n){let r=t*1e3;r=this.getHighLowBits(r);let i=n.SET_DEVICE_BUTTON_JOURNEY_CMD,a=[];e.forEach(function(e){i[0]=e.getAttribute(`hid`),i[2]=r[0],i[3]=r[1],a.push(...i)}),a=this.chunkArray(a,8);let o=n.SET_DEVICE_BUTTON_OP_HEAD,s=[],c=[];for(let e=0;e<a.length;e++)if(e!=0&&e%6==0||e==a.length-1){c.push(...a[e]),c=o.concat(c);let t=c.length-4==parseInt(o[1],16)?c[c.length-1]:0;c[3]=this.getCRC(o[1],o[2],t),c[3]=c[3].toString(16),s.push(c),c=[]}else c.push(...a[e]);return s},getButtonRestJourneyCommand(e,t){let n=t.SET_RESET_BUTTON_JOURNEY_CMD,r=[];e.forEach(function(e){let t=e.getAttribute(`hid`),i=e.getAttribute(`working_mode`);if(i==null){console.log(e.getAttribute(`name`)),console.log(i);return}let a=parseInt(i);console.log(a.toString(16)),n[0]=t,n[2]=a.toString(16),n[4]=t,r.push(...n)}),r=this.chunkArray(r,8);let i=t.SET_DEVICE_BUTTON_OP_HEAD,a=[],o=[];for(let e=0;e<r.length;e++)if(e!=0&&e%6==0||e==r.length-1){o.push(...r[e]),o=i.concat(o);let t=o.length-4==parseInt(i[1],16)?o[o.length-1]:0;o[3]=this.getCRC(i[1],i[2],t),o[3]=o[3].toString(16),a.push(o),o=[]}else o.push(...r[e]);return a},getButtonSafeZoneCommand(e,t,n,r){let i=t*1e3;i=this.getHighLowBits(i);let a=n*1e3;a=this.getHighLowBits(a);let o=r.SET_DEVICE_BUTTON_SAFEZONE_CMD,s=[];e.forEach(function(e){let t=e.getAttribute(`hid`);o[0]=t,o[4]=t,o[2]=i[0],o[3]=i[1],o[6]=a[0],o[7]=a[1],s.push(...o)}),s=this.chunkArray(s,12);let c=r.SET_DEVICE_BUTTON_OP_HEAD,l=[],u=[];for(let e=0;e<s.length;e++)if(e!=0&&e%3==0||e==s.length-1){u.push(...s[e]),u=c.concat(u);let t=u.length==57?u[u.length-1]:0;u[3]=this.getCRC(c[1],c[2],t),u[3]=u[3].toString(16),l.push(u),u=[]}else u.push(...s[e]);return l},getButtonRTSwitchCommand(e,t,n){let r=this,i=n.SET_DEVICE_BUTTON_RT_CMD,a=e?32:16,o=[];t.forEach(function(e){let t=e.getAttribute(`hid`),n=e.getAttribute(`working_mode`),s=e.getAttribute(`rt_up`),c=e.getAttribute(`rt_down`);if(n==null)return;let l=parseFloat(s)*1e3;l=r.getHighLowBits(l);let u=parseFloat(c)*1e3;u=r.getHighLowBits(u);let d=a+parseInt(n);i[0]=t,i[2]=d.toString(16),i[4]=t,i[8]=t,i[6]=u[0],i[7]=u[1],i[10]=l[0],i[11]=l[1],o.push(...i)}),o=this.chunkArray(o,12);let s=n.SET_DEVICE_BUTTON_OP_HEAD,c=[],l=[];for(let e=0;e<o.length;e++)if(e!=0&&e%3==0||e==o.length-1){l.push(...o[e]),l=s.concat(l);let t=l.length==57?l[l.length-1]:0;l[3]=this.getCRC(s[1],s[2],t),l[3]=l[3].toString(16),c.push(l),l=[]}else l.push(...o[e]);return c},getButtonRTCommand(e,t,n,r){let i=t*1e3;i=this.getHighLowBits(i);let a=n*1e3;a=this.getHighLowBits(a);let o=r.SET_DEVICE_BUTTON_RT_CMD,s=[];e.forEach(function(e){let t=e.getAttribute(`hid`),n=e.getAttribute(`working_mode`);if(n==null){console.log(e.getAttribute(`name`)),console.log(n);return}let r=32+parseInt(n);o[0]=t,o[2]=r.toString(16),o[4]=t,o[8]=t,o[6]=a[0],o[7]=a[1],o[10]=i[0],o[11]=i[1],s.push(...o)}),s=this.chunkArray(s,12);let c=r.SET_DEVICE_BUTTON_OP_HEAD,l=[],u=[];for(let e=0;e<s.length;e++)if(e!=0&&e%3==0||e==s.length-1){u.push(...s[e]),u=c.concat(u);let t=u.length==57?u[u.length-1]:0;u[3]=this.getCRC(c[1],c[2],t),u[3]=u[3].toString(16),l.push(u),u=[]}else u.push(...s[e]);return l},getButtonRGBCommand(e,t,n){let r=[t.substring(0,2),t.substring(2,4),t.substring(4,6)],i=[];e.forEach(function(e){let t=[];t[0]=e.getAttribute(`hid`),t[1]=r[0],t[2]=r[1],t[3]=r[2],i.push(...t)});let a=n.SET_CUSTOM_BUTTON_RGB_HEAD_CMD,o=[],s=[],c=1;for(let e=0;e<i.length;e++){if(c==56||e==i.length-1){s.push(i[e]),s=a.concat(s);let t=s.length==61?s[s.length-1]:0;s[3]=this.getCRC(a[1],a[2],t),s[3]=s[3].toString(16),o.push(s),s=[],c=1;continue}else s.push(i[e]);c++}return o},getButtonLayoutCustomCompletion(e,t){let n=[`0x00`,t,`0x00`,`0x00`];if(e.length!=56)for(var r=0;r<=(56-e.length)/4;r++)e.push(...n);return e},getButtonLayout0CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x00`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.FN0),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout8CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x08`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.MODE),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout1CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x01`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.FN0),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout4CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x04`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout14CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x14`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout15CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x15`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout16CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x16`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout17CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x17`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getButtonLayout19CustomCommand(e){let t=this.MatrixList.KeyMap,n=[],r=[`0xAA`,`0x19`,`0x00`,`0x00`];for(var i=0;i<t.length;i++)for(var a=0;a<t[i].length;a++)t[i][a].hid!=`00`&&(r[0]=t[i][a].hid,n.push(...r));let o=e.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,s=[],c=[],l=1;for(let t=0;t<n.length;t++){if(l==56||t==n.length-1){c.push(n[t]),c=this.getButtonLayoutCustomCompletion(c,e.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.AXIS19),c=o.concat(c),s.push(c),c=[],l=1;continue}else c.push(n[t]);l++}return s},getMatrixKey(e){let t=[],n=this.toHexStringArr(e),r=n.slice(6,27),i=n.slice(28,49);return t.push(r,i),t},getFormatKeyMapMatrix(e,t,r){let i=e.concat(t).concat(r),a=function(e){let t=n.KEYMAP;for(var r in t)if(parseInt(t[r].Hid,16)==parseInt(e,16))return t[r]},o=[],s=0;for(let e=0;e<6;e++){let t=[],n=i[e];if(!n)break;for(let e=0;e<21;e++){var c=parseInt(n[e],16)==0?0:a(n[e]);let r=JSON.parse(JSON.stringify(this.keyMapStructure));r.index=s,r.key_name=c?c.Value:0,r.name=c?c.Name:0,r.hid=n[e],t.push(r),s++}o.push(t)}return o}},i={MOUSE:[{code:`0x01,0x70`,name:`leftkeyMouse`},{code:`0x02,0x70`,name:`rightkeyMouse`},{code:`0x03,0x70`,name:`middlekeyMouse`},{code:`0x08,0x70`,name:`forwardMouse`},{code:`0x09,0x70`,name:`backMouse`},{code:`0x05,0x70`,name:`moveRightMouse`},{code:`0x04,0x70`,name:`moveLeftMouse`},{code:`0x07,0x70`,name:`moveDownMouse`},{code:`0x06,0x70`,name:`moveUpMouse`}],MEDIA:[{code:`0x94,0x11`,name:`File`},{code:`0x83,0x11`,name:`Media`},{code:`0xcd,0x10`,name:`Pause`},{code:`0xb7,0x10`,name:`Stop`},{code:`0xb6,0x10`,name:`Pre`},{code:`0xb5,0x10`,name:`Next`},{code:`0xe9,0x10`,name:`Volume +`},{code:`0xea,0x10`,name:`Volume -`},{code:`0xe2,0x10`,name:`Mute`},{code:`0x6f,0x10`,name:`Brightness +`},{code:`0x70,0x10`,name:`Brightness -`},{code:`0x8a,0x11`,name:`E-mail`},{code:`0x92,0x11`,name:`Calculator`},{code:`0x21,0x12`,name:`Web Search`},{code:`0x23,0x12`,name:`Web Home`},{code:`0x24,0x12`,name:`Page Back`},{code:`0x27,0x12`,name:`Web Refresh`},{code:`0x2a,0x12`,name:`Web Bookmark`}],SYS:[{code:`0x24,0xf3`,name:`RGB Custom`},{code:`0x09,0xf3`,name:`Lock Win`},{code:`0x0e,0xf3`,name:`Driver`},{code:`0x11,0xf3`,name:`Light Direction`},{code:`0x01,0xf0`,name:`FN`},{code:`0x03,0xf1`,name:`Calibration(3s)`},{code:`0x00,0xf1`,name:`Reset(3s)`},{code:`0x08,0xf1`,name:`Profile1`},{code:`0x09,0xf1`,name:`Profile2`},{code:`0x0a,0xf1`,name:`Profile3`},{code:`0x0c,0xf1`,name:`Profile4`},{code:`0x17,0xf3`,name:`RGB OFF`},{code:`0x10,0xf3`,name:`RGB M+`},{code:`0x2f,0xf3`,name:`RGB M-`},{code:`0x2d,0xf3`,name:`RGB Mode`},{code:`0x14,0xf3`,name:`Sped+`},{code:`0x15,0xf3`,name:`Sped-`},{code:`0x12,0xf3`,name:`Light+`},{code:`0x13,0xf3`,name:`Light-`},{code:`0x26,0xf3`,name:`Aura OFF`},{code:`0x25,0xf3`,name:`Aura M+`},{code:`0x2c,0xf3`,name:`Aura M-`},{code:`0x27,0xf3`,name:`Aura Mode`},{code:`0x28,0xf3`,name:`Aura Sped+`},{code:`0x29,0xf3`,name:`Aura Sped-`},{code:`0x2a,0xf3`,name:`Aura Light+`},{code:`0x2b,0xf3`,name:`Aura Light-`}],FUNC:[{code:`0x46,0x00`,name:`Print`},{code:`0x47,0x00`,name:`Scroll`},{code:`0x02,0xf1`,name:`Mac`},{code:`0x01,0xf1`,name:`Win`},{code:`0x48,0x00`,name:`Pause`},{code:`0x0d,0xf3`,name:`Lock Key`},{code:`0x35,0x00`,name:"`"},{code:`0x3a,0x00`,name:`F1`},{code:`0x3b,0x00`,name:`F2`},{code:`0x3c,0x00`,name:`F3`},{code:`0x3d,0x00`,name:`F4`},{code:`0x3e,0x00`,name:`F5`},{code:`0x3f,0x00`,name:`F6`},{code:`0x40,0x00`,name:`F7`},{code:`0x41,0x00`,name:`F8`},{code:`0x42,0x00`,name:`F9`},{code:`0x43,0x00`,name:`F10`},{code:`0x44,0x00`,name:`F11`},{code:`0x45,0x00`,name:`F12`},{code:`0x4a,0x00`,name:`Home`},{code:`0x4d,0x00`,name:`End`},{code:`0x49,0x00`,name:`Ins`},{code:`0x4b,0x00`,name:`PgUp`},{code:`0x4e,0x00`,name:`PgDn`},{code:`0x4c,0x00`,name:`Del`},{code:`0x52,0x00`,name:`Up`},{code:`0x50,0x00`,name:`Left`},{code:`0x51,0x00`,name:`Down`},{code:`0x4f,0x00`,name:`Right`}]},a={kailh:[{id:29,brand:`kailh`,name:`冰淇淋`,en:``,model:`bjl`,RT:.01,maxHigth:3.3},{id:30,brand:`kailh`,name:`紫焰`,en:``,model:`zy`,RT:.01,maxHigth:3.3},{id:31,brand:`kailh`,name:`星磁`,en:``,model:`xc`,RT:.01,maxHigth:3.3},{id:32,brand:`kailh`,name:`太空舱`,en:``,model:`tkc`,RT:.01,maxHigth:3.3},{id:33,brand:`kailh`,name:`水母轴`,en:``,model:`sm`,RT:.01,maxHigth:3.3},{id:34,brand:`kailh`,name:`烈刃轴`,en:``,model:`lr`,RT:.01,maxHigth:3.3},{id:35,brand:`kailh`,name:`巨磁轴`,en:``,model:`jc`,RT:.01,maxHigth:3.3},{id:36,brand:`kailh`,name:`青柠轴`,en:``,model:`ql`,RT:.01,maxHigth:3.3},{id:37,brand:`kailh`,name:`糯米轴`,en:``,model:`lm`,RT:.01,maxHigth:3.3},{id:38,brand:`kailh`,name:`磁神轴`,en:``,model:`cs`,RT:.01,maxHigth:3.3},{id:39,brand:`kailh`,name:`BOX电感`,en:``,model:`boxdg`,RT:.01,maxHigth:3.1},{id:40,brand:`kailh`,name:`MX电感`,en:``,model:`mxdg`,RT:.01,maxHigth:3.1}],hexgears:[{id:41,brand:`hexgears`,name:`波粒轴`,en:``,model:`bl`,RT:.02,maxHigth:3.8},{id:42,brand:`hexgears`,name:`VC轴`,en:``,model:`vc`,RT:.02,maxHigth:3.8}],gateron:[{id:0,brand:`gateron`,name:`磁玉PRO`,en:`GATERON JADE PRO`,model:`KS-PRO`,RT:.01,maxHigth:3.3},{id:22,brand:`gateron`,name:`龙吟轴`,en:`Magnetic Jade Emerald Switch`,model:`KS-LYZ`,RT:.01,maxHigth:3.3},{id:23,brand:`gateron`,name:`三角轴`,en:`Magnetic Jade Delta Switch`,model:`KS-SJZ`,RT:.01,maxHigth:3.3},{id:24,brand:`gateron`,name:`双灯轴`,en:`Magnetic Aura white Dual-SMD switch`,model:`KS-SDZ`,RT:.01,maxHigth:3.3},{id:25,brand:`gateron`,name:`星幻白轴`,en:`Magnetic Aura white Dual-SMD switch`,model:`KS-XHBZ`,RT:.01,maxHigth:3.3},{id:26,brand:`gateron`,name:`星幻粉轴`,en:`Magnetic Aura Pink Dual-SMD switch`,model:`KS-XHFZ`,RT:.01,maxHigth:3.3},{id:27,brand:`gateron`,name:`玉龙轴`,en:`Magnetic Jade Dragon Switch`,model:`KS-YLZ`,RT:.01,maxHigth:3.2},{id:28,brand:`gateron`,name:`磁玉Ultra轴`,en:`Magnetic Jade Ultra Switch`,model:`KS-CYULTRA`,RT:.01,maxHigth:3.2},{id:1,brand:`gateron`,name:`花火轴`,en:`Magnetic Spark Switch`,model:`KS-20F`,RT:.01,maxHigth:3.2},{id:5,brand:`gateron`,name:`绿龙轴`,en:`GATERON GREEN DRAGON`,model:`KS-GAMEL`,RT:.01,maxHigth:3.3},{id:17,brand:`gateron`,name:`紫龙轴`,en:`Purple Dragon Switch`,model:`KS-ZL`,RT:.01,maxHigth:3.3},{id:18,brand:`gateron`,name:`赤龙轴`,en:`Red Dragon Switch`,model:`KS-HL`,RT:.01,maxHigth:3.3},{id:19,brand:`gateron`,name:`紫兰轴`,en:`Orchid Switch`,model:`KS-ZLZ`,RT:.01,maxHigth:3.3},{id:2,brand:`gateron`,name:`磁玉Air`,en:`GATERON JADE AIR`,model:`KS-ARI`,RT:.01,maxHigth:3.3},{id:14,brand:`gateron`,name:`阿波罗轴`,en:`Magnetic Apollo Switch`,model:`KS-ABL`,RT:.01,maxHigth:3.3},{id:3,brand:`gateron`,name:`全POM樱花轴`,en:`FULL POM Magnetic Jade Sakura Switch`,model:`KS-YHZP`,RT:.01,maxHigth:3.3},{id:16,brand:`gateron`,name:`樱花轴(限量款)`,en:`Magnetic Jade Sakura Switch`,model:`KS-YHZ`,RT:.01,maxHigth:3.3},{id:4,brand:`gateron`,name:`玉京子(限量款)`,en:`GATERON JADE RUBY`,model:`KS-YJZ`,RT:.01,maxHigth:3.3},{id:6,brand:`gateron`,name:`磁玉Gaming`,en:`GATERON JADE GAMING`,model:`KS-GAME`,RT:.01,maxHigth:3.3},{id:10,brand:`gateron`,name:`磁玉MAX`,en:`GATERON JADE MAX`,model:`KS-MAX`,RT:.01,maxHigth:3.3},{id:7,brand:`gateron`,name:`磁玉`,en:`GATERON JADE`,model:`KS-20T`,RT:.01,maxHigth:3.3},{id:8,brand:`gateron`,name:`双轨磁白`,en:`Dual-rail Magnetic White`,model:`37B`,RT:.04,maxHigth:3.8},{id:9,brand:`gateron`,name:`双轨磁橙轴`,en:`Dual-rail Magnetic Orange`,model:`KS-20U`,RT:.04,maxHigth:3.5},{id:20,brand:`gateron`,name:`悟静轴`,en:`Dual-rail Magnetic Orange`,model:`KS-20U-020`,RT:.01,maxHigth:3.6}],ef:[{id:12,brand:`ef`,name:`万磁轴`,en:`KA-02`,model:`wc`,RT:.1,maxHigth:3.5}]},o=`1.0.20260422`,s=`wvke-sdk`,c=class{constructor(){this.currentVersion=o,this.supportedVersions=[o],this.deviceCompatibility={keyboard:{minFirmwareVersion:`1.0.0`,maxFirmwareVersion:`2.0.0`},mouse:{minFirmwareVersion:`1.0.0`,maxFirmwareVersion:`2.0.0`}}}getVersion(){return{version:this.currentVersion,name:s,buildDate:new Date().toISOString()}}checkCompatibility(e,t){let n=this.deviceCompatibility[e];if(!n)return{compatible:!1,reason:`Unknown device type`};let r=this.compareVersions(t,n.minFirmwareVersion)>=0&&this.compareVersions(t,n.maxFirmwareVersion)<=0;return{compatible:r,reason:r?`Compatible`:`Firmware version ${t} not supported. Supported range: ${n.minFirmwareVersion} - ${n.maxFirmwareVersion}`}}compareVersions(e,t){let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<Math.max(n.length,r.length);e++){let t=n[e]||0,i=r[e]||0;if(t>i)return 1;if(t<i)return-1}return 0}getSupportedDeviceTypes(){return Object.keys(this.deviceCompatibility)}},l=class{constructor(){this.levels={DEBUG:0,INFO:1,WARN:2,ERROR:3},this.currentLevel=this.levels.INFO,this.logs=[],this.maxLogs=1e3}setLevel(e){this.levels[e]!==void 0&&(this.currentLevel=this.levels[e])}debug(e,t=null){this.log(`DEBUG`,e,t)}info(e,t=null){this.log(`INFO`,e,t)}warn(e,t=null){this.log(`WARN`,e,t)}error(e,t=null){this.log(`ERROR`,e,t)}log(e,t,n=null){if(this.levels[e]<this.currentLevel)return;let r={timestamp:new Date().toISOString(),level:e,message:t,data:n,stack:e===`ERROR`?Error().stack:null};this.logs.push(r),this.logs.length>this.maxLogs&&this.logs.shift();let i=e.toLowerCase();console[i]&&console[i](`[${e}] ${t}`,n||``)}getLogs(e=null,t=100){let n=this.logs;return e&&(n=this.logs.filter(t=>t.level===e)),n.slice(-t)}clearLogs(){this.logs=[]}},u=class{constructor(){this.metrics={operations:{},connections:{},errors:{}},this.startTime=Date.now()}recordOperation(e,t,n,r=!0){let i=n-t;this.metrics.operations[e]||(this.metrics.operations[e]={count:0,totalTime:0,avgTime:0,minTime:1/0,maxTime:0,successCount:0,errorCount:0});let a=this.metrics.operations[e];a.count++,a.totalTime+=i,a.avgTime=a.totalTime/a.count,a.minTime=Math.min(a.minTime,i),a.maxTime=Math.max(a.maxTime,i),r?a.successCount++:a.errorCount++}recordConnection(e,t=!0){this.metrics.connections[e]||(this.metrics.connections[e]={connectCount:0,disconnectCount:0,totalConnectedTime:0,lastConnected:null,lastDisconnected:null});let n=this.metrics.connections[e];t?(n.connectCount++,n.lastConnected=new Date().toISOString()):(n.disconnectCount++,n.lastDisconnected=new Date().toISOString())}recordError(e,t){this.metrics.errors[e]||(this.metrics.errors[e]={count:0,lastError:null,messages:[]});let n=this.metrics.errors[e];n.count++,n.lastError=new Date().toISOString(),n.messages.push({timestamp:new Date().toISOString(),message:t.message||t,stack:t.stack}),n.messages.length>10&&n.messages.shift()}getReport(){return{uptime:Date.now()-this.startTime,operations:this.metrics.operations,connections:this.metrics.connections,errors:this.metrics.errors,summary:{totalOperations:Object.values(this.metrics.operations).reduce((e,t)=>e+t.count,0),totalErrors:Object.values(this.metrics.errors).reduce((e,t)=>e+t.count,0),activeConnections:Object.values(this.metrics.connections).filter(e=>e.lastConnected&&(!e.lastDisconnected||e.lastConnected>e.lastDisconnected)).length}}}reset(){this.metrics={operations:{},connections:{},errors:{}},this.startTime=Date.now()}},d=new c,f=new l,p=new u,m=Object.freeze({icon:``,z_b:``,z_y:``}),h=[`wvke-sdk.es.js`,`wvke-sdk.umd.js`],g=`.wvke`,_=`wvke-sdk-assets-v1`,v=Object.freeze({png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`}),y=new Map,b=null,x=28,S=0,C=5e3,w=5e3,T=[[`0x29`,`0x3A`,`0x3B`,`0x3C`,`0x3D`,`0x3E`,`0x3F`,`0x40`,`0x41`,`0x42`,`0x43`,`0x44`,`0x45`,`0x46`,`0x47`,`0x48`],[`0x35`,`0x1E`,`0x1F`,`0x20`,`0x21`,`0x22`,`0x23`,`0x24`,`0x25`,`0x26`,`0x27`,`0x2D`,`0x2E`,`0x2A`,`0x49`,`0x4A`,`0x4B`,`0x53`,`0x54`,`0x55`,`0x56`],[`0x2B`,`0x14`,`0x1A`,`0x08`,`0x15`,`0x17`,`0x1C`,`0x18`,`0x0C`,`0x12`,`0x13`,`0x2F`,`0x30`,`0x31`,`0x4C`,`0x4D`,`0x4E`,`0x5F`,`0x60`,`0x61`,`0x57`],[`0x39`,`0x04`,`0x16`,`0x07`,`0x09`,`0x0A`,`0x0B`,`0x0D`,`0x0E`,`0x0F`,`0x33`,`0x34`,`0x28`,`0x5C`,`0x5D`,`0x5E`],[`0xE1`,`0x1D`,`0x1B`,`0x06`,`0x19`,`0x05`,`0x11`,`0x10`,`0x36`,`0x37`,`0x38`,`0xE5`,`0x52`,`0x59`,`0x5A`,`0x5B`,`0x58`],[`0xE0`,`0xE3`,`0xE2`,`0x2C`,`0xE6`,`0xE7`,`0x65`,`0xE4`,`0x50`,`0x51`,`0x4F`,`0x62`,`0x63`]],E=[`system`,`mouse`,`media`,`firmware`],D=new Set([`Driver`,`Calibration(3s)`,`Reset(3s)`,`Profile1`,`Profile2`,`Profile3`,`Profile4`]),O=Object.freeze({HOTKEY:`HOTKEY.png`,MACRO:`MACRO.png`,DKS:`DKS.png`,MPT:`MPT.png`,MT:`MT.png`,TGL:`TGL.png`,END:`END.png`,SOCD:`SOCD.png`,RS:`RS.png`}),k=Object.freeze({mouse:Object.freeze({leftkeyMouse:`leftkey.png`,rightkeyMouse:`rightkey.png`,middlekeyMouse:`middlekey.png`,forwardMouse:`forward.png`,backMouse:`back.png`,moveLeftMouse:`xj.png`,moveRightMouse:`xjj.png`,moveUpMouse:`yj.png`,moveDownMouse:`yjj.png`}),media:Object.freeze({Pause:`Playpause.png`,Stop:`stop.png`,Pre:`previous.png`,Next:`next.png`,"Volume +":`volume+.png`,"Volume -":`volume-.png`,Mute:`Mute.png`,"Brightness +":`BrightnessU.png`,"Brightness -":`BrightnessD.png`,"E-mail":`email.png`,Calculator:`calc.png`,"Web Search":`web_search.png`,"Web Home":`web_home.png`,"Page Back":`web_back.png`,"Web Refresh":`web_refresh.png`,"Web Bookmark":`web_bookmarks.png`,Media:`player.png`,File:`profiles.png`}),system:Object.freeze({"Lock Win":{folder:`media`,fileName:`解锁锁.png`}}),firmware:Object.freeze({Profile1:{folder:`media`,fileName:`profiles.png`},Profile2:{folder:`media`,fileName:`profiles.png`},Profile3:{folder:`media`,fileName:`profiles.png`},Profile4:{folder:`media`,fileName:`profiles.png`}})});function A(e){return`./${e.map(e=>encodeURIComponent(String(e))).join(`/`)}`}function j(e){if(typeof document>`u`)return e;let t=Array.from(document.getElementsByTagName(`script`)).reverse().find(e=>{let t=e?.src||``;return h.some(e=>t.includes(e))});if(t?.src)return new URL(e,t.src).toString();let n=document.baseURI||window.location?.href||``;if(n)return new URL(e,n).toString();let r=document.currentScript?.src||``;return r?new URL(e,r).toString():e}function M(e){return`${e}${g}`}function N(e){let t=String(e||``).split(`?`)[0].toLowerCase();return v[t.includes(`.`)?t.split(`.`).pop():``]||`application/octet-stream`}async function P(){return b||(typeof crypto>`u`||!crypto?.subtle?(b=Promise.resolve(null),b):(b=(async()=>{let e=new TextEncoder().encode(_),t=await crypto.subtle.digest(`SHA-256`,e);return crypto.subtle.importKey(`raw`,t,{name:`AES-GCM`},!1,[`decrypt`])})(),b))}async function F(e){let t=j(M(e));if(!t)return``;if(y.has(t))return y.get(t);let n=(async()=>{let n=await P();if(!n||typeof fetch>`u`)return``;let r=await fetch(t);if(!r.ok)return``;let i=new Uint8Array(await r.arrayBuffer());if(i.length<=28)return``;let a=i.slice(0,12),o=i.slice(12,28),s=i.slice(28),c=new Uint8Array(s.length+o.length);c.set(s,0),c.set(o,s.length);let l=await crypto.subtle.decrypt({name:`AES-GCM`,iv:a},n,c),u=N(e);return URL.createObjectURL(new Blob([l],{type:u}))})().catch(()=>``);return y.set(t,n),n}async function I(e,t){if(!e||!t)return m;let n=`./assets/image/axis/${encodeURIComponent(String(e))}/${encodeURIComponent(String(t))}`,[r,i,a]=await Promise.all([F(`${n}/icon.png`),F(`${n}/z_b.png`),F(`${n}/z_y.png`)]);return{icon:r||a||i||``,z_b:i,z_y:a}}async function L(e,t){let n=String(e||``).trim().toLowerCase(),r=k[n]?.[String(t||``)];if(!r)return``;let i=typeof r==`string`?{folder:n,fileName:r}:r;return F(A([`assets`,`image`,`command_icon`,i.folder,i.fileName]))}async function R(e){return e?F(A([`assets`,`image`,`tools`,e])):``}async function z(e){let t=String(e||``);return await L(`media`,t)||await L(`mouse`,t)||await L(`system`,t)||await L(`firmware`,t)||``}async function B(e,t){let n=String(e||``).trim(),r=String(t||``).trim();if(r){let e=await z(r);if(e)return e}return R(O[n]||``)}var V=class{static methodTypes={getLightingBase:`万花筒灯效`,setLightingBase:`万花筒灯效`,getKeyboardBacklightEffectList:`万花筒灯效`,getLightingLogoBase:`万花筒灯效`,setLightingLogoBase:`万花筒灯效`,getAmbientLightEffectList:`万花筒灯效`,getKeyboardBacklightCustom:`万花筒灯效`,setKeyboardBacklightCustom:`万花筒灯效`,getLightingLogoCustom:`万花筒灯效`,setLightingLogoCustom:`万花筒灯效`,getDevices:`全局功能`,init:`全局功能`,getDevicesInfo:`全局功能`,getConfig:`全局功能`,setConfig:`全局功能`,getRateOfReturnList:`全局功能`,getRateOfReturn:`全局功能`,setRateOfReturn:`全局功能`,getLightingSleepTime:`全局功能`,setLightingSleepTime:`全局功能`,closeDevice:`全局功能`,reconnection:`全局功能`,on:`全局功能`,off:`全局功能`,appToBoot:`全局功能`,bootToApp:`全局功能`,upgrade:`全局功能`,GFSRestore:`全局功能`,getSystemType:`全局功能`,setSystemType:`全局功能`,getKeyCustomLayer:`按键功能`,getStandard104KeyLayout:`按键功能`,getShortcutFunctionList:`按键功能`,setKeyConfig:`按键功能`,getPerformance:`轴体行程功能`,setPerformance:`轴体行程功能`,getADCSample:`轴体行程功能`,calibrationStart:`轴体行程功能`,calibrationStop:`轴体行程功能`,getCalibrationStatus:`轴体行程功能`,getAxisDetails:`轴体相关功能`,getFineTuneAxisList:`轴体相关功能`,setKeyCustomAxis:`轴体相关功能`,getAdvancedKeyLayout:`高级按键功能`,delAdvancedKey:`高级按键功能`,setAdvancedKeyDKS:`高级按键功能`,setAdvancedKeyMPT:`高级按键功能`,setAdvancedKeyMT:`高级按键功能`,setAdvancedKeyTGL:`高级按键功能`,setAdvancedKeyEND:`高级按键功能`,setAdvancedKeySOCD:`高级按键功能`};constructor(e={}){this.devices=[],this.currentDevice=null,this.eventListeners={},this.deviceType=`keyboard`,this.calibrationState=0,this.calibrationStatusData=[0,0,0,0,0,0,0,0],this.keyboardBacklightRealtimeHandler=null,this.keyboardBacklightRealtimePacketCount=0,this.keyboardBacklightStreamingUntil=0,this.lightingLogoRealtimeHandler=null,this.lightingLogoRealtimePacketCount=0,this.lightingLogoStreamingUntil=0,this.configs=e.configs||[{vendorId:7338,productId:2054,usagePage:65440,usage:1}],this.usage=e.usage||1,this.usagePage=e.usagePage||65440,this.versionManager=d,this.logger=f,this.performanceMonitor=p,this.config={autoReconnect:e.autoReconnect||!1,reconnectInterval:e.reconnectInterval||5e3,timeout:e.timeout||1e4,logLevel:e.logLevel||`INFO`,...e},this.logger.setLevel(this.config.logLevel),this.logger.info(`ServiceKeyboard initialized`,{config:this.config,configs:this.configs,usage:this.usage,usagePage:this.usagePage})}async _sendHIDCommand(e,t,n,r=`Timeout waiting for report`,i=2e3){await this.currentDevice.sendReport(t,e);let a=await new Promise((e,n)=>{let a=n=>{n.reportId===t&&(this.currentDevice.removeEventListener(`inputreport`,a),e(n))};this.currentDevice.addEventListener(`inputreport`,a),setTimeout(()=>{this.currentDevice.removeEventListener(`inputreport`,a),n(Error(r))},i)}),o=new Uint8Array(a.data.buffer);return n?n(o):o}_success(e={}){return{code:0,...e}}_emit(e,t){let n=this.eventListeners[e]||[];for(let r of n)try{r(t)}catch(t){this.logger.error(`Event listener failed: ${e}`,t)}}_markKeyboardBacklightStreamingWindow(e=C+1500){this.keyboardBacklightRealtimePacketCount=0,this.keyboardBacklightStreamingUntil=Date.now()+e}_markLightingLogoStreamingWindow(e=w+1500){this.lightingLogoRealtimePacketCount=0,this.lightingLogoStreamingUntil=Date.now()+e}_disableKeyboardBacklightRealtimeListener(){this.currentDevice&&this.keyboardBacklightRealtimeHandler&&this.currentDevice.removeEventListener(`inputreport`,this.keyboardBacklightRealtimeHandler),this.keyboardBacklightRealtimeHandler=null,this.keyboardBacklightRealtimePacketCount=0,this.keyboardBacklightStreamingUntil=0}_disableLightingLogoRealtimeListener(){this.currentDevice&&this.lightingLogoRealtimeHandler&&this.currentDevice.removeEventListener(`inputreport`,this.lightingLogoRealtimeHandler),this.lightingLogoRealtimeHandler=null,this.lightingLogoRealtimePacketCount=0,this.lightingLogoStreamingUntil=0}_enableKeyboardBacklightRealtimeListener(){!this.currentDevice||this.keyboardBacklightRealtimeHandler||(this.keyboardBacklightRealtimeHandler=e=>{if(e.reportId!==0||Date.now()>this.keyboardBacklightStreamingUntil)return;let t=this._getKeyboardBacklightCustomExpectedHids();if(!t.length||!this._readKeyboardBacklightCustomPacket(new Uint8Array(e.data.buffer),new Set(t)).length)return;this.keyboardBacklightRealtimePacketCount+=1;let n=this._buildKeyboardBacklightCustomReadResult();this._emit(`keyboardBacklightCustomReport`,{...this._success({data:n,readKeys:n.length,packetCount:this.keyboardBacklightRealtimePacketCount}),completed:n.length>=t.length})},this.currentDevice.addEventListener(`inputreport`,this.keyboardBacklightRealtimeHandler))}_enableLightingLogoRealtimeListener(){!this.currentDevice||this.lightingLogoRealtimeHandler||(this.lightingLogoRealtimeHandler=e=>{if(e.reportId!==0||Date.now()>this.lightingLogoStreamingUntil)return;let t=this._readLightingLogoCustomPacket(new Uint8Array(e.data.buffer));t&&(this.lightingLogoRealtimePacketCount+=1,this._emit(`lightingLogoCustomReport`,{...this._success({data:t,packetCount:this.lightingLogoRealtimePacketCount}),completed:!0}))},this.currentDevice.addEventListener(`inputreport`,this.lightingLogoRealtimeHandler))}_toHexByte(e,t=!0){let n=Number(e).toString(16).padStart(2,`0`);return t?`0x${n}`:n}_normalizeHexByteValue(e,t){if(typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=255)return e.toString(16).padStart(2,`0`);let n=String(e??``).trim().toLowerCase(),r=n.startsWith(`0x`)?n.slice(2):n;if(/^[0-9a-f]{1,2}$/i.test(r))return r.padStart(2,`0`);throw Error(`${t} 必须是 0x00 到 0xFF 之间的字节值`)}async _ensureKeyboardLayoutLoaded(){if(!r.MatrixList.KeyMap?.length){let e=await this.getDefaultKeyLayout();r.MatrixList.KeyMap=e.layout||[]}return r.MatrixList.KeyMap||[]}_buildKeyboardLayoutMetricCommands(e){let n=`0x${this._normalizeHexByteValue(e,`layoutHex`)}`,i=r.MatrixList.KeyMap||[],a=[],o=[`0xAA`,n,`0x00`,`0x00`];for(let e=0;e<i.length;e+=1)for(let t=0;t<i[e].length;t+=1)i[e][t].hid!==`00`&&(o[0]=i[e][t].hid,a.push(...o));let s=t.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,c=[],l=[],u=1;for(let e=0;e<a.length;e+=1){if(u===56||e===a.length-1){l.push(a[e]),l=r.getButtonLayoutCustomCompletion(l,n),l=s.concat(l),c.push(l),l=[],u=1;continue}l.push(a[e]),u+=1}return c}async _readKeyboardLayoutMetric(e,n,i){await this._ensureKeyboardLayoutLoaded();let a=Number.parseInt(this._normalizeHexByteValue(e,`layoutHex`),16),o=this._buildKeyboardLayoutMetricCommands(e);for(let e=0;e<o.length;e+=1){r.typeMatrixID=a,r.typeMatrixPageID=e+1;let n=new Uint8Array(o[e].map(e=>parseInt(e,16)));await this._sendHIDCommand(n,0,e=>(r.setMatrixLayoutData(e,t,r),!0),i,1500)}n(r)}_pickKeyboardWideNumericValue(e,t=0){let n=(r.MatrixList.KeyMap||[]).flat().map(t=>e(t)).filter(e=>typeof e==`number`&&Number.isFinite(e));if(!n.length)return t;let[i]=n;return n.every(e=>e===i),i}_getAxisConfigById(e){let t=Number(e);if(!Number.isFinite(t))return null;for(let[e,n]of Object.entries(a||{})){if(!Array.isArray(n))continue;let r=n.find(e=>Number(e?.id)===t);if(r)return{axis:t,brand:String(r?.brand||e),name:String(r?.name||r?.en||``),model:String(r?.model||``),axisRangeMax:Number(r?.maxHigth??0),axisCoefficient:Number(r?.RT??0)}}return null}_buildPerformanceLayout(e=r.MatrixList.KeyMap||[]){let t=[],n=(e||[]).map((e,n)=>(e||[]).map((e,r)=>{let i=String(e?.hid||`00`).trim().toLowerCase(),a=this._getAxisConfigById(e?.axis)||this._getAxisConfigById(e?.routeAxis),o=this._parseWorkingModeParts(e?.working_mode??0),s={row:n,col:r,keyName:String(e?.key_name||e?.name||``),name:String(e?.name||e?.key_name||``),hid:i?`0x${i}`:`0x00`,triggerPosition:Number(e?.journey_trigger??0),rtDown:Number(e?.journey_RT?.down??0),rtUp:Number(e?.journey_RT?.up??0),zoneSafeTop:Number(e?.safe_zone_top??0),zoneSafeBottom:Number(e?.safe_zone_bottom??0),workingMode:o.workingMode,journeyMode:o.journeyMode,journeyModeName:o.journeyModeName,rtSwitch:o.journeyMode===32?1:0,advancedMode:o.advancedMode,advancedModeName:o.advancedModeName,axis:Number(e?.axis??0),routeAxis:Number(e?.routeAxis??0),...a?.axisRangeMax===void 0?{}:{axisRangeMax:a.axisRangeMax},...a?.axisCoefficient===void 0?{}:{axisCoefficient:a.axisCoefficient}};return e?.hid&&e.hid!==`00`&&t.push(s),s}));return{total:t.length,details:t,layout:n}}_buildAxisDetailsLayout(e=r.MatrixList.KeyMap||[],t=[]){let i=Array.isArray(t)&&t.length?t:[{axis:1,brand:`Default`,name:`Standard Axis`,model:`STD-01`,axisRangeMax:4,axisCoefficient:1e3,supportsFineTune:!1}],a=[],o=(Array.isArray(e)&&e.some(e=>Array.isArray(e)&&e.some(e=>e?.hid&&String(e.hid).trim()!==`00`))?e:T.map(e=>e.map(e=>{let t=r.getBottonHidOJBFromHID(n,e.replace(/^0x/i,``))||{};return{hid:e.replace(/^0x/i,``).toLowerCase(),key_name:t?.Name||t?.Value||e,name:t?.Name||t?.Value||e,axis:i[0].axis,routeAxis:i[0].axis}}))).map((e,t)=>(e||[]).map((e,n)=>{let r=String(e?.hid||`00`).trim().toLowerCase().replace(/^0x/,``).padStart(2,`0`),o=i[a.length%i.length]||i[0],s=Number(e?.axis??e?.routeAxis??o.axis),c=this._getAxisConfigById(s)||this._getAxisConfigById(e?.routeAxis)||o,l={row:t,col:n,keyName:String(e?.key_name||e?.name||e?.value||``),name:String(c?.name||e?.name||e?.key_name||``),value:c?.model?`${c.brand} ${c.model}`:String(c?.brand||c?.name||`-`),hid:`0x${r}`,axis:Number(c?.axis??s??0),routeAxis:Number(e?.routeAxis??s??0),brand:String(c?.brand||``),model:String(c?.model||``),axisRangeMax:Number(c?.axisRangeMax??0),axisCoefficient:Number(c?.axisCoefficient??0),supportsFineTune:!!c?.supportsFineTune};return r!==`00`&&a.push(l),l}));return{total:a.length,list:a,details:a,layout:o}}_buildAdcSampleLayout(e=r.MatrixList.KeyMap||[]){let t=[],n=(e||[]).map((e,n)=>(e||[]).map((e,r)=>{let i=String(e?.hid||`00`).trim().toLowerCase(),a={row:n,col:r,keyName:String(e?.key_name||e?.name||``),name:String(e?.name||e?.key_name||``),hid:i?`0x${i}`:`0x00`,journey:Number(e?.journey??0)/1e3,adc:Number(e?.adc_data??0),keyStatus:Number(e?.key_status??0),pressed:Number(e?.key_status??0)>0};return e?.hid&&e.hid!==`00`&&t.push(a),a}));return{total:t.length,details:t,layout:n}}async _readRealtimeMatrixRequest(e,n,i,a=`Timeout waiting for realtime matrix report`){let o=new Uint8Array(e.map(e=>parseInt(e,16))),s=r.typeMatrixID,c=r.typeMatrixPageID,l=r.inPage;return new Promise((e,u)=>{let d=0,f=!1,p=null,m=null,h=()=>{p&&=(clearTimeout(p),null),m&&=(clearTimeout(m),null),this.currentDevice.removeEventListener(`inputreport`,y),r.typeMatrixID=s,r.typeMatrixPageID=c,r.inPage=l},g=()=>{f||(f=!0,h(),e(d))},_=e=>{f||(f=!0,h(),u(e))},v=()=>{p&&clearTimeout(p),p=setTimeout(()=>g(),25)},y=e=>{if(e.reportId===0)try{r.typeMatrixID=n,r.typeMatrixPageID=i;let a=new Uint8Array(e.data.buffer);d===0?r.setMatrixJourneyHeadData(a,t):r.setMatrixJourneyNOHeadData(a,t),d+=1,v()}catch(e){_(e)}};m=setTimeout(()=>{_(Error(a))},400),this.currentDevice.addEventListener(`inputreport`,y),r.typeMatrixID=n,r.typeMatrixPageID=i,r.inPage=0,this.currentDevice.sendReport(0,o).catch(e=>{_(e)})})}_normalizeKeyboardBacklightCustomData(e){if(!Array.isArray(e))throw Error(`data 必须是自定义灯光数据数组`);return e.map((e,t)=>{if(!Array.isArray(e)||e.length<4)throw Error(`data[${t}] 必须是长度为 4 的数组:[keyHid, r, g, b]`);return[this._normalizeHexByteValue(e[0],`data[${t}][0]`),this._normalizeHexByteValue(e[1],`data[${t}][1]`),this._normalizeHexByteValue(e[2],`data[${t}][2]`),this._normalizeHexByteValue(e[3],`data[${t}][3]`)]})}_normalizeLightingLogoCustomData(e){let t=Array.isArray(e)&&e.length===1&&Array.isArray(e[0])?e[0]:e;if(!Array.isArray(t)||t.length<3)throw Error(`data 必须是长度为 3 的数组:[r, g, b]`);return[this._normalizeHexByteValue(t[0],`data[0]`),this._normalizeHexByteValue(t[1],`data[1]`),this._normalizeHexByteValue(t[2],`data[2]`)]}_buildLightingLogoCustomReadCommand(){let e=[...t.SET_CUSTOM_LOGO_CMD];return e[4]=`0x02`,new Uint8Array(e.map(e=>parseInt(e,16)))}_buildKeyboardBacklightCustomReadCommand(){let e=[...t.SET_DEVICE_PRGB_CMD];return e[4]=`0x02`,new Uint8Array(e.map(e=>parseInt(e,16)))}_getKeyboardBacklightCustomExpectedHids(){let e=[];for(let t of r.MatrixList.KeyMap||[])for(let n of t){let t=String(n?.hid??``).trim().toLowerCase();t&&t!==`00`&&e.push(t.padStart(2,`0`))}return e}_readKeyboardBacklightCustomPacket(e,t){let n=r.toHexStringArr(e).slice(5,61),i=[];for(let e=0;e+3<n.length;e+=4){let r=String(n[e]??``).trim().toLowerCase();t.has(r)&&i.push(r)}return i.length?(r.setARGBKey(e,r),i):[]}_readLightingLogoCustomPacket(e){let n=r.toHexStringArr(e),i=String(t.SET_CUSTOM_LOGO_CMD[1]).slice(2).toLowerCase(),a=String(t.SET_CUSTOM_LOGO_CMD[2]).slice(2).toLowerCase();if(n.length<=45||n[1]!==i||n[2]!==a)return null;let o=String(n[9]??``).trim().toLowerCase(),s=String(n[10]??``).trim().toLowerCase(),c=String(n[11]??``).trim().toLowerCase();return[c,s,o].every(e=>/^[0-9a-f]{2}$/i.test(e))?(r.setGlobalLigthLogoData(e,r),[c,s,o]):null}_buildKeyboardBacklightCustomReadResult(e){let t=[];for(let n of r.MatrixList.KeyMap||[])for(let r of n){let n=String(r?.hid??``).trim().toLowerCase().padStart(2,`0`);if(n===`00`||e&&!e.has(n))continue;let i=String(r?.RGB??``).trim();if(/^#[0-9a-f]{6}$/i.test(i)){t.push([n,i.slice(1,3).toLowerCase(),i.slice(3,5).toLowerCase(),i.slice(5,7).toLowerCase()]);continue}let a=String(r?.ARGB??``).split(`,`).map(e=>Number(e.trim())).filter(e=>Number.isFinite(e));a.length>=3&&t.push([n,this._toHexByte(a[0],!1),this._toHexByte(a[1],!1),this._toHexByte(a[2],!1)])}return t}async _receiveKeyboardBacklightCustomData(e,t=2500,n=160){let r=new Set(e);return new Promise((e,i)=>{let a=0,o=!1,s=null,c=null,l=new Set,u=()=>{s&&clearTimeout(s),c&&clearTimeout(c),this.currentDevice.removeEventListener(`inputreport`,m)},d=()=>{o||(o=!0,u(),e({data:this._buildKeyboardBacklightCustomReadResult(l),readKeys:l.size,packetCount:a}))},f=e=>{o||(o=!0,u(),i(e))},p=()=>{s&&clearTimeout(s),s=setTimeout(()=>d(),n)},m=e=>{if(e.reportId!==0)return;let t=new Uint8Array(e.data.buffer),n=this._readKeyboardBacklightCustomPacket(t,r);if(n.length){a+=1;for(let e of n)l.add(e);if(l.size>=r.size){d();return}p()}};this.currentDevice.addEventListener(`inputreport`,m),c=setTimeout(()=>{if(a>0){d();return}f(Error(`Timeout waiting for custom keyboard backlight report`))},t)})}async _receiveLightingLogoCustomData(e=2500,t=160){return new Promise((n,r)=>{let i=0,a=!1,o=null,s=null,c=null,l=()=>{o&&clearTimeout(o),s&&clearTimeout(s),this.currentDevice.removeEventListener(`inputreport`,p)},u=()=>{a||(a=!0,l(),n({data:c,packetCount:i}))},d=e=>{a||(a=!0,l(),r(e))},f=()=>{o&&clearTimeout(o),o=setTimeout(()=>u(),t)},p=e=>{if(e.reportId!==0)return;let t=this._readLightingLogoCustomPacket(new Uint8Array(e.data.buffer));t&&(i+=1,c=t,f())};this.currentDevice.addEventListener(`inputreport`,p),s=setTimeout(()=>{if(i>0&&c){u();return}d(Error(`Timeout waiting for custom logo lighting report`))},e)})}async _getKeyboardBacklightCustomModeCommand(){let e=null;try{e=await this.getLightingBase()}catch(e){this.logger.warn(`Failed to read current keyboard backlight base before switching to doodle mode`,e)}let n=[...t.SET_CUSTOM_BUTTON_MODE_CMD],i=r.sleep,a=typeof i==`string`?parseInt(i,16):Number(i),o=Number.isFinite(a)?a:parseInt(n[45],16);return n[41]=`0x01`,n[42]=`0x${(e?.luminance??3).toString(16).padStart(2,`0`)}`,n[43]=`0x${x.toString(16).padStart(2,`0`)}`,n[44]=`0x${(e?.speed??3).toString(16).padStart(2,`0`)}`,n[45]=`0x${o.toString(16).padStart(2,`0`)}`,r.modeLigth=x.toString(16).padStart(2,`0`),r.modeChildLigth=`01`,n}async _getLightingLogoCustomCommand(e){let n=null;try{n=await this.getLightingLogoBase()}catch(e){this.logger.warn(`Failed to read current logo lighting base before switching to doodle mode`,e)}let i=[...t.SET_CUSTOM_LOGO_CMD],a=r.modeChildLigthLogo,o=typeof a==`string`?parseInt(a,16):Number(a),s=Number.isFinite(o)&&o>=0?o:1;return i[4]=`0x01`,i[9]=`0x${e[2]}`,i[10]=`0x${e[1]}`,i[11]=`0x${e[0]}`,i[41]=`0x${s.toString(16).padStart(2,`0`)}`,i[42]=`0x${(n?.luminance??3).toString(16).padStart(2,`0`)}`,i[43]=`0x${S.toString(16).padStart(2,`0`)}`,i[44]=`0x${(n?.speed??3).toString(16).padStart(2,`0`)}`,i[45]=`0x${S.toString(16).padStart(2,`0`)}`,r.modeLigthLogo=S.toString(16).padStart(2,`0`),r.modeChildLigthLogo=s.toString(16).padStart(2,`0`),i}_buildKeyboardBacklightCustomPackets(e){let n=new Map;for(let t of e){let e=`${t[1]}${t[2]}${t[3]}`;n.has(e)||n.set(e,[]),n.get(e).push(t)}let i=[];for(let[e,a]of n.entries()){let n=[e.slice(0,2),e.slice(2,4),e.slice(4,6)],o=[];for(let e of a)o.push(e[0],...n);let s=[],c=1;for(let e=0;e<o.length;e++){if(c===56||e===o.length-1){s.push(o[e]),s=[...t.SET_CUSTOM_BUTTON_RGB_HEAD_CMD,...s];let n=s.length===61?s[s.length-1]:0;s[3]=r.getCRC(t.SET_CUSTOM_BUTTON_RGB_HEAD_CMD[1],t.SET_CUSTOM_BUTTON_RGB_HEAD_CMD[2],n).toString(16),i.push(s),s=[],c=1;continue}s.push(o[e]),c++}}return i}async _sendHIDReports(e,t=0){for(let n of e){let e=n instanceof Uint8Array?n:new Uint8Array(n.map(e=>parseInt(e,16)));await this.currentDevice.sendReport(t,e)}}_getLightingBaseModeOptions(){return[{value:1,label:`静态模式`},{value:2,label:`呼吸模式`},{value:3,label:`光谱循环`},{value:4,label:`正弦光波`},{value:5,label:`指尖涟漪1`},{value:6,label:`指尖涟漪2`},{value:7,label:`一触即发1`},{value:8,label:`一触即发2`},{value:9,label:`踏雪无痕`},{value:10,label:`暗流涌动`},{value:11,label:`浮光掠影`},{value:12,label:`流光溢彩`},{value:13,label:`繁星点点`},{value:14,label:`变换呼吸`},{value:15,label:`斜风细雨`},{value:16,label:`川流不息`},{value:17,label:`花开富贵`},{value:18,label:`跑马游龙`},{value:19,label:`漫天飞雪`},{value:20,label:`百花齐放`},{value:21,label:`峰回路转`},{value:22,label:`贪吃小蛇`},{value:23,label:`旋转轮盘`},{value:28,label:`涂鸦模式`}]}_getLightingLogoBaseModeOptions(){return[{value:0,label:`涂鸦模式`,alias:`L0`},{value:1,label:`彩虹流动`,alias:`L1`},{value:2,label:`频谱变化`,alias:`L2`},{value:3,label:`星光点点`,alias:`L3`},{value:4,label:`七彩扫描`,alias:`L4`},{value:5,label:`静态彩虹`,alias:`L5`},{value:6,label:`彩虹呼吸`,alias:`L6`},{value:7,label:`七彩变换`,alias:`L7`},{value:8,label:`彩虹巡视`,alias:`L8`},{value:9,label:`双虹争艳`,alias:`L9`}]}_getLightingLogoSetModeOptions(){return this._getLightingLogoBaseModeOptions()}_getLightingModeOptions(e=!1,t=!1){return e?t?this._getLightingLogoSetModeOptions():this._getLightingLogoBaseModeOptions():this._getLightingBaseModeOptions()}_getLightingBaseSubModeMap(){let e=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,28],t=[[`炫彩模式一`,`炫彩模式二`,`炫彩模式三`,`炫彩模式四`,`炫彩模式五`,`炫彩模式六`,`炫彩模式七`,`炫彩模式八`,`炫彩模式九`,`单色模式`],[`炫彩模式一`,`炫彩模式二`,`炫彩模式三`,`炫彩模式四`,`炫彩模式五`,`炫彩模式六`,`炫彩模式七`,`炫彩模式八`,`炫彩模式九`,`单色模式`],[`模式一`,`模式二`],[`从左至右`,`由内而外`,`从右至左`],[`炫彩背景光一`,`炫彩背景光二`,`炫彩背景光三`,`炫彩背景光四`,`红色背景光`,`橙色背景光`,`黄色背景光`,`绿色背景光`,`青色背景光`,`蓝色背景光`,`紫色背景光`,`粉色背景光`,`白色背景光`],[`背景光关闭`,`背景光打开`],[`炫彩背景光一`,`炫彩背景光二`,`炫彩背景光三`,`炫彩背景光四`,`红色背景光`,`橙色背景光`,`黄色背景光`,`绿色背景光`,`青色背景光`,`蓝色背景光`,`紫色背景光`,`粉色背景光`,`白色背景光`],[`背景光关闭`,`背景光打开`],[`持续模式一`,`持续模式二`,`触发模式三`,`触发模式四`],[`扩散模式一`,`汇聚模式一`,`扩散模式二`,`汇聚模式二`],[`自上而下一`,`自下而下一`,`自上而下二`,`自下而下二`],[`从左至右一`,`从右至左二`,`从左至右一`,`从右至左二`],[`背景光关闭`,`背景光打开`],[`模式一`,`模式二`],[`背景光关闭`,`背景光打开`],[`背景光关闭`,`背景光打开`],[`背景光关闭`,`背景光打开`],[`背景光关闭`,`背景光打开`],[`背景光关闭`,`背景光打开`],[`模式一`,`模式二`],[`顺时针模式一`,`逆时针模式一`,`顺时针模式二`,`逆时针模式二`],[`背景光关闭`,`背景光打开`],[`顺时针模式一`,`逆时针模式一`,`顺时针模式二`,`逆时针模式二`],[`模式一`,`模式二`]];return Object.fromEntries(e.map((e,n)=>[e,t[n]||[]]))}_getLightingLogoBaseSubModeMap(){return{}}_getLightingSubModeMap(e=!1){return e?this._getLightingLogoBaseSubModeMap():this._getLightingBaseSubModeMap()}_getLightingEffectList(e=!1){let t=this._getLightingModeOptions(e);if(e)return t.map(e=>({mode:e.value,label:e.label,...e.alias?{alias:e.alias}:{}}));let n=this._getLightingBaseSubModeMap();return t.map(e=>({mode:e.value,label:e.label,childModes:(n[e.value]||[]).map((e,t)=>({value:t+1,label:e}))}))}_getLightingBaseModeLabel(e,t=!1){return this._getLightingModeOptions(t).find(t=>t.value===e)?.label||`模式${e}`}_getLightingBaseSubModeLabel(e,t,n=!1){return(this._getLightingSubModeMap(n)[e]||[])[t-1]||`子模式${t}`}_parseLightingBaseResponse(e,t=!1){t?r.setGlobalLigthLogoData(e,r):r.setGlobalLigthData(e,r);let n=t?`modeLigthLogo`:`modeLigth`,i=t?`brightnessLigthLogo`:`brightnessLigth`,a=t?`speedLigthLogo`:`speedLigth`,o=t?`sleepLogo`:`sleep`,s={mode:parseInt(r[n],16),luminance:parseInt(r[i],16),speed:parseInt(r[a],16),sleep:parseInt(r[o],16)};return t||(s.childMode=parseInt(r.modeChildLigth,16)),s}_normalizeLightingBaseLevel(e,t){let n=Number(e);if(Number.isInteger(n)&&n>=1&&n<=5)return n;throw Error(`${t} 仅支持 1 到 5 的档位值`)}_normalizeLightingBaseMode(e,t=!1){let n=Number(e),r=this._getLightingModeOptions(t,t).map(e=>e.value);if(Number.isInteger(n)&&r.includes(n))return n;throw Error(`不支持的${t?`Logo 灯光`:`背光`}模式,支持的值为:${r.join(`、`)}`)}_normalizeLightingBaseSubMode(e,t,n=!1){if(n)return;let r=Number(t),i=this._getLightingSubModeMap(n)[e]||[];if(i.length===0)return 1;if(Number.isInteger(r)&&r>=1&&r<=i.length)return r;throw Error(`当前模式 ${e} 的子模式仅支持 1 到 ${i.length}`)}_buildLightingBaseCommand(e,n=!1){let i=[...n?t.SET_CUSTOM_LOGO_MODE_CMD:t.SET_DEVICE_PRGB_CMD],a=n?r.sleepLogo:r.sleep,o=typeof a==`string`?parseInt(a,16):Number(a),s=Number.isFinite(o)?o:parseInt(i[45],16);return n||(i[41]=`0x${e.childMode.toString(16).padStart(2,`0`)}`),i[42]=`0x${e.luminance.toString(16).padStart(2,`0`)}`,i[43]=`0x${e.mode.toString(16).padStart(2,`0`)}`,i[44]=`0x${e.speed.toString(16).padStart(2,`0`)}`,i[45]=`0x${s.toString(16).padStart(2,`0`)}`,new Uint8Array(i.map(e=>parseInt(e,16)))}_normalizeLightingBasePayload(e={},t=!1){let n=this._normalizeLightingBaseMode(e.mode,t),r={mode:n,luminance:this._normalizeLightingBaseLevel(e.luminance,`luminance`),speed:this._normalizeLightingBaseLevel(e.speed,`speed`)};return t||(r.childMode=this._normalizeLightingBaseSubMode(n,e.childMode,t)),r}_buildLightingBaseResponse(e,t=!1){let n=Number(e.mode??0),r=Number(e.luminance??0),i=Number(e.speed??0);if(t)return this._success({mode:n,modeLabel:this._getLightingBaseModeLabel(n,!0),luminance:r,speed:i});let a=Number(e.childMode??0);return this._success({mode:n,modeLabel:this._getLightingBaseModeLabel(n,t),childMode:a,childModeLabel:this._getLightingBaseSubModeLabel(n,a,t),luminance:r,speed:i})}async _getLightingBaseByTarget({command:e,isLogo:t=!1,timeoutMsg:n,errorMsg:r}){if(!this.currentDevice)throw Error(`No device initialized.`);let i=new Uint8Array(e.map(e=>parseInt(e,16)));try{let e=await this._sendHIDCommand(i,0,e=>this._parseLightingBaseResponse(e,t),n,5e3);return this._buildLightingBaseResponse(e,t)}catch(e){throw this.logger.error(r,e),e}}async _setLightingBaseByTarget(e,{isLogo:t=!1,timeoutMsg:n,errorMsg:r}){if(!this.currentDevice)throw Error(`No device initialized.`);let i=this._normalizeLightingBasePayload(e?.data,t),a=this._buildLightingBaseCommand(i,t);try{let e=await this._sendHIDCommand(a,0,e=>this._parseLightingBaseResponse(e,t),n,5e3);return this._buildLightingBaseResponse(e,t)}catch(e){throw this.logger.error(r,e),e}}async getLightingBase(){return this._getLightingBaseByTarget({command:t.SET_DEVICE_PRGB_CMD,timeoutMsg:`Timeout waiting for keyboard backlight report`,errorMsg:`Failed to get keyboard backlight base`})}async getKeyboardBacklightEffectList(){let e=this._getLightingEffectList(!1);return this._success({total:e.length,list:e})}async setLightingBase(e){return this._setLightingBaseByTarget(e,{timeoutMsg:`Timeout waiting for keyboard backlight set report`,errorMsg:`Failed to set keyboard backlight base`})}async getLightingLogoBase(){return this._getLightingBaseByTarget({command:t.SET_CUSTOM_LOGO_MODE_CMD,isLogo:!0,timeoutMsg:`Timeout waiting for logo lighting report`,errorMsg:`Failed to get logo lighting base`})}async getAmbientLightEffectList(){let e=this._getLightingEffectList(!0);return this._success({total:e.length,list:e})}async setLightingLogoBase(e){return this._setLightingBaseByTarget(e,{isLogo:!0,timeoutMsg:`Timeout waiting for logo lighting set report`,errorMsg:`Failed to set logo lighting base`})}async getKeyboardBacklightCustom(){if(!this.currentDevice)throw Error(`No device initialized.`);try{await this._ensureKeyboardLayoutLoaded();let e=this._getKeyboardBacklightCustomExpectedHids();if(!e.length)return this._success({data:[],readKeys:0,packetCount:0});this._enableKeyboardBacklightRealtimeListener(),this._markKeyboardBacklightStreamingWindow();let t=this._receiveKeyboardBacklightCustomData(e);await this.currentDevice.sendReport(0,this._buildKeyboardBacklightCustomReadCommand());let n=await t;return this._success(n)}catch(e){throw this.logger.error(`Failed to get custom keyboard backlight`,e),e}}async setKeyboardBacklightCustom(e){if(!this.currentDevice)throw Error(`No device initialized.`);let n=this._normalizeKeyboardBacklightCustomData(e?.data),r=this._buildKeyboardBacklightCustomPackets(n),i=await this._getKeyboardBacklightCustomModeCommand();try{return await this._sendHIDReports([i,...r,t.SET_CUSTOM_BUTTON_RGB_END_CMD]),this._success({data:n,writtenKeys:n.length,packetCount:r.length+3})}catch(e){throw this.logger.error(`Failed to set custom keyboard backlight`,e),e}}async getLightingLogoCustom(){if(!this.currentDevice)throw Error(`No device initialized.`);try{this._enableLightingLogoRealtimeListener(),this._markLightingLogoStreamingWindow();let e=this._receiveLightingLogoCustomData();await this.currentDevice.sendReport(0,this._buildLightingLogoCustomReadCommand());let t=await e;return this._success(t)}catch(e){throw this.logger.error(`Failed to get custom logo lighting`,e),e}}async setLightingLogoCustom(e){if(!this.currentDevice)throw Error(`No device initialized.`);let t=this._normalizeLightingLogoCustomData(e?.data),n=await this._getLightingLogoCustomCommand(t);try{return await this._sendHIDReports([n]),this._success({data:t,packetCount:1})}catch(e){throw this.logger.error(`Failed to set custom logo lighting`,e),e}}async getDefaultKeyLayout(){let e=new Uint8Array(t.READ_DEFKEY_MATRIX_CMD.ROW1_ROW2.map(e=>parseInt(e,16))),n=new Uint8Array(t.READ_DEFKEY_MATRIX_CMD.ROW3_ROW4.map(e=>parseInt(e,16))),i=new Uint8Array(t.READ_DEFKEY_MATRIX_CMD.ROW5_ROW6.map(e=>parseInt(e,16)));try{let t=await this._sendHIDCommand(e,0,e=>r.getMatrixKey(e),`Timeout waiting for key matrix row1/row2 report`),a=await this._sendHIDCommand(n,0,e=>r.getMatrixKey(e),`Timeout waiting for key matrix row3/row4 report`),o=await this._sendHIDCommand(i,0,e=>r.getMatrixKey(e),`Timeout waiting for key matrix row5/row6 report`),s=r.getFormatKeyMapMatrix(t,a,o);return r.MatrixList.KeyMap=s,this._success({layout:s})}catch(e){throw this.logger.error(`getDefaultKeyLayout`,e),e}}_buildKeyCustomLayerCommands(e){let n=`0x${e.toString(16).padStart(2,`0`)}`,i=r.MatrixList.KeyMap||[],a=[],o=[`0xAA`,n,`0x00`,`0x00`];for(let e=0;e<i.length;e++)for(let t=0;t<i[e].length;t++)i[e][t].hid!==`00`&&(o[0]=i[e][t].hid,a.push(...o));let s=t.READ_LAYOUT_KEY_CUSTOM_HEAD_CMD,c=[],l=[],u=1;for(let e=0;e<a.length;e++){if(u===56||e===a.length-1){l.push(a[e]),l=r.getButtonLayoutCustomCompletion(l,n),l=s.concat(l),c.push(l),l=[],u=1;continue}l.push(a[e]),u++}return c}_parseKeyCustomLayerList(e,a){let o=[];for(let s=0;s<a.length;s++){if(s%4!=0)continue;let c=a[s],l=parseInt(a[s+2],16),u=parseInt(a[s+3],16);if(u&=240,e===0&&l===parseInt(c,16)||e!==0&&u===0&&l===1||e!==0&&l===parseInt(c,16))continue;let d={hid:c,type:``,name:``,content:``,image:``,...e===0?{}:{fn_code:`0x${a[s+2]},0x${a[s+3]}`}};switch(u){case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.KEY,16):d.name=r.getBottonHidOJBFromHID(n,l)?.Name||``,d.type=d.name;break;case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA1,16):case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA2,16):case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MEDIA3,16):{let e=`0x${a[s+2].toString(16)},0x${a[s+3].toString(16)}`;d.name=r.getBottonHidOJBFromHIDMedia(i,e)?.name||``,d.type=d.name;break}case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.HOTKEY,16):{let e=`0x${a[s+2].toString(16)},0x${a[s+3].toString(16)}`,t=r.getBottonHidOJBFromHIDMedia(i,e);if(t)d.name=t.name,d.type=d.name;else{let t=e.split(`,`),i=r.getBottonHidOJBFromHID(n,t[0]);d.type=`${r.parseHotKeyCommand(parseInt(t[1],16))}${i?.Name||``}`}break}case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MOUSE,16):{let e=`0x${a[s+2].toString(16)},0x${a[s+3].toString(16)}`;d.name=r.getBottonHidOJBFromHIDMedia(i,e)?.name||``,d.type=d.name;break}case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.SYS,16):case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.SYS1,16):{let e=`0x${a[s+2].toString(16)},0x${a[s+3].toString(16)}`,t=r.getBottonHidOJBFromHIDMedia(i,e);d.name=t?.name||``,d.type=t?.name||`SYS`;break}case parseInt(t.RESPONSE_CODE.CUSTOM_BUTTON_COMMAND_TYPE_CMD.MACRO,16):d.type=`MACRO`;break;default:d.type=`FUNC`;break}d.image=B(d.type,d.name||d.type),o.push(d)}return o}async getKeyCustomLayer(e){if(!this.currentDevice)throw Error(`No device initialized.`);let t=Number(e);if(![0,1,2,3].includes(t))throw Error(`layer 仅支持 0x00(基本层)、0x01(FN1层)、0x02(FN2层) 或 0x03(FN3层)`);if(!r.MatrixList.KeyMap?.length){let e=await this.getDefaultKeyLayout();r.MatrixList.KeyMap=e.layout||[]}let n=this._buildKeyCustomLayerCommands(t),i=[];try{for(let e of n){let t=new Uint8Array(e.map(e=>parseInt(e,16))),n=await this._sendHIDCommand(t,0,e=>r.toHexStringArr(e).slice(5,61),`Timeout waiting for key custom layer report`);i.push(...n)}let e=this._parseKeyCustomLayerList(t,i),a=await Promise.all(e.map(async e=>({...e,image:await B(e?.type,e?.name||e?.type)})));return this._success({layer:t,list:a,layout:r.MatrixList.KeyMap})}catch(e){throw this.logger.error(`Failed to get key custom layer`,e),e}}async getStandard104KeyLayout(){let e=Array.isArray(n?.KEYMAP)?n.KEYMAP:[],t=new Map(e.map(e=>[String(e?.Hid||``).trim().toLowerCase(),e])),r=T.map((e,n)=>e.map((e,r)=>{let i=t.get(e.toLowerCase());return{row:n,col:r,hid:e,name:i?.Name||e,value:i?.Value||i?.Name||e,vkCode:i?.VKCode?Number(i.VKCode):void 0,scanCode:i?.ScanCode?Number(i.ScanCode):void 0}}));return this._success({total:r.flat().length,rows:r,list:r.flat()})}async getShortcutFunctionList(e){let t=String(e??``).trim().toLowerCase();if(!E.includes(t))throw Error(`type 仅支持 "system"、"mouse"、"media" 或 "firmware"`);let n=Array.isArray(i?.SYS)?i.SYS:[],r={mouse:Array.isArray(i?.MOUSE)?i.MOUSE:[],media:Array.isArray(i?.MEDIA)?i.MEDIA:[],system:n.filter(e=>!D.has(String(e?.name||``))),firmware:n.filter(e=>D.has(String(e?.name||``)))},a=await Promise.all(r[t].map(async(e,n)=>{let[r=`0x00`,i=`0x00`]=String(e?.code||``).split(`,`),a=String(e?.name||``);return{index:n,type:t,name:a,code:String(e?.code||``),id:Number.parseInt(r,16),commandType:Number.parseInt(i,16),image:await L(t,a)}}));return this._success({type:t,total:a.length,list:a})}async setKeyConfig(e,n,r){if(!this.currentDevice)throw Error(`No device initialized.`);t.SET_DEVICE_BUTTON_OP_CMD[5]=e,t.SET_DEVICE_BUTTON_OP_CMD[6]=n,t.SET_DEVICE_BUTTON_OP_CMD[7]=r.id,t.SET_DEVICE_BUTTON_OP_CMD[8]=r.type,console.log(`setKeyConfig data`,t.SET_DEVICE_BUTTON_OP_CMD);let i=new Uint8Array(t.SET_DEVICE_BUTTON_OP_CMD.map(e=>parseInt(e,16)));try{let e=await this._sendHIDCommand(i,0,e=>`setKeyConfig successful!`,`Timeout waiting for device info report`);return this._success({Info:e})}catch(e){throw this.logger.error(`Failed to get device info`,e),e}}async getPerformance(){if(!this.currentDevice)throw Error(`No device initialized.`);await this._ensureKeyboardLayoutLoaded();try{r.curDeviceHandle=this.currentDevice;let e=new Uint8Array(t.READ_GLOBAL_JOURNEY_CMD.map(e=>parseInt(e,16)));await this._sendHIDCommand(e,0,e=>(r.setGlobalJourneyData(e,r),r.journey_global),`Timeout waiting for global journey report`);let n=new Uint8Array(t.READ_DEVICE_RT_ALL_JOURNEY_CMD.map(e=>parseInt(e,16)));await this._sendHIDCommand(n,0,e=>{let t=r.toHexStringArr(e);return r.rt_all_journey=parseInt(t[6],16),r.rt_all_journey},`Timeout waiting for RT all journey report`),await this._readKeyboardLayoutMetric(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.JOURNEY4,r.formatLayout4.bind(r),`Timeout waiting for keyboard journey layout report`),await this._readKeyboardLayoutMetric(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.RTDOWN14,r.formatLayout14.bind(r),`Timeout waiting for keyboard RT down layout report`),await this._readKeyboardLayoutMetric(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.RTUP15,r.formatLayout15.bind(r),`Timeout waiting for keyboard RT up layout report`),await this._readKeyboardLayoutMetric(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.SAFE16,r.formatLayout16.bind(r),`Timeout waiting for keyboard safe zone top layout report`),await this._readKeyboardLayoutMetric(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.SAFE17,r.formatLayout17.bind(r),`Timeout waiting for keyboard safe zone bottom layout report`),await this._readAdvancedLayoutModes(),await this._readKeyboardLayoutMetric(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.AXIS19,r.formatLayout19.bind(r),`Timeout waiting for keyboard axis layout report`);let i=this._pickKeyboardWideNumericValue(e=>Number(e?.axis),0),a=this._getAxisConfigById(i)||this._getAxisConfigById(this._pickKeyboardWideNumericValue(e=>Number(e?.routeAxis),0)),o=this._buildPerformanceLayout(r.MatrixList.KeyMap);return this._success({mode:Number(r.rt_all_journey===1?0:1),normalPress:Number(r.journey_global||0),normalRelease:Number(r.journey_global||0),rtFirstTouch:this._pickKeyboardWideNumericValue(e=>Number(e?.journey_trigger),Number(r.journey_global||0)),rtPress:this._pickKeyboardWideNumericValue(e=>Number(e?.journey_RT?.down),0),rtRelease:this._pickKeyboardWideNumericValue(e=>Number(e?.journey_RT?.up),0),pressDeadStroke:this._pickKeyboardWideNumericValue(e=>Number(e?.safe_zone_top),0),releaseDeadStroke:this._pickKeyboardWideNumericValue(e=>Number(e?.safe_zone_bottom),0),axis:i,...a?.axisRangeMax===void 0?{}:{axisRangeMax:a.axisRangeMax},...a?.axisCoefficient===void 0?{}:{axisCoefficient:a.axisCoefficient},calibrate:this.calibrationState,total:o.total,details:o.details,layout:o.layout})}catch(e){throw this.logger.error(`Failed to get keyboard performance`,e),e}}async getAxisDetails(){let e=[{axis:24,brand:`TTC`,name:`Magnetic King`,model:`TTC-MK`,axisRangeMax:4,axisCoefficient:1e3,supportsFineTune:!0},{axis:54,brand:`Gateron`,name:`Jade Pro`,model:`GAT-JP`,axisRangeMax:4,axisCoefficient:1024,supportsFineTune:!0},{axis:69,brand:`Kailh`,name:`Box Magnetic`,model:`KAI-BM`,axisRangeMax:3.8,axisCoefficient:980,supportsFineTune:!0},{axis:1,brand:`Default`,name:`Standard Axis`,model:`STD-01`,axisRangeMax:4,axisCoefficient:1e3,supportsFineTune:!1}],t=await this._ensureKeyboardLayoutLoaded(),n=this._buildAxisDetailsLayout(t,e),r=new Map,i=async(e,t)=>{let n=`${String(e||``).trim()}::${String(t||``).trim()}`;return!n||n===`::`?m:(r.has(n)||r.set(n,I(e,t).catch(()=>m)),r.get(n))};return n.details=await Promise.all(n.details.map(async e=>({...e,images:await i(e?.brand,e?.model)}))),n.list=n.details,n.layout=await Promise.all(n.layout.map(async e=>Promise.all((e||[]).map(async e=>!e?.hid||String(e.hid).trim().toLowerCase()===`0x00`?e:n.details.find(t=>String(t?.hid||``).trim().toLowerCase()===String(e?.hid||``).trim().toLowerCase())||{...e,images:await i(e?.brand,e?.model)})))),this._success(n)}async getFineTuneAxisList(){let e=(await Promise.all(Object.entries(a).flatMap(([e,t])=>Array.isArray(t)?t.map(async t=>{let n=Number(t?.id);if(!Number.isFinite(n))return null;let r=String(t?.brand||e),i=String(t?.model||``);return{axis:n,brand:r,name:String(t?.name||t?.en||``),model:i,axisRangeMax:Number(t?.maxHigth??0),axisCoefficient:Number(t?.RT??0),images:await I(r,i)}}):[]))).filter(Boolean);return this._success({total:e.length,list:e})}async setKeyCustomAxis(e){let t=this._resolveAdvancedTargetByName(e||{}),n=Number(e?.axis??24),r=e?.axisRangeMax===void 0?void 0:Number(e.axisRangeMax),i=e?.axisCoefficient===void 0?void 0:Number(e.axisCoefficient);return t.keyItem&&(t.keyItem.axis=n,t.keyItem.routeAxis=n),this._success({keyName:t.keyName,hid:`0x${t.hid}`,axis:n,...r===void 0?{}:{axisRangeMax:r},...i===void 0?{}:{axisCoefficient:i}})}async setPerformance(e){if(!this.currentDevice)throw Error(`No device initialized.`);await this._readKeyboardLayoutMetric(`0x04`,r.formatLayout4.bind(r),`Timeout waiting for performance trigger layout report`),await this._readKeyboardLayoutMetric(`0x14`,r.formatLayout14.bind(r),`Timeout waiting for performance RT-down layout report`),await this._readKeyboardLayoutMetric(`0x15`,r.formatLayout15.bind(r),`Timeout waiting for performance RT-up layout report`),await this._readKeyboardLayoutMetric(`0x16`,r.formatLayout16.bind(r),`Timeout waiting for performance safe-zone-top layout report`),await this._readKeyboardLayoutMetric(`0x17`,r.formatLayout17.bind(r),`Timeout waiting for performance safe-zone-bottom layout report`),await this._readAdvancedLayoutModes();let n=this._resolveAdvancedTargetByName(e||{}),i=this._toWorkingModeByte(n.keyItem?.working_mode??0),a=this._getAdvancedModeNibble(i),o=this._getJourneyModeNibble(i),s=o===32?1:0,c=Number(n.keyItem?.journey_trigger??.5),l=Number(n.keyItem?.journey_RT?.down??.3),u=Number(n.keyItem?.journey_RT?.up??.3),d=Number(n.keyItem?.safe_zone_top??.2),f=Number(n.keyItem?.safe_zone_bottom??.2),p=e?.workingMode??e?.mode,m=p===void 0?i:this._toWorkingModeByte(p);m<=15&&(m=this._mergeWorkingMode(o,m));let h=e?.rtSwitch===void 0?(()=>{let e=this._getJourneyModeNibble(m);return e===32?1:e===16?0:s})():Number(e.rtSwitch)===1?1:0,g=p===void 0?a:this._getAdvancedModeNibble(m);m=this._mergeWorkingMode(h===1?32:16,g);let _=Number(e?.triggerPosition??c),v=Number(e?.triggerRtPosition??c),y=e?.triggerRtPosition!==void 0&&(h===1||e?.triggerPosition===void 0)?v:_,b=Number(e?.rtDown??l),x=Number(e?.rtUp??u),S=Number(e?.zoneSafeTop??d),C=Number(e?.zoneSafeBottom??f),w={getAttribute:e=>{switch(e){case`hid`:return n.hid;case`working_mode`:return String(this._getAdvancedModeNibble(m));case`rt_up`:return String(x);case`rt_down`:return String(b);case`name`:return n.keyName;default:return null}}},T=async(e,t)=>{for(let n=0;n<e.length;n+=1){let r=e[n],i=r instanceof Uint8Array?r:new Uint8Array(r.map(e=>parseInt(e,16)));await this._sendHIDCommand(i,0,null,`${t} (${n+1}/${e.length})`,1500)}};await this._sendHIDCommand(this._buildAdvancedDeleteCommand(n.hid,m),0,null,`Timeout waiting for performance working mode report`,1500),await T(r.getButtonJourneyCommand([w],y,t),`Timeout waiting for performance trigger-position report`),await T(r.getButtonRTSwitchCommand(h===1,[w],t),`Timeout waiting for performance RT configuration report`),await T(r.getButtonSafeZoneCommand([w],S,C,t),`Timeout waiting for performance safe-zone report`),n.keyItem&&(n.keyItem.working_mode=m,n.keyItem.journey_trigger=y,(!n.keyItem.journey_RT||typeof n.keyItem.journey_RT!=`object`)&&(n.keyItem.journey_RT={down:0,up:0}),n.keyItem.journey_RT.down=b,n.keyItem.journey_RT.up=x,n.keyItem.safe_zone_top=S,n.keyItem.safe_zone_bottom=C);let E=this._parseWorkingModeParts(m);return this._success({keyName:n.keyName,hid:`0x${n.hid}`,workingMode:m,journeyMode:E.journeyMode,journeyModeName:E.journeyModeName,advancedMode:E.advancedMode,advancedModeName:E.advancedModeName,rtSwitch:h,triggerPosition:_,triggerRtPosition:v,appliedTriggerPosition:y,rtDown:b,rtUp:x,zoneSafeTop:S,zoneSafeBottom:C})}async getADCSample(){if(!this.currentDevice)throw Error(`No device initialized.`);await this._ensureKeyboardLayoutLoaded(),await this._readRealtimeMatrixRequest(t.READ_RM6X21_HALL_16BIT_CMD.ROW1_ROW3,parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_HALL_CODE,16),1,`Timeout waiting for hall journey rows 1-3 report`),await this._readRealtimeMatrixRequest(t.READ_RM6X21_HALL_16BIT_CMD.ROW4_ROW6,parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_HALL_CODE,16),2,`Timeout waiting for hall journey rows 4-6 report`),await this._readRealtimeMatrixRequest(t.READ_RM6X21_ADC_16BIT_CMD.ROW1_ROW3,parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_ORIGINAL_CODE,16),1,`Timeout waiting for ADC rows 1-3 report`),await this._readRealtimeMatrixRequest(t.READ_RM6X21_ADC_16BIT_CMD.ROW4_ROW6,parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.ADC_ORIGINAL_CODE,16),2,`Timeout waiting for ADC rows 4-6 report`),await this._readRealtimeMatrixRequest(t.READ_RM6X21_KEYSTATUS_8BIT_CMD,parseInt(t.RESPONSE_CODE.MATRIX6X21_CODE.KEY_STATUS_CODE,16),1,`Timeout waiting for key status report`),r.formatJourney(),r.formatJourneyMapMatrix();let e=this._buildAdcSampleLayout(r.MatrixList.KeyMap||[]),n=[...r.MatrixList.MatrixADC||[]],i=[...r.MatrixList.MatrixJourney||[]].map(e=>Number(e)/1e3),a=[...r.MatrixList.MatrixKeyStatus||[]].map(e=>Number(e)),o=e.details.filter(e=>e.pressed).length;return this._success({adc:Number(r.getMaxValue(n)||0),data:n,journeyData:i,keyStatusData:a,maxJourney:Number(r.curMaxJourney||0),maxKeyStatus:Number(r.curMaxJourneyKeyStatus||0),pressedCount:o,total:e.total,details:e.details,layout:e.layout})}async calibrationStart(){if(!this.currentDevice)throw Error(`No device initialized.`);r.curDeviceHandle=this.currentDevice;try{return r.startCalibrate(t),this.calibrationState=1,this._success({status:0,message:`Calibration started`})}catch(e){throw this.logger.error(`Failed to start calibration`,e),e}}async calibrationStop(){if(!this.currentDevice)throw Error(`No device initialized.`);r.curDeviceHandle=this.currentDevice;try{return await r.stopCalibrate(t),this.calibrationState=0,this.calibrationStatusData=[0,0,0,0,0,0,0,0],this._success({status:0,message:`Calibration finished`})}catch(e){throw this.logger.error(`Failed to stop calibration`,e),e}}async getCalibrationStatus(){if(!this.currentDevice)throw Error(`No device initialized.`);return this._success({calibrate:this.calibrationState,data:[...this.calibrationStatusData]})}_getAdvancedReadCommandTemplate(e){switch(e){case`DKS`:return t.SET_DEVICE_FUNCTION_DKS_CMD;case`SOCD`:return t.SET_DEVICE_FUNCTION_SOCD_CMD;case`RS`:return t.SET_DEVICE_FUNCTION_RS_CMD;case`MPT`:return t.SET_DEVICE_FUNCTION_MPT_CMD;case`MT`:return t.SET_DEVICE_FUNCTION_MT_CMD;case`END`:return t.SET_DEVICE_FUNCTION_END_CMD;case`TGL`:return t.SET_DEVICE_FUNCTION_TGL_CMD;default:return null}}_cloneAdvancedReadCommand(e,t){let n=this._getAdvancedReadCommandTemplate(e);if(!n)return null;let r=[...n];return r[4]=`0x00`,r[5]=`0x${String(t).trim().toLowerCase().padStart(2,`0`)}`,new Uint8Array(r.map(e=>parseInt(e,16)))}_isAdvancedLayoutMode(e){return[`DKS`,`SOCD`,`MPT`,`MT`,`END`,`TGL`,`RS`,`MACRO`,`COMBO`].includes(e)}_getJourneyModeLabel(e){return{0:`全局触发`,16:`单键触发`,32:`RT功能`,48:`保留模式(0x30)`}[e]||`未知模式(0x${e.toString(16).padStart(2,`0`)})`}_getAdvancedModeLabel(e){return{0:`NORMAL`,1:`DKS`,2:`MPT`,3:`MT`,4:`TGL`,5:`END`,6:`MACRO`,7:`COMBO`,8:`SOCD`,9:`RS`}[e]||`UNKNOWN_0x${e.toString(16).padStart(2,`0`)}`}_parseWorkingModeParts(e){let t=this._toWorkingModeByte(e),n=this._getJourneyModeNibble(t),r=this._getAdvancedModeNibble(t),i=this._getAdvancedModeLabel(r);return{workingMode:t,journeyMode:n,journeyModeName:this._getJourneyModeLabel(n),advancedMode:r,advancedModeName:i}}_isAdvancedModeCode(e){return e!==0}async _decorateAdvancedKeyItemWithImage(e){if(!e||typeof e!=`object`)return e;let t=e?.custom;if(!t||typeof t!=`object`)return{...e};let n=String(t.type||e.advancedModeName||``).trim(),r=String(t.name||t.type||e.advancedModeName||``).trim();return{...e,custom:{...t,image:await B(n,r)}}}async _decorateAdvancedLayoutWithImages(e){return Promise.all((e||[]).map(async e=>Promise.all((e||[]).map(e=>this._decorateAdvancedKeyItemWithImage(e)))))}_collectAdvancedKeysFromLayout(e=r.MatrixList.KeyMap||[]){let t=[],n=new Set;for(let r of e)for(let e of r||[]){let r=this._parseWorkingModeParts(e?.working_mode??0),i=r.advancedModeName;if(!this._isAdvancedModeCode(r.advancedMode))continue;let a={...e,working_mode:r.workingMode,journeyMode:r.journeyMode,journeyModeName:r.journeyModeName,advancedMode:r.advancedMode,advancedModeName:r.advancedModeName};if(i===`SOCD`){let r=String(e?.key_name||``).trim(),i=String(e?.custom?.content||``).trim();if(!i||!r||n.has(r))continue;let o=i.split(`|`).filter(Boolean);t.push(a),n.add(r);for(let e of o)n.add(e);continue}t.push(a)}return t}async _readAdvancedKeyDetails(){let e=r.MatrixList.KeyMap||[];for(let i of e)for(let e of i||[]){let i=this._parseWorkingModeParts(e?.working_mode??0).advancedModeName;if(!this._isAdvancedLayoutMode(i))continue;let a=String(e?.hid||``).trim().toLowerCase();if(!a||a===`00`)continue;let o=this._cloneAdvancedReadCommand(i,a);o&&await this._sendHIDCommand(o,0,e=>(r.setAdvancedFuncData(e,t,r,n),!0),`Timeout waiting for ${i} advanced key detail report`,1500)}}async _readAdvancedLayoutModes(){if(!r.MatrixList.KeyMap?.length){let e=await this.getDefaultKeyLayout();r.MatrixList.KeyMap=e.layout||[]}r.typeMatrixID=parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_CODE.MODE,16);let e=r.getButtonLayout8CustomCommand(t);for(let n=0;n<e.length;n+=1){r.typeMatrixPageID=n+1;let i=new Uint8Array(e[n].map(e=>parseInt(e,16)));await this._sendHIDCommand(i,0,e=>(r.setMatrixLayoutData(e,t,r),!0),`Timeout waiting for advanced key mode layout report`,2e3)}r.formatLayout8(r)}async getAdvancedKeyLayout(){if(!this.currentDevice)throw Error(`No device initialized.`);try{await this._readAdvancedLayoutModes(),await this._readAdvancedKeyDetails();let e=await this._decorateAdvancedLayoutWithImages(r.MatrixList.KeyMap),t=this._collectAdvancedKeysFromLayout(e);return this._success({total:t.length,details:t,layout:e})}catch(e){throw this.logger.error(`Failed to get advanced key layout`,e),e}}_parseAdvancedDeleteMode(e){if(e==null||e===``)return null;let t=null;if(typeof e==`number`&&Number.isFinite(e))t=Number(e);else{let n=String(e).trim().toLowerCase();n.startsWith(`0x`)?t=parseInt(n.slice(2),16):/^[0-9]+$/.test(n)?t=parseInt(n,10):/^[0-9a-f]+$/i.test(n)&&(t=parseInt(n,16))}return Number.isFinite(t)?t&15:null}_toWorkingModeByte(e){let t=Number(e);return Number.isFinite(t)?t&255:0}_getJourneyModeNibble(e){return this._toWorkingModeByte(e)&240}_getAdvancedModeNibble(e){return this._toWorkingModeByte(e)&15}_mergeWorkingMode(e,t){return this._toWorkingModeByte(e)&240|this._toWorkingModeByte(t)&15}_getAdvancedModeCodeMap(){return{NONE:0,DKS:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.DKS,16),MPT:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.MPT,16),MT:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.MT,16),TGL:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.TGL,16),END:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.END,16),MACRO:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.MACRO,16),SOCD:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.SOCD,16),RS:parseInt(t.RESPONSE_CODE.MATRIX6X21_LAYOUT_MODE_CODE.RS,16)}}_getAdvancedModeCodeByName(e){return this._getAdvancedModeCodeMap()[String(e||``).trim().toUpperCase()]??null}_findKeyItemByHid(e){let t=String(e??``).trim().toLowerCase().padStart(2,`0`);if(!t||t===`00`)return null;for(let e of r.MatrixList.KeyMap||[])for(let n of e||[])if(String(n?.hid||``).trim().toLowerCase().padStart(2,`0`)===t)return n;return null}_resolveAdvancedDeleteMode(e,t){let n=this._parseAdvancedDeleteMode(e?.keyWorkJMode??e?.workingJMode??e?.working_mode);return n===null?Number(t?.working_mode??0)&15:n}_normalizeAdvancedKeyName(e){let t=String(e??``).trim();if(!t)throw Error(`keyName 不能为空,例如 A 或 B`);return t}_resolveAdvancedTargetByName(e){let t=this._normalizeAdvancedKeyName(e?.keyName??e?.name),i=r.getBottonHidOJBFromName(n,t);if(!i?.Hid)throw Error(`无法根据按键名称定位 HID:${t}`);let a=this._normalizeHexByteValue(i.Hid,`keyName`);return{keyName:t,hid:a,keyItem:this._findKeyItemByHid(a)}}_resolveAdvancedPairTargetByName(e){let t=e?.keyName2??e?.name2,i=this._normalizeAdvancedKeyName(t),a=r.getBottonHidOJBFromName(n,i);if(!a?.Hid)throw Error(`无法根据按键名称定位配对键 HID:${i}`);let o=this._normalizeHexByteValue(a.Hid,`keyName2`);return{keyName:i,hid:o,keyItem:this._findKeyItemByHid(o)}}_resolveAdvancedENDTaskTarget(e){let t=e?.task??``,i=this._normalizeAdvancedKeyName(String(t).split(`|`)[0]),a=r.getBottonHidOJBFromName(n,i);if(!a?.Hid)throw Error(`无法根据 END 任务按键名称定位 HID:${i}`);let o=this._normalizeHexByteValue(a.Hid,`task`);return{keyName:i,hid:o,keyItem:this._findKeyItemByHid(o)}}_resolveAdvancedTaskTarget(e,t=`task`){if(typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=255){let i=this._normalizeHexByteValue(e,t),a=r.getBottonHidOJBFromHID(n,parseInt(i,16)),o=this._findKeyItemByHid(i);return{keyName:a?.Value||a?.Name||`0x${i}`,hid:i,keyItem:o}}let i=String(e??``).trim();if(!i)throw Error(`${t} 不能为空`);if(/^0x[0-9a-f]{1,2}$/i.test(i)){let e=this._normalizeHexByteValue(i,t),a=r.getBottonHidOJBFromHID(n,parseInt(e,16)),o=this._findKeyItemByHid(e);return{keyName:a?.Value||a?.Name||`0x${e}`,hid:e,keyItem:o}}let a=r.getBottonHidOJBFromName(n,i)||r.getBottonHidOJBFromTask(n,i);if(!a?.Hid)throw Error(`无法根据 ${t} 定位 HID:${i}`);let o=this._normalizeHexByteValue(a.Hid,t),s=this._findKeyItemByHid(o);return{keyName:a.Value||a.Name||i,hid:o,keyItem:s}}_resolveAdvancedMTTasksAndDelay(e){let t=String(e?.task??``).trim(),n=null,r=null,i=``;if(t){let[e=``,a=``,o=``]=t.split(`|`);n=this._resolveAdvancedTaskTarget(e,`task[0]`),r=this._resolveAdvancedTaskTarget(a,`task[1]`),i=o}else throw Error(`MT 需要提供 task,格式如 'A|B|200'`);let a=e?.time??e?.delay??i,o=Number(a);if(!Number.isFinite(o)||o<0)throw Error(`MT time 必须是大于等于 0 的数字(单位 ms)`);return{primaryTask:n,secondaryTask:r,delayMs:o,delayProtocol:Math.max(0,Math.min(255,Math.floor(o/10)))}}_resolveAdvancedTaskTargets(e,t,n=`task`){if(!Array.isArray(e)||e.length<t)throw Error(`${n} 需要至少提供 ${t} 个任务键`);return e.slice(0,t).map((e,t)=>this._resolveAdvancedTaskTarget(e,`${n}[${t}]`))}_toHexByteString(e,t){return`0x${this._normalizeHexByteValue(e,t)}`}_toProtocolWordHexParts(e,t){let n=Number(e);if(!Number.isFinite(n)||n<0||n>65535)throw Error(`${t} 必须是 0 到 65535 之间的数字`);let[i,a]=r.getHighLowBits(Math.round(n));return[`0x${String(i).padStart(2,`0`)}`,`0x${String(a).padStart(2,`0`)}`]}_resolveAdvancedMPTTasksAndJourneys(e){if(typeof e?.task==`string`&&e.task.trim()){let t=e.task.split(`|`).map(e=>e.trim());if(t.length<6)throw Error(`MPT task 兼容写法应为 task1|journey1|task2|journey2|task3|journey3`);return{tasks:this._resolveAdvancedTaskTargets([t[0],t[2],t[4]],3,`task`),journeys:[Number(t[1]),Number(t[3]),Number(t[5])]}}throw Error(`MPT 需要提供 task,格式如 'A|0.5|B|1|C|1.5'`)}_getDKSJourneyByteFromTaskSegment(e){let t=String(e??``).split(`|`).map(e=>e.trim());if(t.length<8)throw Error(`DKS task 单段格式错误,应包含按键和至少 7 位触发粒度信息`);let n=[...t];n.shift();let r=0;return r+=parseInt(n[0]??0,10),r+=parseInt(n[1]??0,10)<<1,r+=parseInt(n[2]??0,10)<<2,r+=parseInt(n[3]??0,10)<<3,r+=parseInt(n[3]??0,10)<<4,r+=parseInt(n[4]??0,10)<<5,r+=parseInt(n[5]??0,10)<<6,r+=parseInt(n[6]??0,10)<<7,`0x${r.toString(16).padStart(2,`0`)}`}_resolveAdvancedDKSTasksAndConfig(e){if(typeof e?.task==`string`&&e.task.trim()){let t=e.task.split(`,`).map(e=>e.trim()).filter(Boolean);if(t.length<4)throw Error(`DKS task 需要 4 个按键段,格式如 A|1|1|1|1|1|1|1,B|1|0|1|0|1|0|1,C|1|1|0|0|1|1|0,D|1|1|1|1|1|1|1`);let n=t.slice(0,4);return{tasks:this._resolveAdvancedTaskTargets(n.map(e=>String(e).split(`|`)[0]),4,`task`),trps:n.map((e,t)=>this._getDKSJourneyByteFromTaskSegment(e,t)),dbs:[]}}throw Error(`DKS 需要提供 task,格式如 'A|1|1|1|1|1|1|1,B|1|0|1|0|1|0|1,C|1|1|0|0|1|1|0,D|1|1|1|1|1|1|1'`)}_resolveAdvancedTGLTaskAndDelay(e){let[t=``,i=``]=String(e?.task??``).trim().split(`|`),a=this._normalizeAdvancedKeyName(t),o=r.getBottonHidOJBFromName(n,a);if(!o?.Hid)throw Error(`无法根据 TGL 任务按键名称定位 HID:${a}`);let s=this._normalizeHexByteValue(o.Hid,`task`),c=e?.delay??i,l=Number(c);if(!Number.isFinite(l)||l<0)throw Error(`TGL delay 必须是大于等于 0 的数字(单位 ms)`);return{keyName:a,hid:s,delayMs:l,delayProtocol:Math.max(0,Math.min(255,Math.floor(l/10)))}}_normalizeSOCDModeValue(e){if(typeof e==`string`){let t=e.trim(),n={socdLaterInputPriority:0,socdAbsolutePriority:1,socdNeutral:2};if(Object.prototype.hasOwnProperty.call(n,t))return n[t]}return this._toWorkingModeByte(e)}_normalizeAdvancedDeleteHid(e){return this._normalizeHexByteValue(e,`hid`)}_resolveAdvancedDeleteSocdHids(e,t){let i=new Set,a=[];Array.isArray(e?.socdHids)&&a.push(...e.socdHids);let o=[e?.task,t?.custom?.content];for(let e of o)typeof e==`string`&&e.includes(`|`)&&a.push(...e.split(`|`));for(let e of a){let t=String(e??``).trim();if(!t)continue;if(/^(0x)?[0-9a-f]{1,2}$/i.test(t)){i.add(this._normalizeAdvancedDeleteHid(t));continue}let a=r.getBottonHidOJBFromName(n,t);a?.Hid&&i.add(this._normalizeAdvancedDeleteHid(a.Hid))}return[...i]}_buildAdvancedDeleteCommand(e,n,r=null,i=null,a=!0){let o=[...t.SET_DEVICE_BUTTON_DEL_CMD],s=`0x${this._toWorkingModeByte(n).toString(16).padStart(2,`0`)}`;if(a&&e&&(o[5]=`0x${e}`,o[7]=s),r){let e=i===null?this._toWorkingModeByte(n):this._toWorkingModeByte(i);o[9]=`0x${r}`,o[11]=`0x${e.toString(16).padStart(2,`0`)}`}return new Uint8Array(o.map(e=>parseInt(e,16)))}_applyAdvancedDeleteToLayout(e=[],t=null){if(!e.length)return;let n=new Set(e.map(e=>String(e).trim().toLowerCase().padStart(2,`0`)));for(let e of r.MatrixList.KeyMap||[])for(let r of e||[]){let e=String(r?.hid||``).trim().toLowerCase().padStart(2,`0`);n.has(e)&&(r.working_mode=t===null?this._getJourneyModeNibble(r.working_mode):this._toWorkingModeByte(t),(!r.custom||typeof r.custom!=`object`)&&(r.custom={}),r.custom.type=``,r.custom.name=``,r.custom.content=``)}}async delAdvancedKey(e){if(!this.currentDevice)throw Error(`No device initialized.`);await this._readAdvancedLayoutModes();let n=this._resolveAdvancedTargetByName(e),i=n.keyItem,a=n.hid,o=this._resolveAdvancedDeleteMode(e,i),s=this._toWorkingModeByte(i?.working_mode??0),c=this._mergeWorkingMode(s,o),l=this._mergeWorkingMode(s,0),u=String(e?.type||e?.modeName||r.getWorkingMode(Number(i?.working_mode??0),t)||``).toUpperCase();try{let t=this._buildAdvancedDeleteCommand(a,c);await this._sendHIDCommand(t,0,null,`Timeout waiting for advanced key delete report`,1500);let r=[a];if(u===`SOCD`){let t=this._resolveAdvancedDeleteSocdHids(e,i).find(e=>e!==a);if(!t)throw Error(`SOCD 删除需要提供配对按键信息(task/content/socdHids)`);let n=this._findKeyItemByHid(t),s=this._toWorkingModeByte(n?.working_mode??0),u=this._mergeWorkingMode(s,o),d=this._buildAdvancedDeleteCommand(a,c,t,u);await this._sendHIDCommand(d,0,null,`Timeout waiting for SOCD paired key delete report`,1500);let f=this._buildAdvancedDeleteCommand(a,l);await this._sendHIDCommand(f,0,null,`Timeout waiting for SOCD primary key mode sync report`,1500);let p=this._buildAdvancedDeleteCommand(t,l);await this._sendHIDCommand(p,0,null,`Timeout waiting for SOCD secondary key mode sync report`,1500),r.push(t)}this._applyAdvancedDeleteToLayout(r,u===`SOCD`?l:null),await this._readAdvancedLayoutModes();let s=r.map(e=>{let t=this._findKeyItemByHid(e),n=this._toWorkingModeByte(t?.working_mode??0);return{hid:e,workingMode:n,journeyMode:this._getJourneyModeNibble(n),advancedMode:this._getAdvancedModeNibble(n)}}),d=s.every(e=>e.advancedMode===0),f=u===`SOCD`?s.every(e=>e.workingMode===l):!0;return this._success({keyName:n.keyName,hid:`0x${a}`,mode:0,previousAdvancedMode:o,workingMode:l,journeyMode:this._getJourneyModeNibble(l),deletedHids:r,unifiedWorkingMode:u===`SOCD`?l:void 0,verify:{modeSyncOk:d,unifiedModeOk:f,keys:s},modeName:u||`NONE`,data:{mode:0}})}catch(e){throw this.logger.error(`Failed to delete advanced key`,e),e}}async _prepareAdvancedModeMutation(e,t){if(!this.currentDevice)throw Error(`No device initialized.`);await this._readAdvancedLayoutModes();let n=this._resolveAdvancedTargetByName(e),r=this._toWorkingModeByte(n.keyItem?.working_mode??0),i=this._getAdvancedModeCodeByName(t);if(i===null)throw Error(`不支持的高级键模式:${t}`);let a=this._mergeWorkingMode(r,i);return n.keyItem&&(n.keyItem.working_mode=a),{target:n,modeCode:i,nextWorkingMode:a,journeyMode:this._getJourneyModeNibble(a)}}async setAdvancedKeyDKS(e){let n=await this._prepareAdvancedModeMutation(e,`DKS`),r=n.target,i=this._resolveAdvancedDKSTasksAndConfig(e),a=[...t.SET_DEVICE_FUNCTION_DKS_CMD];return a[4]=`0x01`,a[5]=`0x${r.hid}`,a[6]=`0x${i.tasks[0].hid}`,a[8]=`0x${i.tasks[1].hid}`,a[10]=`0x${i.tasks[2].hid}`,a[12]=`0x${i.tasks[3].hid}`,a[14]=i.trps[0]??`0x00`,a[15]=i.trps[1]??`0x00`,a[16]=i.trps[2]??`0x00`,a[17]=i.trps[3]??`0x00`,a[18]=`0x00`,a[19]=`0x00`,await this._sendHIDCommand(new Uint8Array(a.map(e=>parseInt(e,16))),0,null,`Timeout waiting for DKS set report`,1500),r.keyItem&&((!r.keyItem.custom||typeof r.keyItem.custom!=`object`)&&(r.keyItem.custom={}),r.keyItem.custom.type=`DKS`,r.keyItem.custom.name=`DKS`,r.keyItem.custom.content=`${r.keyName},${i.tasks.map(e=>e.keyName).join(`|`)}`),this._success({keyName:r.keyName,hid:`0x${r.hid}`,mode:n.modeCode,workingMode:n.nextWorkingMode,journeyMode:n.journeyMode,data:{kcs:i.tasks.map(e=>parseInt(e.hid,16)),trps:i.trps.map(e=>parseInt(String(e).replace(/^0x/i,``),16)),dbs:i.dbs}})}async setAdvancedKeyMPT(e){let n=await this._prepareAdvancedModeMutation(e,`MPT`),r=n.target,i=this._resolveAdvancedMPTTasksAndJourneys(e),a=i.journeys.map((e,t)=>this._toProtocolWordHexParts(Math.round(e*1e3),`dbs[${t}]`)),o=[...t.SET_DEVICE_FUNCTION_MPT_CMD];return o[4]=`0x01`,o[5]=`0x${r.hid}`,o[6]=`0x${i.tasks[0].hid}`,o[8]=`0x${i.tasks[1].hid}`,o[10]=`0x${i.tasks[2].hid}`,o[12]=a[0]?.[0]??`0x00`,o[13]=a[0]?.[1]??`0x00`,o[14]=a[1]?.[0]??`0x00`,o[15]=a[1]?.[1]??`0x00`,o[16]=a[2]?.[0]??`0x00`,o[17]=a[2]?.[1]??`0x00`,await this._sendHIDCommand(new Uint8Array(o.map(e=>parseInt(e,16))),0,null,`Timeout waiting for MPT set report`,1500),r.keyItem&&((!r.keyItem.custom||typeof r.keyItem.custom!=`object`)&&(r.keyItem.custom={}),r.keyItem.custom.type=`MPT`,r.keyItem.custom.name=`MPT`,r.keyItem.custom.content=`${r.keyName}|${i.tasks[0].keyName}|${i.journeys[0]}|${i.tasks[1].keyName}|${i.journeys[1]}|${i.tasks[2].keyName}|${i.journeys[2]}`),this._success({keyName:r.keyName,hid:`0x${r.hid}`,mode:n.modeCode,workingMode:n.nextWorkingMode,journeyMode:n.journeyMode,data:{kcs:i.tasks.map(e=>parseInt(e.hid,16)),dbs:i.journeys}})}async setAdvancedKeyMT(e){let n=await this._prepareAdvancedModeMutation(e,`MT`),i=n.target,a=this._resolveAdvancedMTTasksAndDelay(e),o=[...t.SET_DEVICE_FUNCTION_MT_CMD];return o[4]=`0x01`,o[5]=`0x${i.hid}`,o[6]=`0x${a.secondaryTask.hid}`,o[8]=`0x${a.primaryTask.hid}`,o[10]=`0x${a.delayProtocol.toString(16).padStart(2,`0`)}`,o[3]=`0x${r.getCRC(o[1],o[2],o[10]).toString(16)}`,await this._sendHIDCommand(new Uint8Array(o.map(e=>parseInt(e,16))),0,null,`Timeout waiting for MT set report`,1500),i.keyItem&&((!i.keyItem.custom||typeof i.keyItem.custom!=`object`)&&(i.keyItem.custom={}),i.keyItem.custom.type=`MT`,i.keyItem.custom.name=`MT`,i.keyItem.custom.content=`${i.keyName}|${a.primaryTask.keyName}|${a.secondaryTask.keyName}|${Math.round(a.delayMs)}`),this._success({keyName:i.keyName,hid:`0x${i.hid}`,mode:n.modeCode,workingMode:n.nextWorkingMode,journeyMode:n.journeyMode,data:{time:Math.round(a.delayMs),kcs:[parseInt(a.primaryTask.hid,16),parseInt(a.secondaryTask.hid,16)]}})}async setAdvancedKeyTGL(e){let n=await this._prepareAdvancedModeMutation(e,`TGL`),r=n.target,i=this._resolveAdvancedTGLTaskAndDelay(e),a=[...t.SET_DEVICE_FUNCTION_TGL_CMD];return a[4]=`0x01`,a[5]=`0x${r.hid}`,a[6]=`0x${i.hid}`,a[8]=`0x${i.delayProtocol.toString(16).padStart(2,`0`)}`,await this._sendHIDCommand(new Uint8Array(a.map(e=>parseInt(e,16))),0,null,`Timeout waiting for TGL set report`,1500),r.keyItem&&((!r.keyItem.custom||typeof r.keyItem.custom!=`object`)&&(r.keyItem.custom={}),r.keyItem.custom.type=`TGL`,r.keyItem.custom.name=`TGL`,r.keyItem.custom.content=`${i.keyName}|${Math.round(i.delayMs)}`),this._success({keyName:r.keyName,hid:`0x${r.hid}`,taskKeyName:i.keyName,taskHid:`0x${i.hid}`,mode:n.modeCode,workingMode:n.nextWorkingMode,journeyMode:n.journeyMode,data:{task:i.keyName,delay:Math.round(i.delayMs),delayProtocol:i.delayProtocol}})}async setAdvancedKeyEND(e){let n=await this._prepareAdvancedModeMutation(e,`END`),r=n.target,i=this._resolveAdvancedENDTaskTarget(e),a=[...t.SET_DEVICE_FUNCTION_END_CMD];return a[4]=`0x01`,a[5]=`0x${r.hid}`,a[6]=`0x${i.hid}`,await this._sendHIDCommand(new Uint8Array(a.map(e=>parseInt(e,16))),0,null,`Timeout waiting for END set report`,1500),r.keyItem&&((!r.keyItem.custom||typeof r.keyItem.custom!=`object`)&&(r.keyItem.custom={}),r.keyItem.custom.type=`END`,r.keyItem.custom.name=`END`,r.keyItem.custom.content=`${i.keyName}`),this._success({keyName:r.keyName,hid:`0x${r.hid}`,taskKeyName:i.keyName,taskHid:`0x${i.hid}`,mode:n.modeCode,workingMode:n.nextWorkingMode,journeyMode:n.journeyMode,task:i.keyName,delay:e?.delay??0})}async setAdvancedKeySOCD(e){if(!this.currentDevice)throw Error(`No device initialized.`);let n=await this._prepareAdvancedModeMutation(e,`SOCD`),r=n.target,i=this._resolveAdvancedPairTargetByName(e);if(r.hid===i.hid)throw Error(`SOCD 需要两个不同的按键`);let a=this._normalizeSOCDModeValue(e?.mode??0),o=this._toWorkingModeByte(e?.delay??0),s=this._toWorkingModeByte(i.keyItem?.working_mode??0),c=this._mergeWorkingMode(s,n.modeCode),l=[...t.SET_DEVICE_FUNCTION_SOCD_CMD];return l[4]=`0x01`,l[5]=`0x${r.hid}`,l[6]=`0x${i.hid}`,l[8]=`0x${i.hid}`,l[9]=`0x${r.hid}`,l[12]=`0x${a.toString(16).padStart(2,`0`)}`,l[13]=`0x${o.toString(16).padStart(2,`0`)}`,await this._sendHIDCommand(new Uint8Array(l.map(e=>parseInt(e,16))),0,null,`Timeout waiting for SOCD set report`,1500),r.keyItem&&((!r.keyItem.custom||typeof r.keyItem.custom!=`object`)&&(r.keyItem.custom={}),r.keyItem.working_mode=n.nextWorkingMode,r.keyItem.custom.type=`SOCD`,r.keyItem.custom.name=`SOCD`,r.keyItem.custom.content=`${r.keyName}|${i.keyName}`),i.keyItem&&((!i.keyItem.custom||typeof i.keyItem.custom!=`object`)&&(i.keyItem.custom={}),i.keyItem.working_mode=c,i.keyItem.custom.type=`SOCD`,i.keyItem.custom.name=`SOCD`,i.keyItem.custom.content=`${r.keyName}|${i.keyName}`),this._success({keyName:r.keyName,hid:`0x${r.hid}`,keyName2:i.keyName,hid2:`0x${i.hid}`,mode:n.modeCode,workingMode:n.nextWorkingMode,workingMode2:c,journeyMode:n.journeyMode,journeyMode2:this._getJourneyModeNibble(c),data:{delay:o,mode:a}})}_formatRateOfReturnValue(e){return{1:`125Hz`,2:`250Hz`,3:`500Hz`,4:`1000Hz`,5:`2000Hz`,6:`4000Hz`,7:`8000Hz`}[e]||`${e}`}_normalizeRateOfReturnValue(e){if(typeof e==`number`&&Number.isFinite(e)){let t={1:1,2:2,3:3,4:4,5:5,6:6,7:7,125:1,250:2,500:3,1e3:4,2e3:5,4e3:6,8e3:7};if(t[e]!==void 0)return t[e];throw Error(`不支持的回报率值`)}let t=String(e).trim().toUpperCase(),n={"125HZ":1,"250HZ":2,"500HZ":3,"1000HZ":4,"2000HZ":5,"4000HZ":6,"8000HZ":7,"1KHZ":4,"2KHZ":5,"4KHZ":6,"8KHZ":7,R1KHZ:4,R2KHZ:5,R4KHZ:6,R8KHZ:7,125:1,250:2,500:3,1e3:4,2e3:5,4e3:6,8e3:7,1:1,2:2,3:3,4:4,5:5,6:6,7:7};if(n[t]!==void 0)return n[t];let r=Number.parseInt(t,10);if(Number.isFinite(r))return r;throw Error(`不支持的回报率值`)}_getLightingSleepTimeOptions(){return[0,1,2,3,5,10,15,20,30,45,60]}_formatLightingSleepTimeValue(e){let t=Number(e);return t===0?`从不睡眠`:`${t}分钟`}_normalizeLightingSleepTimeValue(e){if(typeof e==`number`&&Number.isFinite(e)){if(this._getLightingSleepTimeOptions().includes(e))return e;throw Error(`不支持的休眠时间,支持的值为:${this._getLightingSleepTimeOptions().join(`、`)}`)}let t=String(e).trim().toUpperCase();if([`0`,`0分钟`,`0MIN`,`0MINS`,`0MINUTE`,`0MINUTES`,`NEVER`,`OFF`,`DISABLE`,`DISABLED`].includes(t))return 0;let n=t.match(/^(\d+)\s*(分钟|MIN|MINS|MINUTE|MINUTES)?$/);if(n){let e=Number.parseInt(n[1],10);if(this._getLightingSleepTimeOptions().includes(e))return e}throw Error(`不支持的休眠时间,支持的值为:${this._getLightingSleepTimeOptions().join(`、`)}`)}async getRateOfReturnList(){return this._success({list:[]})}async getDevices(){let e=Date.now();try{if(this.logger.debug(`Getting devices list`),!navigator.hid)throw Error(`WebHID API is not supported in this browser.`);let t=this.configs&&this.configs.length>0?this.configs.map(e=>({vendorId:e.vendorId,productId:e.productId,usagePage:e.usagePage,usage:e.usage})):void 0,n=await navigator.hid.getDevices();(!n||n.length===0)&&(n=await navigator.hid.requestDevice({filters:t||[]}));let r=n.map(e=>({id:e.deviceId||`${e.vendorId}:${e.productId}`,usage:e.collections?.[0]?.usage||this.usage,usagePage:e.collections?.[0]?.usagePage||this.usagePage,vendorId:e.vendorId,productId:e.productId,productName:e.productName,data:{},type:`keyboard`}));return this.performanceMonitor.recordOperation(`getDevices`,e,Date.now(),!0),this.logger.info(`Found ${r.length} devices`,{devices:r}),this._success({devices:r})}catch(t){throw this.performanceMonitor.recordOperation(`getDevices`,e,Date.now(),!1),this.performanceMonitor.recordError(`getDevices`,t),this.logger.error(`Failed to get devices`,t),t}}async init(e){let t=Date.now();try{if(this.logger.info(`Initializing keyboard device: ${e}`),!navigator.hid)throw Error(`WebHID API is not supported in this browser.`);let n=await navigator.hid.getDevices(),i=null;for(let e=0;e<n.length;e++){let t=n[e];t.collections[0].usagePage==this.usagePage&&(i=t)}if(!i)throw Error(`Device not found or not authorized.`);i.opened||await i.open(),this._disableKeyboardBacklightRealtimeListener(),this._disableLightingLogoRealtimeListener(),this.currentDevice=i,r.curDeviceHandle=i,this._enableKeyboardBacklightRealtimeListener(),this._enableLightingLogoRealtimeListener(),this.performanceMonitor.recordConnection(e,!0);let a=await this.getDevicesInfo(),o=this.versionManager.checkCompatibility(`keyboard`,a.Version);return o.compatible||this.logger.warn(`Device firmware version check: ${o.reason}`),this.performanceMonitor.recordOperation(`init`,t,Date.now(),!0),this.logger.info(`Keyboard device initialized successfully`,{deviceId:e,deviceInfo:a}),this._success({info:`Initialization successful!`})}catch(n){throw this.performanceMonitor.recordOperation(`init`,t,Date.now(),!1),this.performanceMonitor.recordError(`init`,n),this.logger.error(`Failed to initialize keyboard device: ${e}`,n),n}}async getDevicesInfo(){if(!this.currentDevice)throw Error(`No device initialized.`);let e=new Uint8Array(t.READ_DEVICE_INFO_CMD.map(e=>parseInt(e,16)));try{let t=await this._sendHIDCommand(e,0,e=>r.getDeviceInfo(e),`Timeout waiting for device info report`);return console.log(`DeviceInfo`,{DeviceInfo:t}),this._success(t)}catch(e){throw this.logger.error(`Failed to get device info`,e),e}}async getConfig(){let e=new Uint8Array(t.READ_DEVICE_PROFILE_CMD.map(e=>parseInt(e,16)));try{let t=await this._sendHIDCommand(e,0,e=>r.getCurrentConfig(e),`Timeout waiting for device info report`);return this._success({configName:`Config`+t,value:t})}catch(e){throw this.logger.error(`Failed to get config`,e),e}}async setConfig(e){let n=parseInt(e);t.SET_DEVICE_PROFILE_CMD[5]=n;let r=new Uint8Array(t.SET_DEVICE_PROFILE_CMD.map(e=>parseInt(e,16)));try{return await this._sendHIDCommand(r,0,null,`Timeout waiting for device info report`),this._success({setConfigName:`Config`+n,configIndex:n,current:{configName:`Config`+n,value:n}})}catch(e){throw this.logger.error(`Failed to set config`,e),e}}async getRateOfReturn(){if(!this.currentDevice)throw Error(`No device initialized.`);let e=new Uint8Array(t.READ_DEVICE_RETE_CMD.map(e=>parseInt(e,16)));try{let t=await this._sendHIDCommand(e,0,e=>{let t=r.toHexStringArr(e);return parseInt(t[6],16)},`Timeout waiting for device rate report`);return this._success({key:this._formatRateOfReturnValue(t)})}catch(e){throw this.logger.error(`Failed to get rate of return`,e),e}}async setRateOfReturn(e){if(!this.currentDevice)throw Error(`No device initialized.`);let n=this._normalizeRateOfReturnValue(e);t.SET_DEVICE_RETE_CMD[5]=n;let r=new Uint8Array(t.SET_DEVICE_RETE_CMD.map(e=>parseInt(e,16)));try{return await this._sendHIDCommand(r,0,null,`Timeout waiting for device rate set report`),this._success({key:this._formatRateOfReturnValue(n),value:n})}catch(e){throw this.logger.error(`Failed to set rate of return`,e),e}}async getLightingSleepTime(){let e=new Uint8Array(t.READ_DEVICE_SLEEP_CMD.map(e=>parseInt(e,16)));try{let t=await this._sendHIDCommand(e,0,e=>r.getDeviceSleep(e),`Timeout waiting for device sleep report`);return this._success({key:this._formatLightingSleepTimeValue(t),value:t})}catch(e){throw this.logger.error(`Failed to get lighting sleep time`,e),e}}async setLightingSleepTime(e){let n=this._normalizeLightingSleepTimeValue(e);t.SET_DEVICE_SLEEP_CMD[5]=n;let r=new Uint8Array(t.SET_DEVICE_SLEEP_CMD.map(e=>parseInt(e,16)));try{return await this._sendHIDCommand(r,0,null,`Timeout waiting for device sleep set report`),this._success({key:this._formatLightingSleepTimeValue(n),value:n})}catch(e){throw this.logger.error(`Failed to set lighting sleep time`,e),e}}async closeDevice(){return this._disableKeyboardBacklightRealtimeListener(),this._disableLightingLogoRealtimeListener(),r.curDeviceHandle=null,this.currentDevice=null,this.calibrationState=0,this._success()}async reconnection(e,t){return this._success()}on(e,t){this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(t)}off(e,t){this.eventListeners[e]&&(this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t))}async appToBoot(){return this._success()}async bootToApp(){return this._success()}async upgrade(e,t,n){return this._success({success:!0})}async GFSRestore(){if(!this.currentDevice)throw Error(`No device initialized.`);let e=new Uint8Array(t.SET_DEVICE_REST_CMD.map(e=>parseInt(e,16)));try{return await this._sendHIDCommand(e,0,null,`Timeout waiting for factory reset report`,5e3),r.MatrixList.KeyMap=[],r.DPIS=[],this._success({success:!0,message:`Factory settings restored successfully`})}catch(e){throw this.logger.error(`Failed to restore factory settings`,e),e}}async getSystemType(){if(!this.currentDevice)throw Error(`No device initialized.`);let e=new Uint8Array(t.READ_DEVICE_MAC_MODE_CMD.map(e=>parseInt(e,16)));try{let t=await this._sendHIDCommand(e,0,e=>{let t=r.toHexStringArr(e);return parseInt(t[6],16)},`Timeout waiting for device mac mode report`);return this._success({key:t===1?`MAC`:`WIN`,value:t})}catch(e){throw this.logger.error(`Failed to get system type`,e),e}}async setSystemType(e){if(!this.currentDevice)throw Error(`No device initialized.`);let n=String(e).toUpperCase();if(![`WIN`,`MAC`].includes(n))throw Error(`systemType 仅支持 "WIN" 或 "MAC"`);let r=n===`MAC`?1:0;t.SET_DEVICE_MAC_MODE_CMD[5]=r;let i=new Uint8Array(t.SET_DEVICE_MAC_MODE_CMD.map(e=>parseInt(e,16)));try{return await this._sendHIDCommand(i,0,null,`Timeout waiting for device mac mode set report`),this._success({key:n,value:r})}catch(e){throw this.logger.error(`Failed to set system type`,e),e}}},H=class{constructor(e={}){this.devices=[],this.currentDevice=null,this.eventListeners={},this.deviceType=`mouse`,this.configs=e.configs||[],this.usage=e.usage||2,this.usagePage=e.usagePage||65457,this.versionManager=d,this.logger=f,this.performanceMonitor=p,this.config={autoReconnect:e.autoReconnect||!1,reconnectInterval:e.reconnectInterval||5e3,timeout:e.timeout||1e4,logLevel:e.logLevel||`INFO`,...e},this.logger.setLevel(this.config.logLevel),this.logger.info(`ServiceMouse initialized`,{config:this.config,configs:this.configs,usage:this.usage,usagePage:this.usagePage})}async getDevices(){let e=Date.now();try{this.logger.debug(`Getting mouse devices list`);let t=[{id:`mock-mouse-1`,usage:2,usagePage:65440,vendorId:7331,productId:2050,productName:`Mock Mouse`,data:{},type:`mouse`}];return this.performanceMonitor.recordOperation(`getDevices`,e,Date.now(),!0),this.logger.info(`Found ${t.length} mouse devices`,{devices:t}),t}catch(t){throw this.performanceMonitor.recordOperation(`getDevices`,e,Date.now(),!1),this.performanceMonitor.recordError(`getDevices`,t),this.logger.error(`Failed to get mouse devices`,t),t}}async init(e){let t=Date.now();try{this.logger.info(`Initializing mouse device: ${e}`),this.currentDevice={id:e,type:`mouse`},this.performanceMonitor.recordConnection(e,!0);let n=await this.getDevicesInfo(),r=this.versionManager.checkCompatibility(`mouse`,n.appVersion);return r.compatible||this.logger.warn(`Device firmware version check: ${r.reason}`),this.performanceMonitor.recordOperation(`init`,t,Date.now(),!0),this.logger.info(`Mouse device initialized successfully`,{deviceId:e,deviceInfo:n}),this.currentDevice}catch(n){throw this.performanceMonitor.recordOperation(`init`,t,Date.now(),!1),this.performanceMonitor.recordError(`init`,n),this.logger.error(`Failed to initialize mouse device: ${e}`,n),n}}async getDevicesInfo(){return{type:2,subType:0,boardId:3145730,appVersion:`1.0.1.0`,pcbVersion:`1-0-0-0`,runModeVersion:0,sn:`54817806657765148212548`,timestamp:`2025052215:4`}}async getProtocolVersion(){return{mainVersion:1,subVersion:0,hardwareVersion:1,softwareVersion:0}}async getDPIList(){return{list:[400,800,1600,3200,6400,12800,16e3]}}async getDPI(){return{value:1600}}async setDPI(e){console.log(`Setting DPI to ${e}`)}async getRateOfReturnList(){return{list:[`125Hz`,`250Hz`,`500Hz`,`1000Hz`]}}async getRateOfReturn(){return{key:`1000Hz`}}async setRateOfReturn(e){console.log(`Setting rate of return to ${e}`)}async getLiftOffDistance(){return{value:2}}async setLiftOffDistance(e){console.log(`Setting lift-off distance to ${e}`)}async getButtonMapping(){return{left:`left-click`,right:`right-click`,middle:`middle-click`,dpi:`dpi-cycle`,forward:`forward`,backward:`backward`}}async setButtonMapping(e){console.log(`Setting button mapping:`,e)}async closeDevice(){this.currentDevice=null}async reconnection(e,t){}on(e,t){this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(t)}off(e,t){this.eventListeners[e]&&(this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t))}async appToBoot(){}async bootToApp(){}async upgrade(e,t,n){return{success:!0}}async GFSRestore(){}},U=V;e.Logger=l,e.PerformanceMonitor=u,e.ServiceKeyboard=V,e.ServiceMouse=H,e.VersionManager=c,e.default=U,e.logger=f,e.performanceMonitor=p,e.versionManager=d});
|
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wvke-sdk",
|
|
3
|
+
"version": "1.0.20260422",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "WVKE - 完客开放平台 SDK",
|
|
6
|
+
"main": "dist/wvke-sdk.umd.js",
|
|
7
|
+
"module": "dist/wvke-sdk.es.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"keyboard",
|
|
11
|
+
"sdk",
|
|
12
|
+
"hardware",
|
|
13
|
+
"communication"
|
|
14
|
+
],
|
|
15
|
+
"author": "Your Name",
|
|
16
|
+
"license": "MIT"
|
|
17
|
+
}
|