diff options
Diffstat (limited to 'vterm.el')
| -rw-r--r-- | vterm.el | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -163,6 +163,7 @@ for different shell" ;; Keybindings (define-key vterm-mode-map [tab] #'vterm--self-insert) +(define-key vterm-mode-map [backtab] #'vterm--self-insert) (define-key vterm-mode-map [backspace] #'vterm--self-insert) (define-key vterm-mode-map [M-backspace] #'vterm--self-insert) (define-key vterm-mode-map [return] #'vterm--self-insert) @@ -194,6 +195,15 @@ for different shell" unless (member key vterm-keymap-exceptions) collect key)))) +(defun vterm-event-basic-type (event) + "Same as `event-basic-type', except the downcasing of EVENT." + (if (consp event) + (setq event (car event))) + (if (symbolp event) + (car (get event 'event-symbol-elements)) + (let* ((base (logand event (1- ?\A-\^@)))) + (if (< base 32) (logior base 64) base)))) + (defun vterm--self-insert () "Sends invoking key to libvterm." (interactive) @@ -202,7 +212,7 @@ for different shell" (shift (memq 'shift modifiers)) (meta (memq 'meta modifiers)) (ctrl (memq 'control modifiers))) - (when-let ((key (key-description (vector (event-basic-type last-input-event))))) + (when-let ((key (key-description (vector (vterm-event-basic-type last-input-event))))) (vterm-send-key key shift meta ctrl))))) (defun vterm-send-key (key &optional shift meta ctrl) @@ -210,8 +220,6 @@ for different shell" (when vterm--term (let ((inhibit-redisplay t) (inhibit-read-only t)) - (when (and shift (not meta) (not ctrl)) - (setq key (upcase key))) (vterm--update vterm--term key shift meta ctrl)))) (defun vterm-send-ctrl-c () |
