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

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

[elpa] externals/xelb a8540a5: Handle MappingNotfiy event


From: Chris Feng
Subject: [elpa] externals/xelb a8540a5: Handle MappingNotfiy event
Date: Sun, 07 Feb 2016 11:45:32 +0000

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

    Handle MappingNotfiy event
    
    * xcb-keysyms.el (xcb:keysyms:init): Update keyboard/modifier mapping on
    MappingNotfiy event.
---
 xcb-keysyms.el |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/xcb-keysyms.el b/xcb-keysyms.el
index f525c6f..ad4e145 100644
--- a/xcb-keysyms.el
+++ b/xcb-keysyms.el
@@ -63,7 +63,24 @@ This method must be called before using any other method in 
this module."
                                          min-keycode
                                          (1+ (- max-keycode min-keycode)))
     (unless xcb:keysyms:meta-mask     ;avoid duplicated initialization
-      (xcb:keysyms:update-modifier-mapping obj))))
+      (xcb:keysyms:update-modifier-mapping obj)
+      ;; Update on MappingNotify event.
+      (xcb:+event obj 'xcb:MappingNotify
+                  `(lambda (data _)
+                     (let ((obj1 (make-instance 'xcb:MappingNotify)))
+                       (xcb:unmarshal obj1 data)
+                       (with-slots (request first-keycode count) obj1
+                         (cond
+                          ((= request xcb:Mapping:Modifier)
+                           ;; Modifier keys changed
+                           (xcb:-log "Update modifier mapping")
+                           (xcb:keysyms:update-modifier-mapping ,obj))
+                          ((= request xcb:Mapping:Keyboard)
+                           ;; Update changed keys
+                           (xcb:-log "Update keyboard mapping: %s - %s"
+                                     first-keycode (+ first-keycode count -1))
+                           (xcb:keysyms:update-keyboard-mapping
+                            ,obj first-keycode count))))))))))
 
 (cl-defmethod xcb:keysyms:update-keyboard-mapping ((obj xcb:connection)
                                                    first-keycode count)



reply via email to

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