about summary refs log tree commit diff
path: root/exwm-input.el
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2017-11-26T12·26+0800
committerChris Feng <chris.w.feng@gmail.com>2017-11-26T12·26+0800
commit2b183f221239a24da8d65cb9043f1010aa14c640 (patch)
tree5428325c3f1f39ceb2eefe873ec846f0a670c4c4 /exwm-input.el
parent76b567dddb6a6fdaacf56312b4b3d698cd940eaa (diff)
Re-grab global keys on keyboard update
* exwm-input.el (exwm-input--on-keysyms-update): New function for
re-grabbing global keys.
(exwm-input--init): Register it to XELB.
Diffstat (limited to 'exwm-input.el')
-rw-r--r--exwm-input.el6
1 files changed, 5 insertions, 1 deletions
diff --git a/exwm-input.el b/exwm-input.el
index 7bcbc9e4dc..097b392937 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -127,6 +127,10 @@ ARGS are additional arguments to CALLBACK."
         (x-focus-frame (selected-frame))
         (select-window (selected-window))))))
 
+(defun exwm-input--on-keysyms-update ()
+  (let ((exwm-input--global-prefix-keys nil))
+    (exwm-input--update-global-prefix-keys)))
+
 (defun exwm-input--on-workspace-list-change ()
   "Run in `exwm-input--update-global-prefix-keys'."
   (dolist (f exwm-workspace--list)
@@ -702,7 +706,7 @@ Its usage is the same with `exwm-input-set-simulation-keys'."
 (defun exwm-input--init ()
   "Initialize the keyboard module."
   ;; Refresh keyboard mapping
-  (xcb:keysyms:init exwm--connection)
+  (xcb:keysyms:init exwm--connection #'exwm-input--on-keysyms-update)
   ;; Create the X window and intern the atom used to fetch timestamp.
   (setq exwm-input--timestamp-window (xcb:generate-id exwm--connection))
   (xcb:+request exwm--connection