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

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

[elpa] externals/xelb ae7da13 40/42: Add support for XF86 keysyms


From: Chris Feng
Subject: [elpa] externals/xelb ae7da13 40/42: Add support for XF86 keysyms
Date: Thu, 17 Sep 2015 23:16:52 +0000

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

    Add support for XF86 keysyms
    
    * xcb-keysyms.el: new vector xcb:keysyms:-xf86-keys
    * xcb-keysyms.el (xcb:keysyms:event->keysym, xcb:keysyms:keysym->event): add
      support for XF86 keysyms
---
 xcb-keysyms.el |   73 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 68 insertions(+), 5 deletions(-)

diff --git a/xcb-keysyms.el b/xcb-keysyms.el
index 91b293b..a4c795f 100644
--- a/xcb-keysyms.el
+++ b/xcb-keysyms.el
@@ -240,6 +240,63 @@ SHIFT LOCK is ignored."
     ,@(make-list 15 nil) delete]
   "Emacs event representations of X function keys (keysym #xff00 to #xffff).")
 
+;; This list is adapted from 'XF86keysym.h' in X source.
+;; FIXME: We've intentionally left out keysyms outside the range 0x1008FF00 ~
+;;        0x1008FFFF.
+;; REVIEW: Could anybody verify this list?
+(defconst xcb:keysyms:-xf86-keys
+  `[                                    ;#x1008ff00 - #x1008ff0f
+    nil XF86ModeLock XF86MonBrightnessUp XF86MonBrightnessDown
+        XF86KbdLightOnOff XF86KbdBrightnessUp XF86KbdBrightnessDown
+        ,@(make-list 9 0)
+                                        ;#x1008ff10 - #x1008ff1f
+        XF86Standby XF86AudioLowerVolume XF86AudioMute XF86AudioRaiseVolume
+        XF86AudioPlay XF86AudioStop XF86AudioPrev XF86AudioNext XF86HomePage
+        XF86Mail XF86Start XF86Search XF86AudioRecord XF86Calculator XF86Memo
+        XF86ToDoList
+                                        ;#x1008ff20 - #x1008ff2f
+        XF86Calendar XF86PowerDown XF86ContrastAdjust XF86RockerUp
+        XF86RockerDown XF86RockerEnter XF86Back XF86Forward XF86Stop
+        XF86Refresh XF86PowerOff XF86WakeUp XF86Eject XF86ScreenSaver XF86WWW
+        XF86Sleep
+                                        ;#x1008ff30 - #x1008ff3f
+        XF86Favorites XF86AudioPause XF86AudioMedia XF86MyComputer
+        XF86VendorHome XF86LightBulb XF86Shop XF86History XF86OpenURL
+        XF86AddFavorite XF86HotLinks XF86BrightnessAdjust XF86Finance
+        XF86Community XF86AudioRewind XF86BackForward
+                                        ;#x1008ff40 - #x1008ff4f
+        XF86Launch0 XF86Launch1 XF86Launch2 XF86Launch3 XF86Launch4 XF86Launch5
+        XF86Launch6 XF86Launch7 XF86Launch8 XF86Launch9 XF86LaunchA XF86LaunchB
+        XF86LaunchC XF86LaunchD XF86LaunchE XF86LaunchF
+                                        ;#x1008ff50 - #x1008ff5f
+        XF86ApplicationLeft XF86ApplicationRight XF86Book XF86CD XF86Calculater
+        XF86Clear XF86Close XF86Copy XF86Cut XF86Display XF86DOS XF86Documents
+        XF86Excel XF86Explorer XF86Game XF86Go
+                                        ;#x1008ff60 - #x1008ff6f
+        XF86iTouch XF86LogOff XF86Market XF86Meeting nil XF86MenuKB XF86MenuPB
+        XF86MySites XF86New XF86News XF86OfficeHome XF86Open XF86Option
+        XF86Paste XF86Phone nil
+                                        ;#x1008ff70 - #x1008ff7f
+        XF86Q nil XF86Reply XF86Reload XF86RotateWindows XF86RotationPB
+        XF86RotationKB XF86Save XF86ScrollUp XF86ScrollDown XF86ScrollClick
+        XF86Send XF86Spell XF86SplitScreen XF86Support XF86TaskPane
+                                        ;#x1008ff80 - #x1008ff8f
+        XF86Terminal XF86Tools XF86Travel nil XF86UserPB XF86User1KB
+        XF86User2KB XF86Video XF86WheelButton XF86Word XF86Xfer XF86ZoomIn
+        XF86ZoomOut XF86Away XF86Messenger XF86WebCam
+                                        ;#x1008ff90 - #x1008ff9f
+        XF86MailForward XF86Pictures XF86Music XF86Battery XF86Bluetooth
+        XF86WLAN XF86UWB XF86AudioForward XF86AudioRepeat XF86AudioRandomPlay
+        XF86Subtitle XF86AudioCycleTrack XF86CycleAngle XF86FrameBack
+        XF86FrameForward XF86Time
+                                        ;#x1008ffa0 - #x1008ffaf
+        XF86Select XF86View XF86TopMenu XF86Red XF86Green XF86Yellow XF86Blue
+        XF86Suspend XF86Hibernate XF86TouchpadToggle ,@(make-list 6 0)
+                                        ;#x1008ffb0 - #x1008ffbf
+        XF86TouchpadOn XF86TouchpadOff XF86AudioMicMute ,@(make-list 13 0)
+                                        ;everything rest
+        ,@(make-list 64 0)])
+
 (defun xcb:keysyms:event->keysym (event)
   "Translate Emacs key event EVENT to X Keysym.
 
@@ -255,15 +312,19 @@ This function returns nil when it fails to convert an 
event."
                 (`mouse-3 xcb:ButtonIndex:3)
                 (`mouse-4 xcb:ButtonIndex:4)
                 (`mouse-5 xcb:ButtonIndex:5)
-                ;; Function keys
-                (_ (cl-position event xcb:keysyms:-function-keys))))
+                (_ (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 (and (<= #x20 event) (>= #xff event)) ;Latin-1
           (setq keysym event)
         (when (and (<= #x100 event) (>= #x10ffff event)) ;Unicode
           (setq keysym (+ #x1000000 event)))))
     (when keysym
-      (when (and (not (integerp event)) (< 5 keysym))
-        (setq keysym (logior keysym #xff00)))
       `(,keysym
         ;; state for KeyPress event
         ,(apply #'logior
@@ -292,7 +353,9 @@ this function will also return symbols for pure modifiers 
keys."
                      ((and (<= #x1000100 keysym) (>= #x110ffff keysym))
                       (- keysym #x1000000))
                      ((and (<= 1 keysym) (>= 5 keysym)) ;ButtonPress assuemd
-                      (intern-soft (format "down-mouse-%d" keysym))))))
+                      (intern-soft (format "down-mouse-%d" keysym)))
+                     ((and (<= #x1008ff00) (>= #x1008ffff))
+                      (aref xcb:keysyms:-xf86-keys (logand keysym #xff))))))
     (when (and (not allow-modifiers)
                (memq event
                      '(lshift* rshift* lcontrol* rcontrol*



reply via email to

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