[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/xelb 600b825 09/10: Support system-specific and legacy
From: |
Chris Feng |
Subject: |
[elpa] externals/xelb 600b825 09/10: Support system-specific and legacy keysyms |
Date: |
Fri, 29 Jul 2016 09:15:58 +0000 (UTC) |
branch: externals/xelb
commit 600b82540d7f5c24b415d56a6612a5cea3577bb8
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Support system-specific and legacy keysyms
* xcb-keysyms.el (xcb:keysyms:event->keysym, xcb:keysyms:keysym->event):
Also search `system-key-alist' and `x-keysym-table' for system-specific
and legacy keysyms respectively.
---
xcb-keysyms.el | 59 +++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 39 insertions(+), 20 deletions(-)
diff --git a/xcb-keysyms.el b/xcb-keysyms.el
index a32d8b3..5db181d 100644
--- a/xcb-keysyms.el
+++ b/xcb-keysyms.el
@@ -419,8 +419,6 @@ Return 0 if conversion fails."
0)))
;; This list is largely base on 'lispy_function_keys' in 'keyboard.c'.
-;; Emacs has a built-in variable `x-keysym-table' providing Latin-1 and legacy
-;; keysyms, which seems not very useful here.
(defconst xcb:keysyms:-function-keys
`[ ;#xff00 - #xff0f
,@(make-list 8 nil) backspace tab linefeed clear nil return nil nil
@@ -558,23 +556,39 @@ Return (0 . 0) when conversion fails."
(`mouse-3 xcb:ButtonIndex:3)
(`mouse-4 xcb:ButtonIndex:4)
(`mouse-5 xcb:ButtonIndex:5)
- (_ (if (setq keysym (cl-position event
- xcb:keysyms:-function-keys))
- ;; Function keys
- (logior keysym #xff00)
- (if (setq keysym (cl-position event
- xcb:keysyms:-xf86-keys))
- ;; XF86 keys
- (logior keysym #x1008ff00)
- (if (setq keysym
- (cl-position event
- xcb:keysyms:-iso-function-keys))
- ;; ISO function keys
- (logior keysym #xfe00)))))))
- (if (<= #x20 event #xff) ;Latin-1
- (setq keysym event)
- (when (<= #x100 event #x10ffff) ;Unicode
- (setq keysym (+ #x1000000 event)))))
+ (_
+ (cond
+ ((setq keysym (cl-position event
+ xcb:keysyms:-function-keys))
+ ;; Function keys.
+ (logior keysym #xff00))
+ ((setq keysym (cl-position event xcb:keysyms:-xf86-keys))
+ ;; XF86 keys.
+ (logior keysym #x1008ff00))
+ ((setq keysym (cl-position event
+ xcb:keysyms:-iso-function-keys))
+ ;; ISO function keys.
+ (logior keysym #xfe00))
+ (t
+ ;; Finally try system-specific keysyms.
+ (car (rassq event system-key-alist)))))))
+ (setq keysym
+ (cond
+ ((<= #x20 event #xff)
+ ;; Latin-1.
+ event)
+ ((<= #x100 event #x10ffff)
+ ;; Unicode.
+ (+ #x1000000 event))
+ (t (or
+ ;; Try system-specific keysyms.
+ (car (rassq event system-key-alist))
+ ;; Try legacy keysyms.
+ (catch 'break
+ (maphash (lambda (key val)
+ (when (= event val)
+ (throw 'break key)))
+ x-keysym-table)))))))
(if (not keysym)
'(0 . 0)
(let ((keycode (xcb:keysyms:keysym->keycode obj keysym))
@@ -630,7 +644,12 @@ this function will also return symbols for pure modifiers
keys."
(aref xcb:keysyms:-xf86-keys (logand keysym #xff)))
((<= #xfe00 keysym #xfeff)
(aref xcb:keysyms:-iso-function-keys
- (logand keysym #xff)))))
+ (logand keysym #xff)))
+ (t (or
+ ;; Search system-specific keysyms.
+ (car (assq keysym system-key-alist))
+ ;; Search `x-keysym-table' for legacy keysyms.
+ (gethash keysym x-keysym-table)))))
mod-alt mod-meta mod-hyper mod-super)
(when event
(if allow-modifiers
- [elpa] externals/xelb updated (e58ac74 -> f5216dc), Chris Feng, 2016/07/29
- [elpa] externals/xelb bddad0e 04/10: Eliminate compile warnings for Emacs 24, Chris Feng, 2016/07/29
- [elpa] externals/xelb b1e83e8 05/10: Fix extension event number, Chris Feng, 2016/07/29
- [elpa] externals/xelb eee1348 03/10: Precompute the size of <union>, Chris Feng, 2016/07/29
- [elpa] externals/xelb 2f9c5e5 01/10: Enable XKB module, Chris Feng, 2016/07/29
- [elpa] externals/xelb 39d4efb 07/10: Set XKB per-client flags, Chris Feng, 2016/07/29
- [elpa] externals/xelb 600b825 09/10: Support system-specific and legacy keysyms,
Chris Feng <=
- [elpa] externals/xelb 9089f9c 08/10: Use numerical keysyms and mod-masks, Chris Feng, 2016/07/29
- [elpa] externals/xelb d7d1115 06/10: Adapt 'xcb-keysyms' library to use XKB, Chris Feng, 2016/07/29
- [elpa] externals/xelb 9a73b79 02/10: Fix issues with <switch>, Chris Feng, 2016/07/29
- [elpa] externals/xelb f5216dc 10/10: Merge branch 'feat/xkb' into externals/xelb, Chris Feng, 2016/07/29