From: Eli Zaretskii Date: Thu, 26 Jan 2023 08:54:43 +0000 (+0200) Subject: Fix xt-mouse on terminals that report UTF-8 encoded coordinates X-Git-Tag: emacs-29.0.90~588 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f8c95d1a7681e861fc22d2a040cda0ddfe23eff4;p=emacs.git Fix xt-mouse on terminals that report UTF-8 encoded coordinates * lisp/xt-mouse.el (xterm-mouse--read-coordinate): Fix conversion of mouse coordinates in rxvt-unicode. Patches by Vladimir Panteleev and Jared Finder . (Bug#61022) --- diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index adfa480bc0f..4ccd35d5277 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el @@ -151,16 +151,22 @@ If `xterm-mouse-utf-8' was non-nil when `turn-on-xterm-mouse-tracking-on-terminal' was called, reads the coordinate as an UTF-8 code unit sequence; otherwise, reads a single byte." - (let ((previous-keyboard-coding-system (keyboard-coding-system))) + (let ((previous-keyboard-coding-system (keyboard-coding-system)) + (utf-8-p (terminal-parameter nil 'xterm-mouse-utf-8)) + ;; Prevent conversions inside 'read-char' due to input method, + ;; when we call 'read-char' below with 2nd argument non-nil. + (input-method-function nil)) (unwind-protect (progn - (set-keyboard-coding-system - (if (terminal-parameter nil 'xterm-mouse-utf-8) - 'utf-8-unix - 'no-conversion)) - ;; Wait only a little; we assume that the entire escape sequence - ;; has already been sent when this function is called. - (read-char nil nil 0.1)) + (set-keyboard-coding-system (if utf-8-p 'utf-8-unix 'no-conversion)) + (read-char nil + ;; Force 'read-char' to decode UTF-8 sequences if + ;; 'xterm-mouse-utf-8' is non-nil. + utf-8-p + ;; Wait only a little; we assume that the entire + ;; escape sequence has already been sent when + ;; this function is called. + 0.1)) (set-keyboard-coding-system previous-keyboard-coding-system)))) ;; In default mode, each numeric parameter of XTerm's mouse report is