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

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

[elpa] externals/xelb 5c7a8a9: Add necessary shift mask for event to KEY


From: Chris Feng
Subject: [elpa] externals/xelb 5c7a8a9: Add necessary shift mask for event to KEYSYM conversion
Date: Fri, 30 Oct 2015 09:31:14 +0000

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

    Add necessary shift mask for event to KEYSYM conversion
    
    * xcb-keysyms.el (xcb:keysyms:event->keysym): Add necessary shift mask
      (required by characters like 'address@hidden' on US keyboard).
      (xcb:keysyms:event->keysym, xcb:keysyms:keysym->event): Turned into
      methods of xcb:connection.
      (xcb:keysyms:update-modifier-mapping): Use new calling conventions.
---
 xcb-keysyms.el |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/xcb-keysyms.el b/xcb-keysyms.el
index 3b59238..808bf4b 100644
--- a/xcb-keysyms.el
+++ b/xcb-keysyms.el
@@ -109,7 +109,8 @@ This method must be called before using any other method in 
this module."
                    (setq keysym (xcb:keysyms:keycode->keysym obj keycode 0)))
           (setq events
                 (nconc events
-                       (list (xcb:keysyms:keysym->event keysym nil t))))))
+                       (list (xcb:keysyms:keysym->event exwm--connection
+                                                        keysym nil t))))))
       (cond ((memq 'mode-switch* events)
              (setq xcb:keysyms:mode-switch-mask (elt mode-masks i)))
             ((memq 'kp-numlock events)
@@ -330,7 +331,7 @@ SHIFT LOCK is ignored."
         ,@(make-list 64 nil)]
   "Emacs event representations of XF86keysym (#x1008ff00 - #x1008ffff)")
 
-(defun xcb:keysyms:event->keysym (event)
+(cl-defmethod xcb:keysyms:event->keysym ((obj xcb:connection) event)
   "Translate Emacs key event EVENT to X Keysym.
 
 This function returns nil when it fails to convert an event."
@@ -363,6 +364,11 @@ This function returns nil when it fails to convert an 
event."
         (when (<= #x100 event #x10ffff) ;Unicode
           (setq keysym (+ #x1000000 event)))))
     (when keysym
+      (let ((keycode (xcb:keysyms:keysym->keycode obj keysym))
+            (keysyms (plist-get (slot-value obj 'extra-plist) 'keysyms)))
+        (unless (equal keysym (cdr (assoc keycode keysyms)))
+          ;; Shift key is required to input the KEYSYM
+          (cl-pushnew 'shift modifiers)))
       (setq modifiers
             (mapcar (lambda (i)
                       (pcase i
@@ -381,7 +387,8 @@ This function returns nil when it fails to convert an 
event."
           ;; state for KeyPress event
           ,(apply #'logior modifiers))))))
 
-(defun xcb:keysyms:keysym->event (keysym &optional mask allow-modifiers)
+(cl-defmethod xcb:keysyms:keysym->event ((obj xcb:connection) keysym
+                                         &optional mask allow-modifiers)
   "Translate X Keysym KEYSYM into Emacs key event.
 
 One may use MASK to provide modifier keys.  If ALLOW-MODIFIERS is non-nil,



reply via email to

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