[Top][All Lists]

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

[elpa] externals/exwm 6b4bfad 2/2: Support key translation in line-mode

From: Chris Feng
Subject: [elpa] externals/exwm 6b4bfad 2/2: Support key translation in line-mode
Date: Sun, 14 Jan 2018 10:58:12 -0500 (EST)

branch: externals/exwm
commit 6b4bfad87bdf8b4cf13cdfb211ae6c8c24c415ff
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Support key translation in line-mode
    * exwm-input.el (exwm-input--translate): New function for translating
    keys according to `input-decode-map', `local-function-key-map' and
    (exwm-input--cache-event): Use it.
 exwm-input.el | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/exwm-input.el b/exwm-input.el
index 38fd751..54d0540 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -471,10 +471,25 @@ This value should always be overwritten.")
 (defvar exwm-input--temp-line-mode nil
   "Non-nil indicates it's in temporary line-mode for char-mode.")
+(cl-defun exwm-input--translate (key)
+  (let (translation)
+    (dolist (map (list input-decode-map
+                       local-function-key-map
+                       key-translation-map))
+      (setq translation (lookup-key map key))
+      (if (functionp translation)
+          (cl-return-from exwm-input--translate (funcall translation nil))
+        (when (vectorp translation)
+          (cl-return-from exwm-input--translate translation)))))
+  key)
 (defun exwm-input--cache-event (event)
   "Cache EVENT."
   (setq exwm-input--line-mode-cache
         (vconcat exwm-input--line-mode-cache (vector event)))
+  ;; Attempt to translate this key sequence.
+  (setq exwm-input--line-mode-cache
+        (exwm-input--translate exwm-input--line-mode-cache))
   ;; When the key sequence is complete.
   (unless (keymapp (key-binding exwm-input--line-mode-cache))
     (setq exwm-input--line-mode-cache nil)

reply via email to

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