.\" -*- coding: UTF-8 -*-
.\" 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
.\" "
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH vcs 4 "3 maja 2023 r." "Linux man\-pages 6.05.01" 
.SH NAZWA
vcs, vcsa \- pamięć konsoli wirtualnej
.SH OPIS
\fI/dev/vcs0\fP jest urządzeniem znakowym o numerze głównym 7 i numerze
pobocznym 0, najczęściej z prawami dostępu 0644 i właścicielem określonym
jako root:tty. Odnosi się do pamięci obecnie widocznego terminala wirtualnej
konsoli.
.PP
\fI/dev/vcs\fP[\fI1\fP\-\fI63\fP] to urządzenia znakowe terminali wirtualnych konsoli,
mające numer główny 7 i numery poboczne od 1 do 63, najczęściej z prawami
dostępu 0644 i własnością określoną jako root:tty. \fI/dev/vcsa\fP[\fI0\fP\-\fI63\fP]
są tym samym, ale używają liczb typu \fIunsigned short\fP zawierających
atrybuty oraz poprzedzonych czterema bajtami, zwracającymi rozmiary ekranu i
pozycję kursora: \fIwiersze\fP, \fIkolumny\fP, \fIx\fP, \fIy\fP.  (\fIx\fP = \fIy\fP = 0 w
lewym górnym rogu ekranu).
.PP
Kiedy ładowana jest czcionka 512\-znakowa, pozycję dziewiątego bitu można
pobrać za pomocą operacji \fBioctl\fP(2) \fBVT_GETHIFONTMASK\fP (dostępnej od
Linuksa 2.6.18) zastosowanej na \fI/dev/tty[1\-63]\fP. Wartość zwracana jest we
wskaźniku do typu \fIunsigned short\fP przekazywanym jako trzeci argument
wywołania systemowego \fBioctl\fP(2).
.PP
Opisywane urządzenia zastępują operacje \fIioctl\fP(2) zrzucające zawartość
ekranu z \fBioctl_console\fP(2), więc administrator systemu może kontrolować
uprawnienia przy użyciu praw dostępu do plików.
.PP
Urządzenia dla pierwszych ośmiu konsoli wirtualnych można stworzyć
poleceniami:
.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
Nie są wspierane żadne odwołania \fBioctl\fP(2).
.SH PLIKI
\fI/dev/vcs\fP[\fI0\fP\-\fI63\fP]
.br
.\" .SH AUTHOR
.\" Andries Brouwer <aeb@cwi.nl>
\fI/dev/vcsa\fP[\fI0\fP\-\fI63\fP]
.SH WERSJE
Wprowadzone w Linuksie 1.1.92.
.SH PRZYKŁADY
Zrzut ekranu na vt3 można wykonać przez przełączenie na vt1 i wpisanie
.PP
.in +4n
.EX
cat /dev/vcs3 >foo
.EE
.in
.PP
Proszę zauważyć, że wynik nie będzie zawierał znaków nowego wiersza, więc
konieczne może być pewne zmodyfikowanie go np.
.PP
.in +4n
.EX
fold \-w 81 /dev/vcs3 | lpr
.EE
.in
.PP
lub (ohyda)
.PP
.in +4n
.EX
setterm \-dump 3 \-file /proc/self/fd/1
.EE
.in
.PP
Urządzenie \fI/dev/vcsa0\fP jest wykorzystywane przy wsparciu dla alfabetu
Braille'a.
.PP
Poniższy program wyświetla aktualne atrybuty znaków i ekranu w miejscu
kursora na drugiej wirtualnej konsoli, a następnie zmienia tam kolor tła:
.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 "ZOBACZ TAKŻE"
\fBioctl_console\fP(2), \fBtty\fP(4), \fBttyS\fP(4), \fBgpm\fP(8)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Paweł Olszewski <alder@amg.net.pl>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
