From 9c8e95b376124ca192e65a3dca33dd40ca6ecee3 Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Tue, 12 Jul 2016 11:55:02 +0800 Subject: Fix a bug of simulation keys * exwm-input.el (exwm-input--on-KeyPress-line-mode) (exwm-input--on-KeyPress-char-mode): Force events to be added to `this-command-keys'. (exwm-input-send-next-key): The read event can now be (t . EVENT). --- exwm-input.el | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/exwm-input.el b/exwm-input.el index e786f0defd5f..2622253bae65 100644 --- a/exwm-input.el +++ b/exwm-input.el @@ -294,7 +294,9 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") (memq event exwm-input--simulation-prefix-keys))) (setq mode xcb:Allow:AsyncKeyboard) (unless minibuffer-window (setq exwm-input--during-key-sequence t)) - (push event unread-command-events)) + ;; Feed this event to command loop. Also force it to be added to + ;; `this-command-keys'. + (push (cons t event) unread-command-events)) (xcb:+request exwm--connection (make-instance 'xcb:AllowEvents :mode (or mode xcb:Allow:ReplayKeyboard) @@ -317,7 +319,9 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") (setq exwm-input--temp-line-mode t exwm-input--during-key-sequence t) (exwm-input--grab-keyboard)) ;grab keyboard temporarily - (push event unread-command-events)))) + ;; Feed this event to command loop. Also force it to be added to + ;; `this-command-keys'. + (push (cons t event) unread-command-events)))) (xcb:+request exwm--connection (make-instance 'xcb:AllowEvents :mode xcb:Allow:AsyncKeyboard @@ -443,6 +447,8 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") (setq key (read-key (format "Send key: %s (%d/%d)" (key-description keys) (1+ i) times))) + (when (and (listp key) (eq (car key) t)) + (setq key (cdr key))) (unless (listp key) (throw 'break nil)))) (setq exwm-input--during-key-sequence nil) (setq keys (vconcat keys (vector key))) -- cgit 1.4.1