mirror of
https://github.com/emacs-exwm/exwm.git
synced 2024-11-30 07:58:00 +01:00
Merge branch 'Stebalien.github.com/steb/passthrough-input' into externals/exwm
This commit is contained in:
commit
01ae286e49
1 changed files with 18 additions and 1 deletions
|
@ -102,6 +102,13 @@ defined in `exwm-mode-map' here."
|
||||||
(defconst exwm-input--update-focus-interval 0.01
|
(defconst exwm-input--update-focus-interval 0.01
|
||||||
"Time interval (in seconds) for accumulating input focus update requests.")
|
"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
|
(defvar exwm-input--during-command nil
|
||||||
"Indicate whether between `pre-command-hook' and `post-command-hook'.")
|
"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--log)
|
||||||
(exwm-input--on-minibuffer-exit)))
|
(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 ()
|
(defun exwm-input--init ()
|
||||||
"Initialize the keyboard module."
|
"Initialize the keyboard module."
|
||||||
(exwm--log)
|
(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))
|
(run-with-idle-timer 0 t #'exwm-input--on-echo-area-dirty))
|
||||||
(add-hook 'echo-area-clear-hook #'exwm-input--on-echo-area-clear)
|
(add-hook 'echo-area-clear-hook #'exwm-input--on-echo-area-clear)
|
||||||
;; Update focus when buffer list updates
|
;; 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 ()
|
(defun exwm-input--post-init ()
|
||||||
"The second stage in the initialization of the input module."
|
"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 ()
|
(defun exwm-input--exit ()
|
||||||
"Exit the input module."
|
"Exit the input module."
|
||||||
(exwm--log)
|
(exwm--log)
|
||||||
|
(dolist (fun exwm-input--passthrough-functions)
|
||||||
|
(advice-remove fun #'exwm-input--call-with-passthrough))
|
||||||
(exwm-input--unset-simulation-keys)
|
(exwm-input--unset-simulation-keys)
|
||||||
(remove-hook 'pre-command-hook #'exwm-input--on-pre-command)
|
(remove-hook 'pre-command-hook #'exwm-input--on-pre-command)
|
||||||
(remove-hook 'post-command-hook #'exwm-input--on-post-command)
|
(remove-hook 'post-command-hook #'exwm-input--on-post-command)
|
||||||
|
|
Loading…
Reference in a new issue