vt(4): Add PIO_VFONT_DEFAULT ioctl to restore the default builtin font
To restore the default font using vidcontrol(1), use the "-f" flag without an argument: vidcontrol -f < /dev/ttyv0 PR: 193910 Differential Revision: https://reviews.freebsd.org/D971 Submitted by: Marcin Cieslak <saper@saper.info> Reviewed by: ray@, emaste@ Approved by: ray@ MFC after: 1 week
This commit is contained in:
parent
7c8e3a7f48
commit
069f1c256a
@ -2218,6 +2218,11 @@ vtterm_ioctl(struct terminal *tm, u_long cmd, caddr_t data,
|
|||||||
vtfont_unref(vf);
|
vtfont_unref(vf);
|
||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
case PIO_VFONT_DEFAULT: {
|
||||||
|
/* Reset to default font. */
|
||||||
|
error = vt_change_font(vw, &vt_font_default);
|
||||||
|
return (error);
|
||||||
|
}
|
||||||
case GIO_SCRNMAP: {
|
case GIO_SCRNMAP: {
|
||||||
scrmap_t *sm = (scrmap_t *)data;
|
scrmap_t *sm = (scrmap_t *)data;
|
||||||
|
|
||||||
|
@ -239,6 +239,7 @@ typedef struct vfnt vfnt_t;
|
|||||||
#define GIO_FONT8x16 _IOR('c', 69, fnt16_t)
|
#define GIO_FONT8x16 _IOR('c', 69, fnt16_t)
|
||||||
#define PIO_VFONT _IOW('c', 70, vfnt_t)
|
#define PIO_VFONT _IOW('c', 70, vfnt_t)
|
||||||
#define GIO_VFONT _IOR('c', 71, vfnt_t)
|
#define GIO_VFONT _IOR('c', 71, vfnt_t)
|
||||||
|
#define PIO_VFONT_DEFAULT _IO('c', 72)
|
||||||
|
|
||||||
/* get video mode information */
|
/* get video mode information */
|
||||||
struct colors {
|
struct colors {
|
||||||
|
@ -26,9 +26,11 @@
|
|||||||
.Op Fl c Ar appearance
|
.Op Fl c Ar appearance
|
||||||
.Oo
|
.Oo
|
||||||
.Fl f
|
.Fl f
|
||||||
|
.Oo
|
||||||
.Op Ar size
|
.Op Ar size
|
||||||
.Ar file
|
.Ar file
|
||||||
.Oc
|
.Oc
|
||||||
|
.Oc
|
||||||
.Op Fl g Ar geometry
|
.Op Fl g Ar geometry
|
||||||
.Op Fl h Ar size
|
.Op Fl h Ar size
|
||||||
.Op Fl i Cm adapter | mode
|
.Op Fl i Cm adapter | mode
|
||||||
@ -136,8 +138,10 @@ The latter is actually a simulation.
|
|||||||
Print out current output screen map.
|
Print out current output screen map.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Fl f
|
.Fl f
|
||||||
|
.Oo
|
||||||
.Op Ar size
|
.Op Ar size
|
||||||
.Ar file
|
.Ar file
|
||||||
|
.Oc
|
||||||
.Xc
|
.Xc
|
||||||
Load font
|
Load font
|
||||||
.Ar file
|
.Ar file
|
||||||
@ -158,6 +162,14 @@ may be omitted, in this case
|
|||||||
.Nm
|
.Nm
|
||||||
will try to guess it from the size of font file.
|
will try to guess it from the size of font file.
|
||||||
.Pp
|
.Pp
|
||||||
|
When using
|
||||||
|
.Xr vt 4
|
||||||
|
both
|
||||||
|
.Ar size
|
||||||
|
and
|
||||||
|
.Ar font
|
||||||
|
can be omitted, and the default font will be loaded.
|
||||||
|
.Pp
|
||||||
Note that older video cards, such as MDA and CGA, do not support
|
Note that older video cards, such as MDA and CGA, do not support
|
||||||
software font.
|
software font.
|
||||||
See also
|
See also
|
||||||
|
@ -197,7 +197,7 @@ usage(void)
|
|||||||
{
|
{
|
||||||
if (vt4_mode)
|
if (vt4_mode)
|
||||||
fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n",
|
fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n",
|
||||||
"usage: vidcontrol [-CHPpx] [-b color] [-c appearance] [-f [size] file]",
|
"usage: vidcontrol [-CHPpx] [-b color] [-c appearance] [-f [[size] file]]",
|
||||||
" [-g geometry] [-h size] [-i adapter | mode]",
|
" [-g geometry] [-h size] [-i adapter | mode]",
|
||||||
" [-M char] [-m on | off] [-r foreground background]",
|
" [-M char] [-m on | off] [-r foreground background]",
|
||||||
" [-S on | off] [-s number] [-T xterm | cons25] [-t N | off]",
|
" [-S on | off] [-s number] [-T xterm | cons25] [-t N | off]",
|
||||||
@ -409,6 +409,19 @@ load_vt4mappingtable(unsigned int nmappings, FILE *f)
|
|||||||
return (t);
|
return (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the default vt font.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
load_default_vt4font(void)
|
||||||
|
{
|
||||||
|
if (ioctl(0, PIO_VFONT_DEFAULT) == -1) {
|
||||||
|
revert();
|
||||||
|
errc(1, errno, "loading default vt font");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
load_vt4font(FILE *f)
|
load_vt4font(FILE *f)
|
||||||
{
|
{
|
||||||
@ -1328,7 +1341,7 @@ main(int argc, char **argv)
|
|||||||
dumpopt = DUMP_FBF;
|
dumpopt = DUMP_FBF;
|
||||||
termmode = NULL;
|
termmode = NULL;
|
||||||
if (vt4_mode)
|
if (vt4_mode)
|
||||||
opts = "b:Cc:f:g:h:Hi:M:m:pPr:S:s:T:t:x";
|
opts = "b:Cc:fg:h:Hi:M:m:pPr:S:s:T:t:x";
|
||||||
else
|
else
|
||||||
opts = "b:Cc:df:g:h:Hi:l:LM:m:pPr:S:s:T:t:x";
|
opts = "b:Cc:df:g:h:Hi:l:LM:m:pPr:S:s:T:t:x";
|
||||||
|
|
||||||
@ -1349,15 +1362,23 @@ main(int argc, char **argv)
|
|||||||
print_scrnmap();
|
print_scrnmap();
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
type = optarg;
|
optarg = nextarg(argc, argv, &optind, 'f', 0);
|
||||||
font = nextarg(argc, argv, &optind, 'f', 0);
|
if (optarg != NULL) {
|
||||||
|
font = nextarg(argc, argv, &optind, 'f', 0);
|
||||||
|
|
||||||
if (font == NULL) {
|
if (font == NULL) {
|
||||||
type = NULL;
|
type = NULL;
|
||||||
font = optarg;
|
font = optarg;
|
||||||
|
} else
|
||||||
|
type = optarg;
|
||||||
|
|
||||||
|
load_font(type, font);
|
||||||
|
} else {
|
||||||
|
if (!vt4_mode)
|
||||||
|
usage(); /* Switch syscons to ROM? */
|
||||||
|
|
||||||
|
load_default_vt4font();
|
||||||
}
|
}
|
||||||
|
|
||||||
load_font(type, font);
|
|
||||||
break;
|
break;
|
||||||
case 'g':
|
case 'g':
|
||||||
if (sscanf(optarg, "%dx%d",
|
if (sscanf(optarg, "%dx%d",
|
||||||
|
Loading…
Reference in New Issue
Block a user