diff options
| author | Ravi R Kiran <aine.marina@gmail.com> | 2021-10-11 01:50:14 (GMT) |
|---|---|---|
| committer | Ravi R Kiran <aine.marina@gmail.com> | 2021-10-11 01:50:14 (GMT) |
| commit | d3ae36ac7698949d760858f77e7fc89a03096caf (patch) | |
| tree | 6ebc6a2d4de2250addd9a7cb5106ac1921eccea5 /lisp/term/xterm-kitty.el | |
| parent | f3d1d00f31c72e300870cb3fbccf5ff772715698 (diff) | |
| download | dotemacs-d3ae36ac7698949d760858f77e7fc89a03096caf.zip dotemacs-d3ae36ac7698949d760858f77e7fc89a03096caf.tar.gz dotemacs-d3ae36ac7698949d760858f77e7fc89a03096caf.tar.bz2 | |
No xterm dependencies is kitty-keyboard-protocol
Diffstat (limited to 'lisp/term/xterm-kitty.el')
| -rw-r--r-- | lisp/term/xterm-kitty.el | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/lisp/term/xterm-kitty.el b/lisp/term/xterm-kitty.el index c1f79f5..a9b5b25 100644 --- a/lisp/term/xterm-kitty.el +++ b/lisp/term/xterm-kitty.el @@ -52,6 +52,26 @@ function is almost equivalent to 'event-convert-list'." (vector (kitty-kbp--add-modifier-list modifiers key)) default)) +(defun xterm-kitty--handle-escape-code (prompt) + "Handle keycode; PROMPT is ignored" + (let ((keyc (kitty-kbp--handle-escape-code prompt))) + (pcase keyc + (`(200 0 ?~) (xterm-translate-bracketed-paste nil)) + (`(0 0 ?I) (xterm-translate-focus-in nil)) + (`(0 0 ?O) (xterm-translate-focus-out nil)) + ((pred listp) (message "Unknown key: keycode %d, modifiers %d, suffix %s" + (car keyc) (cadr keyc) (string (caddr keyc)))) + (_ keyc)))) + +(defun xterm-kitty--setup-basic-keymap (kmap) + ;; Terminal mouse handling + (define-key kitty-kbp-basic-map "\e[200~" #'xterm-translate-bracketed-paste) + (define-key kitty-kbp-basic-map "\e[I" #'xterm-translate-focus-in) + (define-key kitty-kbp-basic-map "\e[O" #'xterm-translate-focus-out) + ;; (xterm-kitty--insert-decode-table kmap) + ;; (setq input-decode-map kitty-kbp-basic-map) + (xterm--push-map kitty-kbp-basic-map kmap)) + ;; To do: debug the reason that the table method does not work ;; - the table does not seem to be reflected in input-decode-map ;; - the table method is needed for those packages which advice @@ -69,15 +89,10 @@ function is almost equivalent to 'event-convert-list'." key-translation-map)))) (when kmap (unless keymap ; default keymap was used - (message "Applying xterm-kitty changes") - (send-string-to-terminal "\e[>1;u") - (push "\e[>1;u" (terminal-parameter nil 'tty-mode-set-strings)) - (push "\e[<u" (terminal-parameter nil 'tty-mode-reset-strings))) + (kitty-kbp-setup-terminal t)) (if xterm-kitty-use-table-method - ;; (xterm-kitty--insert-decode-table kmap) - (xterm--push-map kitty-kbp-basic-map kmap) - ;; (setq input-decode-map xterm-kitty-basic-map) - (define-key kmap kitty-kbp-escape-prefix #'kitty-kbp--handle-escape-code))) + (xterm-kitty--setup-basic-keymap kmap) + (define-key kmap kitty-kbp-escape-prefix #'xterm-kitty--handle-escape-code))) (when (and alternate-kmap) (xterm--push-map kitty-kbp-legacy-control-map alternate-kmap)))) |
