[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,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/xelb 5c7a8a9: Add necessary shift mask for event to KEYSYM conversion,
Chris Feng <=