summaryrefslogtreecommitdiffstats
path: root/lisp/term/xterm-kitty.el
diff options
context:
space:
mode:
authorRavi R Kiran <aine.marina@gmail.com>2021-10-11 01:50:14 (GMT)
committerRavi R Kiran <aine.marina@gmail.com>2021-10-11 01:50:14 (GMT)
commitd3ae36ac7698949d760858f77e7fc89a03096caf (patch)
tree6ebc6a2d4de2250addd9a7cb5106ac1921eccea5 /lisp/term/xterm-kitty.el
parentf3d1d00f31c72e300870cb3fbccf5ff772715698 (diff)
downloaddotemacs-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.el31
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))))