emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/xelb c1d4e31: Handle missing modifier keys when convert


From: Chris Feng
Subject: [elpa] externals/xelb c1d4e31: Handle missing modifier keys when converting event to keysym
Date: Thu, 29 Oct 2015 04:24:15 +0000

branch: externals/xelb
commit c1d4e31abc7b9d1f8ff84231d285d73b39c5e0f3
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]