mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
ui/console-vc: report cursor position in the screen not in the scroll buffer
The format of the CSI cursor position report is `ESC[row;columnR`, where `row` is a row of a cursor in the screen, not in the scrollback buffer. What's the difference? Let's say the terminal screen has 24 lines, no matter how long the scrollback buffer may be, the last line is the 24th. For example the following command can be executed in xterm on the last screen line: $ echo -en '\e[6n'; IFS='[;' read -sdR _ row col; echo $row:$col 24:1 It shows the cursor position on the current screen and not relative to the backscroll buffer. Before this change the row number was always increasing for the QEMU VC and represents the cursor position relative to the backscroll buffer. Signed-off-by: Roman Penyaev <r.peniaev@gmail.com> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com> Cc: qemu-devel@nongnu.org Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-ID: <20250226075913.353676-4-r.peniaev@gmail.com>
This commit is contained in:
parent
0a9f48e9ea
commit
40339871da
1 changed files with 1 additions and 2 deletions
|
@ -827,8 +827,7 @@ static void vc_putchar(VCChardev *vc, int ch)
|
|||
case 6:
|
||||
/* report cursor position */
|
||||
response = g_strdup_printf("\033[%d;%dR",
|
||||
(s->y_base + s->y) % s->total_height + 1,
|
||||
s->x + 1);
|
||||
s->y + 1, s->x + 1);
|
||||
vc_respond_str(vc, response);
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue