Commit 2ef83082 authored by Andy Stewart's avatar Andy Stewart
Browse files

Refactory eaf-monitor-key-event.

parent c48cda5b
Loading
Loading
Loading
Loading
+41 −51
Original line number Diff line number Diff line
@@ -509,10 +509,7 @@ Please ONLY use `eaf-bind-key' to edit EAF keybindings!"

(defun eaf-monitor-key-event ()
  "Monitor key events during EAF process."
  (unless
  (ignore-errors
        (with-current-buffer (buffer-name)
          (when (eq major-mode 'eaf-mode)
    (let* ((event last-command-event)
           (key (if event
                    (make-vector 1 event)
@@ -527,26 +524,19 @@ Please ONLY use `eaf-bind-key' to edit EAF keybindings!"
        ;; Fix #51 , don't handle F11 to make emacs toggle frame fullscreen status successfully.
        ((equal key-desc "<f11>")
         t)
        ;; Send key when key-command is char type event.
        ((or (equal key-command "self-insert-command") ; Just send event when user insert single character.
             (equal key-command "completion-select-if-within-overlay")) ; Don't send event 'M' if user press Ctrl + M.
         (eaf-call "send_key" buffer-id key-desc))
        ;; Execute function or send key with app keybinding.
        ((eaf-identify-key-in-app key-command buffer-app-name)
                 (cond ((equal buffer-app-name "browser")
                        (let ((function-name-value (cdr (assoc key-desc eaf-browser-keybinding))))
                          (if function-name-value
                              (eaf-call "execute_function" buffer-id function-name-value)
                            (let ((key-alias-value (cdr (assoc key-desc eaf-browser-keybinding))))
                              (if key-alias-value
                                  (eaf-call "send_key" buffer-id key-alias-value))))))
                       ((equal buffer-app-name "terminal")
                        (let ((function-name-value (cdr (assoc key-desc eaf-browser-keybinding))))
                          (when function-name-value
                            (eaf-call "execute_function" buffer-id function-name-value))))
         (cond
           ((assoc buffer-app-name eaf-app-binding-alist)
            (eaf-handle-app-key buffer-id key-desc
                                (eaf-get-app-bindings buffer-app-name)))
           (t
            (eaf-call "send_key" buffer-id key-desc))))
        ;; Send key if key-command is nil or key is single char key.
        ((or
          (equal key-command "nil")
          (member key-desc eaf-single-key-list))
@@ -559,7 +549,7 @@ Please ONLY use `eaf-bind-key' to edit EAF keybindings!"
           (call-interactively (key-binding key))))))
    ;; Set `last-command-event' with nil, emacs won't notify me buffer is ready-only,
    ;; because i insert nothing in buffer.
            (setq last-command-event nil))))))
    (setq last-command-event nil)))

(defun eaf-handle-app-key (buffer-id key-desc keybinding)
  "Call function on the Python side if matched key in the keybinding.