vcs, vcsa - virtual console memory


     /dev/vcs0 is a character device  with  major  number  7  and
     minor number 0, usually of mode 0644 and owner root.tty.  It
     refers to the memory of the currently displayed virtual con-
     sole terminal.

     /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 owner  root.tty.   /dev/vcsa[0-63]
     are  the  same,  but including attributes, and prefixed with
     four bytes giving the screen dimensions and cursor position:
     lines,  columns, x, y.  (x = y = 0 at the top left corner of
     the screen.)

     These replace the screendump ioctls of  console(4),  so  the
     system  administrator  can  control access using file system

     The devices for the first  eight  virtual  consoles  may  be
     created by:

          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];
          chown root.tty /dev/vcs*

     No ioctl() requests are supported.


     You may do a screendump on vt3 by switching to vt1 and  typ-
     ing  cat  /dev/vcs3 >foo. Note that the output does not con-
     tain newline characters, so some processing may be required,
     like  in  fold  -w  81  /dev/vcs3 | lpr or (horrors) setterm
     -dump 3 -file /proc/self/fd/1.

     This program displays the character  and  screen  attributes
     under the cursor of the second virtual console, then changes
     the background color there:

          #include <unistd.h>
          #include <stdio.h>
          #include <fcntl.h>

          void main()
          {    int fd;
               struct {char lines, cols, x, y;} scrn;
               char ch, attrib;

               fd = open("/dev/vcsa2", O_RDWR);
               (void)read(fd, &scrn, 4);
               (void)lseek(fd, 4 + 2*(scrn.y*scrn.cols + scrn.x), 0);
               (void)read(fd, &ch, 1);
               (void)read(fd, &attrib, 1);
               printf("ch='%c' attrib=0x%02x\n", ch, attrib);
               attrib ^= 0x10;
               (void)lseek(fd, -1, 1);
               (void)write(fd, &attrib, 1);




     Andries Brouwer <>


     Introduced with version 1.1.92 of the Linux kernel.


     console(4), tty(4), ttys(4),