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 <git@cy.md> and Jared Finder <jared@finder.org>. (Bug#61022)
This commit is contained in:
parent
4bf7cb71ed
commit
f8c95d1a76
1 changed files with 14 additions and 8 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue