Function: turn-on-xterm-mouse-tracking-on-terminal
turn-on-xterm-mouse-tracking-on-terminal is a byte-compiled function
defined in xt-mouse.el.gz.
Signature
(turn-on-xterm-mouse-tracking-on-terminal &optional TERMINAL)
Documentation
Enable xterm mouse tracking on TERMINAL.
Source Code
;; Defined in /usr/src/emacs/lisp/xt-mouse.el.gz
(defun turn-on-xterm-mouse-tracking-on-terminal (&optional terminal)
"Enable xterm mouse tracking on TERMINAL."
(when (and xterm-mouse-mode (eq t (terminal-live-p terminal))
;; Avoid the initial terminal which is not a termcap device.
;; FIXME: is there more elegant way to detect the initial
;; terminal?
(not (string= (terminal-name terminal) "initial_terminal")))
(unless (terminal-parameter terminal 'xterm-mouse-mode)
;; Simulate selecting a terminal by selecting one of its frames
;; so that we can set the terminal-local `input-decode-map'.
;; Use the tty-top-frame to avoid accidentally making an invisible
;; child frame visible by selecting it (bug#79960).
;; The test for match mode is here because xt-mouse-tests run in
;; match mode, and there is no top-frame in that case.
(with-selected-frame (if noninteractive
(car (frame-list))
(tty-top-frame terminal))
(define-key input-decode-map "\e[M" 'xterm-mouse-translate)
(define-key input-decode-map "\e[<" 'xterm-mouse-translate-extended))
(let ((enable (xterm-mouse-tracking-enable-sequence))
(disable (xterm-mouse-tracking-disable-sequence)))
(condition-case err
(send-string-to-terminal enable terminal)
;; FIXME: This should use a dedicated error signal.
(error (if (equal (cadr err) "Terminal is currently suspended")
nil ; The sequence will be sent upon resume.
(signal (car err) (cdr err)))))
(push enable (terminal-parameter nil 'tty-mode-set-strings))
(push disable (terminal-parameter nil 'tty-mode-reset-strings))
(set-terminal-parameter terminal 'xterm-mouse-mode t)
(set-terminal-parameter terminal 'xterm-mouse-utf-8
xterm-mouse-utf-8)))))