aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjixiufeng <jixiufeng@luojilab.com>2018-11-08 14:31:43 +0800
committerLukas Fürmetz <fuermetz@mailbox.org>2018-11-11 21:18:41 +0100
commit4aa504f7bfdcfb9710bb4d2e305685b3979b1dc1 (patch)
treed05d2bb1df39e812d95d5e62537f7e6b4029113e
parentff9776bc487b2bf607398ccc3069944e6a33ce8a (diff)
make other keybinding with prefix like super- hyper- works.
-rw-r--r--vterm.el26
1 files changed, 25 insertions, 1 deletions
diff --git a/vterm.el b/vterm.el
index 7e5a259..fb2f2b8 100644
--- a/vterm.el
+++ b/vterm.el
@@ -129,12 +129,25 @@ be send to the terminal."
:sentinel #'ignore))))
;; Keybindings
-(define-key vterm-mode-map [t] #'vterm--self-insert)
+;; (define-key vterm-mode-map [t] #'vterm--self-insert)
(define-key vterm-mode-map [mouse-1] nil)
(define-key vterm-mode-map [mouse-2] nil)
(define-key vterm-mode-map [mouse-3] nil)
(define-key vterm-mode-map [mouse-4] #'ignore)
(define-key vterm-mode-map [mouse-5] #'ignore)
+(define-key vterm-mode-map [(tab)] #'vterm--self-insert)
+(define-key vterm-mode-map (kbd "TAB") #'vterm--self-insert)
+(define-key vterm-mode-map (kbd "<backspace>") #'vterm--self-insert)
+(define-key vterm-mode-map (kbd "M-<backspace>") #'vterm--self-insert)
+(define-key vterm-mode-map [left] #'vterm--self-insert)
+(define-key vterm-mode-map [right] #'vterm--self-insert)
+(define-key vterm-mode-map [up] #'vterm--self-insert)
+(define-key vterm-mode-map [down] #'vterm--self-insert)
+(define-key vterm-mode-map [home] #'vterm--self-insert)
+(define-key vterm-mode-map [end] #'vterm--self-insert)
+(define-key vterm-mode-map [escape] 'vterm--self-insert)
+(define-key vterm-mode-map [remap self-insert-command] 'vterm--self-insert)
+
(dolist (prefix '("M-" "C-"))
(dolist (char (cl-loop for char from ?a to ?z
collect char))
@@ -159,6 +172,17 @@ be send to the terminal."
(setq key (upcase key)))
(vterm--update vterm--term key shift meta ctrl)))))
+
+(defun vterm-send-key (key &optional shift meta ctrl)
+ "Sends key to libvterm."
+ (when vterm--term
+ (let* ((inhibit-redisplay t)
+ (inhibit-read-only t)
+ (key key))
+ (when (and shift (not meta) (not ctrl))
+ (setq key (upcase key)))
+ (vterm--update vterm--term key shift meta ctrl))))
+
(defun vterm ()
"Create a new vterm."
(interactive)