branch: externals/xelb commit c1d4e31abc7b9d1f8ff84231d285d73b39c5e0f3 Author: Chris Feng <chris.w.f...@gmail.com> Commit: Chris Feng <chris.w.f...@gmail.com>
Handle missing modifier keys when converting event to keysym * xcb-keysyms.el (xcb:keysyms:event->keysym): Return nil when any modifier key in the event is not present. --- xcb-keysyms.el | 32 +++++++++++++++++--------------- 1 files changed, 17 insertions(+), 15 deletions(-) diff --git a/xcb-keysyms.el b/xcb-keysyms.el index f849bad..3b59238 100644 --- a/xcb-keysyms.el +++ b/xcb-keysyms.el @@ -363,21 +363,23 @@ This function returns nil when it fails to convert an event." (when (<= #x100 event #x10ffff) ;Unicode (setq keysym (+ #x1000000 event))))) (when keysym - `(,keysym - ;; state for KeyPress event - ,(apply #'logior - (mapcar (lambda (i) - (pcase i - (`meta xcb:keysyms:meta-mask) - (`control xcb:keysyms:control-mask) - (`shift xcb:keysyms:shift-mask) - (`hyper xcb:keysyms:hyper-mask) - (`super xcb:keysyms:super-mask) - (`alt xcb:keysyms:alt-mask) - (`down 0) - ;; FIXME: more? - (_ 0))) - modifiers)))))) + (setq modifiers + (mapcar (lambda (i) + (pcase i + (`meta xcb:keysyms:meta-mask) + (`control xcb:keysyms:control-mask) + (`shift xcb:keysyms:shift-mask) + (`hyper xcb:keysyms:hyper-mask) + (`super xcb:keysyms:super-mask) + (`alt xcb:keysyms:alt-mask) + (`down 0) + ;; FIXME: more? + (_ 0))) + modifiers)) + (unless (memq nil modifiers) + `(,keysym + ;; state for KeyPress event + ,(apply #'logior modifiers)))))) (defun xcb:keysyms:keysym->event (keysym &optional mask allow-modifiers) "Translate X Keysym KEYSYM into Emacs key event.