diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:40:15 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:40:15 +0000 |
commit | 399644e47874bff147afb19c89228901ac39340e (patch) | |
tree | 1c4c0b733f4c16b5783b41bebb19194a9ef62ad1 /man4/vcs.4 | |
parent | Initial commit. (diff) | |
download | manpages-399644e47874bff147afb19c89228901ac39340e.tar.xz manpages-399644e47874bff147afb19c89228901ac39340e.zip |
Adding upstream version 6.05.01.upstream/6.05.01
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man4/vcs.4')
-rw-r--r-- | man4/vcs.4 | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/man4/vcs.4 b/man4/vcs.4 new file mode 100644 index 0000000..3aa3523 --- /dev/null +++ b/man4/vcs.4 @@ -0,0 +1,172 @@ +.\" Copyright (c) 1995 James R. Van Zandt <jrv@vanzandt.mv.com> +.\" Sat Feb 18 09:11:07 EST 1995 +.\" +.\" SPDX-License-Identifier: GPL-2.0-or-later +.\" +.\" Modified, Sun Feb 26 15:08:05 1995, faith@cs.unc.edu +.\" 2007-12-17, Samuel Thibault <samuel.thibault@ens-lyon.org>: +.\" document the VT_GETHIFONTMASK ioctl +.\" " +.TH vcs 4 2023-05-03 "Linux man-pages 6.05.01" +.SH NAME +vcs, vcsa \- virtual console memory +.SH DESCRIPTION +.I /dev/vcs0 +is a character device with major number 7 and minor number +0, usually with mode 0644 and ownership root:tty. +It refers to the memory of the currently +displayed virtual console terminal. +.PP +.I /dev/vcs[1\-63] +are character devices for virtual console +terminals, they have major number 7 and minor number 1 to 63, usually +mode 0644 and ownership root:tty. +.I /dev/vcsa[0\-63] +are the same, but +using +.IR "unsigned short" s +(in host byte order) that include attributes, +and prefixed with four bytes giving the screen +dimensions and cursor position: +.IR lines , +.IR columns , +.IR x , +.IR y . +.RI ( x += +.I y += 0 at the top left corner of the screen.) +.PP +When a 512-character font is loaded, +the 9th bit position can be fetched by applying the +.BR ioctl (2) +.B VT_GETHIFONTMASK +operation +(available since Linux 2.6.18) +on +.IR /dev/tty[1\-63] ; +the value is returned in the +.I "unsigned short" +pointed to by the third +.BR ioctl (2) +argument. +.PP +These devices replace the screendump +.BR ioctl (2) +operations of +.BR ioctl_console (2), +so the system +administrator can control access using filesystem permissions. +.PP +The devices for the first eight virtual consoles may be created by: +.PP +.in +4n +.EX +for x in 0 1 2 3 4 5 6 7 8; do + mknod \-m 644 /dev/vcs$x c 7 $x; + mknod \-m 644 /dev/vcsa$x c 7 $[$x+128]; +done +chown root:tty /dev/vcs* +.EE +.in +.PP +No +.BR ioctl (2) +requests are supported. +.SH FILES +.I /dev/vcs[0\-63] +.br +.I /dev/vcsa[0\-63] +.\" .SH AUTHOR +.\" Andries Brouwer <aeb@cwi.nl> +.SH VERSIONS +Introduced with Linux 1.1.92. +.SH EXAMPLES +You may do a screendump on vt3 by switching to vt1 and typing +.PP +.in +4n +.EX +cat /dev/vcs3 >foo +.EE +.in +.PP +Note that the output does not contain +newline characters, so some processing may be required, like +in +.PP +.in +4n +.EX +fold \-w 81 /dev/vcs3 | lpr +.EE +.in +.PP +or (horrors) +.PP +.in +4n +.EX +setterm \-dump 3 \-file /proc/self/fd/1 +.EE +.in +.PP +The +.I /dev/vcsa0 +device is used for Braille support. +.PP +This program displays the character and screen attributes under the +cursor of the second virtual console, then changes the background color +there: +.PP +.EX +#include <unistd.h> +#include <stdlib.h> +#include <stdio.h> +#include <fcntl.h> +#include <sys/ioctl.h> +#include <linux/vt.h> +\& +int +main(void) +{ + int fd; + char *device = "/dev/vcsa2"; + char *console = "/dev/tty2"; + struct {unsigned char lines, cols, x, y;} scrn; + unsigned short s; + unsigned short mask; + unsigned char attrib; + int ch; +\& + fd = open(console, O_RDWR); + if (fd < 0) { + perror(console); + exit(EXIT_FAILURE); + } + if (ioctl(fd, VT_GETHIFONTMASK, &mask) < 0) { + perror("VT_GETHIFONTMASK"); + exit(EXIT_FAILURE); + } + (void) close(fd); + fd = open(device, O_RDWR); + if (fd < 0) { + perror(device); + exit(EXIT_FAILURE); + } + (void) read(fd, &scrn, 4); + (void) lseek(fd, 4 + 2*(scrn.y*scrn.cols + scrn.x), SEEK_SET); + (void) read(fd, &s, 2); + ch = s & 0xff; + if (s & mask) + ch |= 0x100; + attrib = ((s & \[ti]mask) >> 8); + printf("ch=%#03x attrib=%#02x\en", ch, attrib); + s \[ha]= 0x1000; + (void) lseek(fd, \-2, SEEK_CUR); + (void) write(fd, &s, 2); + exit(EXIT_SUCCESS); +} +.EE +.SH SEE ALSO +.BR ioctl_console (2), +.BR tty (4), +.BR ttyS (4), +.BR gpm (8) |