diff options
author | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2024-01-08T00·00+0000 |
---|---|---|
committer | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2024-01-08T00·00+0000 |
commit | 01ae286e49604128dbd9c16e75c3ab0c5c4355c2 (patch) | |
tree | 2aa67f1458ee2490565cf34efd1e72c7b69e71eb /exwm-input.el | |
parent | 64d324e6ea7171f48180e87f1f5cc46fad81044c (diff) | |
parent | 8ea607ba8548e193157c5627ca30e3e57431ba5f (diff) |
Merge branch 'Stebalien.github.com/steb/passthrough-input' into externals/exwm
Diffstat (limited to 'exwm-input.el')
-rw-r--r-- | exwm-input.el | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/exwm-input.el b/exwm-input.el index e24a66cfd08d..a37f4168076b 100644 --- a/exwm-input.el +++ b/exwm-input.el @@ -102,6 +102,13 @@ defined in `exwm-mode-map' here." (defconst exwm-input--update-focus-interval 0.01 "Time interval (in seconds) for accumulating input focus update requests.") +(defconst exwm-input--passthrough-functions '(read-char + read-char-exclusive + read-key-sequence-vector + read-key-sequence + read-event) + "Low-level functions that read events and need to be exempted from EXWM's input handling.") + (defvar exwm-input--during-command nil "Indicate whether between `pre-command-hook' and `post-command-hook'.") @@ -1158,6 +1165,11 @@ One use is to access the keymap bound to KEYS (as prefix keys) in `char-mode'." (exwm--log) (exwm-input--on-minibuffer-exit))) +(defun exwm-input--call-with-passthrough (function &rest args) + "Bind `exwm-input-line-mode-passthrough' and call the specified FUNCTION with ARGS." + (let ((exwm-input-line-mode-passthrough t)) + (apply function args))) + (defun exwm-input--init () "Initialize the keyboard module." (exwm--log) @@ -1213,7 +1225,10 @@ One use is to access the keymap bound to KEYS (as prefix keys) in `char-mode'." (run-with-idle-timer 0 t #'exwm-input--on-echo-area-dirty)) (add-hook 'echo-area-clear-hook #'exwm-input--on-echo-area-clear) ;; Update focus when buffer list updates - (add-hook 'buffer-list-update-hook #'exwm-input--on-buffer-list-update)) + (add-hook 'buffer-list-update-hook #'exwm-input--on-buffer-list-update) + + (dolist (fun exwm-input--passthrough-functions) + (advice-add fun :around #'exwm-input--call-with-passthrough))) (defun exwm-input--post-init () "The second stage in the initialization of the input module." @@ -1223,6 +1238,8 @@ One use is to access the keymap bound to KEYS (as prefix keys) in `char-mode'." (defun exwm-input--exit () "Exit the input module." (exwm--log) + (dolist (fun exwm-input--passthrough-functions) + (advice-remove fun #'exwm-input--call-with-passthrough)) (exwm-input--unset-simulation-keys) (remove-hook 'pre-command-hook #'exwm-input--on-pre-command) (remove-hook 'post-command-hook #'exwm-input--on-post-command) |