[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
`key-translation-map'.
(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)