Skip to content

Commit

Permalink
Merge branch 'Stebalien.github.com/steb/passthrough-input' into exter…
Browse files Browse the repository at this point in the history
…nals/exwm
  • Loading branch information
medranocalvo committed Jan 8, 2024
2 parents 64d324e + 8ea607b commit 01ae286
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion exwm-input.el
Original file line number Diff line number Diff line change
Expand Up @@ -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'.")

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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."
Expand All @@ -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)
Expand Down

0 comments on commit 01ae286

Please sign in to comment.