branch: externals/xelb commit a8540a5a0891c2ade769f80c05c4c2b08279e71f Author: Chris Feng <chris.w.f...@gmail.com> Commit: Chris Feng <chris.w.f...@gmail.com>
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)