On Mon, Sep 28, 2026 at 10:55:24AM +0200, Thomas Zimmermann wrote: > Cursors in the VT subsystem are blocks within a character cell that are > filled with the foreground color. The new helpers vc_cursor_start() and > vc_cursor_end() return the scanlines in which the cursor block starts rsp. > ends. This is compatible with VGA hardware. > > In terms of cursor design, the new cursor-size helpers follow established > styles in fbcon. The only exception is in underline cursors for fonts with > a size larger than 10. The underlining dash is now one pixel closer to > the font-glyph data, so that the cursor looks less detached. This follows > the style used by vgacon. > > Users control the cursor size with the vt module's parameter cur_default > or with the ESC sequence \e[?Nc, where N is the cursor-size constant. In > case of an invalid setting, the new helpers fall back to cur_default and > then underline cursors; in this order. > > Similar code in vgacon and fbcon ignores the cursor's default size stored > in vt.cur_default. The consoles default to full-block cursors, while vt > defaults to underline cursors. VGA BIOSes also tend to use underline by. > default. Upon initialization vt applies its default to the console, but > each console might fall back to it own default. For example, running the > ESC code from above with the invalid constant of 8 magically flips the > cursor from underline to block size on vgacon. Another call with N set > to 0 (i.e., default) magically flips it back to underlyine. Making > underline the new default everywhere harmonizes vt, fbcon and most VGA > BIOSes. > > v3: > - mention user interfaces to control cursor size in commit message (GregKH) > - elaborate defaults (GregKH) > - move retry logic into helper > - handle CUR_DEF > v2: > - export non-font interface for vgacon > - avoid interference from concurrent user space (Sashiko) > - fix function docs (Sashiko) > > Signed-off-by: Thomas Zimmermann <[email protected]> > Reviewed-by: Helge Deller <[email protected]> > --- > drivers/tty/vt/vt.c | 104 +++++++++++++++++++++++++++++++++ > include/linux/console_struct.h | 7 +++ > 2 files changed, 111 insertions(+)
Acked-by: Greg Kroah-Hartman <[email protected]>
