Browse Source

新的快捷键方式

DESKTOP-0GD05B0\Administrator 2 years ago
parent
commit
ce91a96dfa
1 changed files with 10 additions and 32 deletions
  1. 10 32
      src/utils/xckeydown.ts

+ 10 - 32
src/utils/xckeydown.js → src/utils/xckeydown.ts

@@ -1,37 +1,15 @@
+import {Ref, ref} from 'vue'
 import {ElMessage} from "element-plus";
 
-let registerShortcuts = null
-const direction = ['ArrowRight', 'ArrowLeft', 'ArrowDown', 'ArrowUp']
-let disabled = false
 
-export const xcHotKey = (keyList) => {
-    console.log('快捷键')
-    enableShortcutKeys()
-    registerShortcuts = keyList
-    document.onkeydown = function (event) {
-        shortcutTrigger(event)
-    }
-}
-
-export const logoutShortcut = () => {
-    document.onkeydown = null
-    registerShortcuts = null
-}
+const direction: string[] = ['ArrowRight', 'ArrowLeft', 'ArrowDown', 'ArrowUp']
+export const xcEvent: Ref<Event | null> = ref(null)
 
-export const disableShortcutKeys = () => {
-    disabled = true
+document.onkeydown = function (event: KeyboardEvent): void {
+    xcEvent.value = event
 }
 
-export const enableShortcutKeys = () => {
-    disabled = false
-}
-
-
-/**
- * 快捷键触发事件
- * @param event
- */
-const shortcutTrigger = (event) => {
+export const shortcutTrigger = (event, registerShortcuts, disabled = false) => {
     for (let listKey in registerShortcuts) {
         let data = registerShortcuts[listKey]
         for (let key in data) {
@@ -40,7 +18,7 @@ const shortcutTrigger = (event) => {
             if (event[pressSimultaneously] && event.key === key) {
                 event.returnValue = false
                 event.preventDefault()
-                if (whetherToDisable()) return;
+                if (whetherToDisable(disabled)) return;
                 data[key]()
                 return
             }
@@ -48,7 +26,7 @@ const shortcutTrigger = (event) => {
                 if ((event[pressSimultaneously] && direction.includes(event.code))) {
                     event.returnValue = false
                     event.preventDefault()
-                    if (whetherToDisable()) return;
+                    if (whetherToDisable(disabled)) return;
                     data['direction'](event.key)
                     return
                 }
@@ -57,7 +35,7 @@ const shortcutTrigger = (event) => {
                 if (event[pressSimultaneously] && event.code === ('Digit' + event.key)) {
                     event.returnValue = false
                     event.preventDefault()
-                    if (whetherToDisable()) return;
+                    if (whetherToDisable(disabled)) return;
                     data['number'](event.key)
                     return
                 }
@@ -73,7 +51,7 @@ const shortcutTrigger = (event) => {
     }
 }
 
-function whetherToDisable() {
+function whetherToDisable(disabled = false) {
     // 这个打开是时候是不触发
     if (disabled) {
         ElMessage({