summaryrefslogtreecommitdiffstats
path: root/man/man4/vcs.4
diff options
context:
space:
mode:
Diffstat (limited to 'man/man4/vcs.4')
-rw-r--r--man/man4/vcs.4172
1 files changed, 172 insertions, 0 deletions
diff --git a/man/man4/vcs.4 b/man/man4/vcs.4
new file mode 100644
index 0000000..2b6a3e3
--- /dev/null
+++ b/man/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 2024-05-02 "Linux man-pages (unreleased)"
+.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.
+.P
+.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.)
+.P
+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.
+.P
+These devices replace the screendump
+.BR ioctl (2)
+operations of
+.BR ioctl_console (2),
+so the system
+administrator can control access using filesystem permissions.
+.P
+The devices for the first eight virtual consoles may be created by:
+.P
+.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
+.P
+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
+.P
+.in +4n
+.EX
+cat /dev/vcs3 >foo
+.EE
+.in
+.P
+Note that the output does not contain
+newline characters, so some processing may be required, like
+in
+.P
+.in +4n
+.EX
+fold \-w 81 /dev/vcs3 | lpr
+.EE
+.in
+.P
+or (horrors)
+.P
+.in +4n
+.EX
+setterm \-dump 3 \-file /proc/self/fd/1
+.EE
+.in
+.P
+The
+.I /dev/vcsa0
+device is used for Braille support.
+.P
+This program displays the character and screen attributes under the
+cursor of the second virtual console, then changes the background color
+there:
+.P
+.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)