Provided by: manpages-pl-dev_4.15.0-9_all bug

NAZWA

       ioctl_console - funkcje ioctl konsoli i konsoli wirtualnych

OPIS

       The  following  Linux-specific  ioctl(2)  requests are supported for console terminals and
       virtual consoles.  Each requires a third argument, assumed here to be argp.

       KDGETLED
              Pobranie stanu diod LED. argp wskazuje na zmienną typu char. Trzy najmniej znaczące
              bity *argp wskazują aktualny stan diod wg schematu:

              LED_CAP    0x04   dioda caps lock
              LED_NUM    0x02   dioda num lock
              LED_SCR    0x01   dioda scroll lock

       KDSETLED
              Set  the  LEDs.   The  LEDs  are  set  to correspond to the lower three bits of the
              unsigned long integer in argp.  However, if a higher order bit  is  set,  the  LEDs
              revert  to normal: displaying the state of the keyboard functions of caps lock, num
              lock, and scroll lock.

       Before Linux 1.1.54, the LEDs just reflected  the  state  of  the  corresponding  keyboard
       flags, and KDGETLED/KDSETLED would also change the keyboard flags.  Since Linux 1.1.54 the
       LEDs can be made to display  arbitrary  information,  but  by  default  they  display  the
       keyboard flags.  The following two ioctls are used to access the keyboard flags.

       KDGKBLED
              Get  keyboard  flags  CapsLock, NumLock, ScrollLock (not lights).  argp points to a
              char which is set to the flag state.  The low order three bits (mask 0x7)  get  the
              current  flag  state, and the low order bits of the next nibble (mask 0x70) get the
              default flag state.  (Since Linux 1.1.54.)

       KDSKBLED
              Set keyboard flags CapsLock, NumLock, ScrollLock (not lights).  argp is an unsigned
              long  integer that has the desired flag state.  The low order three bits (mask 0x7)
              have the flag state, and the low order bits of the next nibble (mask 0x70) have the
              default flag state.  (Since Linux 1.1.54.)

       KDGKBTYPE
              Pobranie typu klawiatury. Przekazuje wartość KB_101, zdefiniowaną jako 0x02;

       KDADDIO
              Dodanie portu we/wy jako poprawnego. Równoważne funkcji ioperm(arg,1,1).

       KDDELIO
              Usunięcie   portu   we/wy   z   listy   poprawnych   portów.   Równoważne   funkcji
              ioperm(arg,1,0).

       KDENABIO
              Włączenie  dostępu  do  portów  we/wy  karty   graficznej.   Równoważne   wywołaniu
              ioperm(0x3b4, 0x3df-0x3b4+1, 1).

       KDDISABIO
              Wyłączenie   dostępu   do  portów  we/wy  karty  graficznej.  Równoważne  wywołaniu
              ioperm(0x3b4, 0x3df-0x3b4+1, 0).

       KDSETMODE
              Set text/graphics mode.  argp is an unsigned integer containing one of:

              KD_TEXT       0x00
              KD_GRAPHICS   0x01

       KDGETMODE
              Get text/graphics mode.  argp points to an int which is set to one  of  the  values
              shown above for KDSETMODE.

       KDMKTONE
              Generate  tone of specified length.  The lower 16 bits of the unsigned long integer
              in argp specify the period in clock cycles, and the upper 16 bits give the duration
              in  msec.   If  the  duration  is  zero,  the sound is turned off.  Control returns
              immediately.  For example, argp = (125<<16) + 0x637 would specify the beep normally
              associated with a ctrl-G.  (Thus since Linux 0.99pl1; broken in Linux 2.1.49-50.)

       KIOCSOUND
              Włączenie  lub  wyłączenie  generowanie dźwięków. Niższe 16 bitów argp określa czas
              trwania w cyklach zegara (tzn.  argp  =  1193180/częstotliwość).  Jeśli  argp  =  0
              wówczas   dźwięk   zostaje   wyłączony.  W  każdym  z  przypadków  sterowanie  jest
              przekazywane natychmiast.

       GIO_CMAP
              Get the current default color map from kernel.  argp points  to  a  48-byte  array.
              (Since Linux 1.3.3.)

       PIO_CMAP
              Change  the  default  text-mode  color  map.   argp points to a 48-byte array which
              contains, in order, the Red, Green, and Blue values for  the  16  available  screen
              colors:  0  is  off,  and 255 is full intensity.  The default colors are, in order:
              black, dark red, dark green, brown, dark blue, dark purple, dark cyan, light  grey,
              dark  grey,  bright  red,  bright green, yellow, bright blue, bright purple, bright
              cyan, and white.  (Since Linux 1.3.3.)

       GIO_FONT
              Pobranie 256-znakowej czcionki ekranowej w rozszerzonym formacie. argp wskazuje  na
              tablicę  8192  bajtów.  Jeśli  obecnie  załadowana  czcionka  jest jedną z czcionek
              512-bajtowych lub jeśli konsola nie jest w trybie  tekstowym,  funkcja  zwraca  kod
              błędu EINVAL.

       GIO_FONTX
              Gets   screen   font   and   associated  information.   argp  points  to  a  struct
              consolefontdesc (see PIO_FONTX).  On call, the charcount field should be set to the
              maximum  number  of characters that would fit in the buffer pointed to by chardata.
              On return, the charcount and charheight are filled with the respective data for the
              currently loaded font, and the chardata array contains the font data if the initial
              value of charcount indicated enough space was available; otherwise  the  buffer  is
              untouched and errno is set to ENOMEM.  (Since Linux 1.3.1.)

       PIO_FONT
              Ustawia  256-znakową  czcionkę ekranową. Ładuje czcionkę do generatora znaków karty
              EGA/VGA. argp wskazuje na 8192-bajtową mapę z 32 bajtami na jeden znak. W przypadku
              czcionek  8xN  (0  <  N  <=  32)  wykorzystywane jest tylko pierwszych N bajtów. Ta
              procedura unieważnia jednocześnie odwzorowanie Unicode.

       PIO_FONTX
              Ustawia czcionkę ekranową i związane z nią informacje  na  temat  jej  prezentacji.
              argp wskazuje na

                  struct consolefontdesc {
                      unsigned short charcount;  /* znaków w czcionce
                                                    (256 lub 512) */
                      unsigned short charheight; /* wierszy skanowania
                                                    w znaku (1-32) */
                      char          *chardata;   /* dane czcionki w
                                                    postaci rozszerzonej */
                  };

              If  necessary,  the  screen will be appropriately resized, and SIGWINCH sent to the
              appropriate processes.  This call also invalidates  the  Unicode  mapping.   (Since
              Linux 1.3.1.)

       PIO_FONTRESET
              Resets  the screen font, size, and Unicode mapping to the bootup defaults.  argp is
              unused, but should be set to NULL to ensure compatibility with future  versions  of
              Linux.  (Since Linux 1.3.28.)

       GIO_SCRNMAP
              Pobranie  z jądra odwzorowania ekranu. argp wskazuje na obszar o rozmiarze E_TABSZ,
              który jest wypełniany danymi  czcionki  służącymi  do  wyświetlenia  poszczególnych
              znaków.  W przypadku gdy obecnie załadowana czcionka zawiera więcej niż 256 znaków,
              ta procedura najprawdopodobniej zwróci bezwartościowe informacje.

       GIO_UNISCRNMAP
              Get full Unicode screen mapping from kernel.   argp  points  to  an  area  of  size
              E_TABSZ*sizeof(unsigned  short),  which  is loaded with the Unicodes each character
              represent.  A special set of Unicodes, starting at U+F000, are  used  to  represent
              "direct to font" mappings.  (Since Linux 1.3.1.)

       PIO_SCRNMAP
              Załadowanie   do   jądra   "definiowanej   przez   użytkownika"  (czwartej)  tabeli
              odwzorowującej bajty na symbole ekranu konsoli. argp wskazuje na obszar o rozmiarze
              E_TABSZ.

       PIO_UNISCRNMAP
              Loads  the  "user  definable"  (fourth)  table  in the kernel which maps bytes into
              Unicodes, which are then translated into screen symbols according to the  currently
              loaded Unicode-to-font map.  Special Unicodes starting at U+F000 can be used to map
              directly to the font symbols.  (Since Linux 1.3.1.)

       GIO_UNIMAP
              Pobranie z jądra mapy odwzorowania Unicode-na-czcionkę. argp wskazuje na strukturę

                  struct unimapdesc {
                      unsigned short  entry_ct;
                      struct unipair *entries;
                  };

              w której entries wskazuje na tablicę struktur

                  struct unipair {
                      unsigned short unicode;
                      unsigned short fontpos;
                  };

              (Since Linux 1.1.92.)

       PIO_UNIMAP
              Put unicode-to-font mapping in kernel.  argp points to a struct unimapdesc.  (Since
              Linux 1.1.92)

       PIO_UNIMAPCLR
              Wyczyszczenie  tabeli,  jeśli  możliwe proponuje algorytm z mieszaniem (hash). argp
              wskazuje na

                  struct unimapinit {
                      unsigned short advised_hashsize;  /* 0 przy braku opinii */
                      unsigned short advised_hashstep;  /* 0 przy braku opinii */
                      unsigned short advised_hashlevel; /* 0 przy braku opinii */
                  };

              (Since Linux 1.1.92.)

       KDGKBMODE
              Pobranie aktualnego stanu klawiatury. argp wskazuje na zmienną  typu  long,  której
              zostanie nadana wartość równa jednej z poniższych stałych:

              K_RAW         0x00  /* Raw (scancode) mode */
              K_XLATE       0x01  /* Translate keycodes using keymap */
              K_MEDIUMRAW   0x02  /* Medium raw (scancode) mode */
              K_UNICODE     0x03  /* Unicode mode */
              K_OFF         0x04  /* Disabled mode; since Linux 2.6.39 */

       KDSKBMODE
              Sets  current  keyboard  mode.  argp is a long equal to one of the values shown for
              KDGKBMODE.

       KDGKBMETA
              Pobranie trybu obsługi klawisza meta. argp wskazuje na zmienną  typu  long,  której
              zostanie nadana wartość równa jednej z poniższych stałych:

              K_METABIT     0x03   ustawia najbardziej znaczący bit
              K_ESCPREFIX   0x04   prefix ucieczki

       KDSKBMETA
              Sets meta key handling mode.  argp is a long equal to one of the values shown above
              for KDGKBMETA.

       KDGKBENT
              Pobranie jednej pozycji z tabeli translacji klawiszy (kod klawisza (keycode) na kod
              akcji). argp wskazuje na strukturę

                  struct kbentry {
                      unsigned char  kb_table;
                      unsigned char  kb_index;
                      unsigned short kb_value;
                  };

              której  pierwsze  dwa  pola mają nadane wartości o następującym znaczeniu: kb_table
              określa rodzaj tabeli (0 <= kb_table <  MAX_NR_KEYMAPS),  a  kb_index  oznacza  kod
              klawisza  (keycode)  (0  <=  kb_index  <  NR_KEYS).  Polu  kb_value  zostaje nadany
              odpowiedni kod akcji lub K_HOLE, jeśli nie ma takiego klawisza,  albo  K_NOSUCHMAP,
              jeśli kb_table jest niepoprawne.

       KDSKBENT
              Nadanie  wartości jednej pozycji tabeli translacji. argp wskazuje na strukturę typu
              struct kbentry.

       KDGKBSENT
              Pobranie łańcucha znaków przypisanego  klawiszowi  funkcyjnemu.  argp  wskazuje  na
              strukturę

                  struct kbsentry {
                      unsigned char kb_func;
                      unsigned char kb_string[512];
                  };

              Do   kb_string   przypisywany   jest  (zakończony  znakiem  NULL)  łańcuch  znaków,
              odpowiadający kodowi akcji kb_func-tego klawisza funkcyjnego.

       KDSKBSENT
              Przypisuje klawiszowi funkcyjnemu łańcuch znaków. argp wskazuje na  strukturę  typu
              struct kbsentry.

       KDGKBDIACR
              Odczytanie tabeli akcentów jądra. argp wskazuje na strukturę

                  struct kbdiacrs {
                      unsigned int   kb_cnt;
                      struct kbdiacr kbdiacr[256];
                  };

              gdzie kb_cnt oznacza liczbę pozycji w tablicy, z których każda jest strukturą

                  struct kbdiacr {
                      unsigned char diacr;
                      unsigned char base;
                      unsigned char result;
                  };

       KDGETKEYCODE
              Odczytanie pozycji z tabeli kodów klawiszy (scan code to keycode). argp wskazuje na
              strukturę

                  struct kbkeycode {
                      unsigned int scancode;
                      unsigned int keycode;
                  };

              keycode is set to correspond to the given scancode.  (89 <= scancode <=  255  only.
              For 1 <= scancode <= 88, keycode==scancode.)  (Since Linux 1.1.63.)

       KDSETKEYCODE
              Write kernel keycode table entry.  argp points to a struct kbkeycode.  (Since Linux
              1.1.63.)

       KDSIGACCEPT
              Proces  wywołujący  tę  funkcję  wskazuje  swą  chęć  do  przyjęcia  sygnału  argp,
              generowanego  przez  wciśnięcie  odpowiedniej  kombinacji  klawiszy.  (1 <= argp <=
              NSIG). (Patrz spawn_console() w linux/drivers/char/keyboard.c.)

       VT_OPENQRY
              Przekazanie pierwszej dostępnej  (ale  nie  otwartej)  konsoli.  argp  wskazuje  na
              zmienną  typu int, której zostanie nadana wartość równa numerowi konsoli wirtualnej
              (1 <= *argp <= MAX_NR_CONSOLES).

       VT_GETMODE
              Pobranie trybu aktywnej konsoli wirtualnej. argp wskazuje na strukturę

                  struct vt_mode {
                      char  mode;    /* tryb konsoli wirtualnej */
                      char  waitv;   /* jeśli ustawione, czeka przy zapisie
                                        jeśli konsola wirt. nie jest aktywna */
                      short relsig;  /* sygnał w przypadku zwolnienia */
                      short acqsig;  /* sygnał w przypadku uzyskania */
                      short frsig;   /* niewykorzystane (równe 0) */
                  };

              w której przekazywany jest  tryb  pracy  bieżącej  konsoli  wirtualnej.  mode  może
              przyjmować następujące wartości:

              VT_AUTO      automatyczne przełączanie vt
              VT_PROCESS   przełączanie kontrolowane przez procesy
              VT_ACKACQ    potwierdzanie przełączenia

       VT_SETMODE
              Ustawienie  trybu  aktywnej  konsoli  wirtualnej. argp wskazuje na strukturę struct
              vt_mode.

       VT_GETSTATE
              Pobranie globalnych informacji  o  stanie  konsoli  wirtualnej.  argp  wskazuje  na
              strukturę

                  struct vt_stat {
                      unsigned short v_active;  /* aktywna konsola wirtualna */
                      unsigned short v_signal;  /* sygnał do wysłania */
                      unsigned short v_state;   /* maska bitowa konsoli wirt. */
                  };
                  struct vt_stat {
                      ushort v_active;  /* aktywna konsola wirtualna */
                      ushort v_signal;  /* sygnał do wysłania */
                      ushort v_state;   /* maska bitowa konsoli wirt. */
                  };

              Dla każdej aktualnie używanej konsoli ustawiany jest odpowiedni bit w polu v_state.
              (Jądra od 1.0 do 1.1.92.)

       VT_RELDISP
              Zwolnienie ekranu.

       VT_ACTIVATE
              Przełączenie na konsolę argp (1 <= argp <= MAX_NR_CONSOLES).

       VT_WAITACTIVE
              Oczekiwanie na aktywację konsoli wirtualnej argp.

       VT_DISALLOCATE
              Deallocate the memory associated with vt argp.  (Since Linux 1.1.54.)

       VT_RESIZE
              Zmiana wyobrażenia jądra o rozmiarach ekranu. argp wskazuje na strukturę

                  struct vt_sizes {
                      unsigned short v_rows;       /* liczba wierszy */
                      unsigned short v_cols;       /* liczba kolumn */
                      unsigned short v_scrollsize; /* już nieużywane */
                  };

              Note that this does not change the videomode.   See  resizecons(8).   (Since  Linux
              1.1.54.)

       VT_RESIZEX
              Zmiana wyobrażenia jądra o różnych parametrach ekranu. argp wskazuje na strukturę

                  struct vt_consize {
                      unsigned short v_rows;  /* liczba wierszy */
                      unsigned short v_cols;  /* liczba kolumn */
                      unsigned short v_vlin;  /* liczba wierszy pikseli
                                                 na ekranie */
                      unsigned short v_clin;  /* liczba wierszy pikseli
                                                 na znak */
                      unsigned short v_vcol;  /* liczba kolumn pikseli
                                                 na ekranie */
                      unsigned short v_ccol;  /* liczba kolumn pikseli
                                                 na znak */
                  };

              Any  parameter  may  be  set  to  zero,  indicating  "no  change",  but if multiple
              parameters are set, they must be self-consistent.  Note that this does  not  change
              the videomode.  See resizecons(8).  (Since Linux 1.3.3.)

       Działanie  poniższych  funkcji  ioctl  jest zależne od wartości pierwszego bajtu struktury
       wskazywanej przez argp, tutaj oznaczanego jako subcode.  Mogą  z  nich  korzystać  jedynie
       administrator i właściciel bieżącego terminala.

       TIOCLINUX, subcode=0
              Dump  the screen.  Disappeared in Linux 1.1.92.  (With kernel 1.1.92 or later, read
              from /dev/vcsN or /dev/vcsaN instead.)

       TIOCLINUX, subcode=1
              Get task information.  Disappeared in Linux 1.1.92.

       TIOCLINUX, subcode=2
              Ustawienie zaznaczenia. argp wskazuje na strukturę

                  struct {
                      char  subcode;
                      short xs, ys, xe, ye;
                      short sel_mode;
                  };

              xs i ys oznaczają początkową kolumnę i wiersz. xe i ye oznaczają końcową kolumnę  i
              wiersz.  (Górny lewy róg ma współrzędne wiersz=kolumna=1.)  sel_mode jest równe 0 w
              przypadku zaznaczania znak po znaku, 1 -  słowo  po  słowie,  lub  2  -  wiersz  po
              wierszu.   Zaznaczone  znaki  ekranowe  są  podświetlone  i  zachowane w statycznej
              tablicy sel_buffer zdefiniowanej w devices/char/console.c.

       TIOCLINUX, subcode=3
              Wstawienie zaznaczenia. Znaki znajdujące się w buforze zaznaczenia są zapisywane do
              fd.

       TIOCLINUX, subcode=4
              Wyłączenie wygaszenia ekranu.

       TIOCLINUX, subcode=5
              Sets  contents  of  a  256-bit  look  up table defining characters in a "word", for
              word-by-word selection.  (Since Linux 1.1.32.)

       TIOCLINUX, subcode=6
              argp points to a char which is set to the value of the kernel variable shift_state.
              (Since Linux 1.1.32.)

       TIOCLINUX, subcode=7
              argp  points  to  a  char  which  is  set  to  the  value  of  the  kernel variable
              report_mouse.  (Since Linux 1.1.33.)

       TIOCLINUX, subcode=8
              Zrzucenie informacji o szerokości i wysokości ekranu, pozycji kursora i  wszystkich
              parach  znak-atrybuty.  (Tylko jądra od 1.1.67 do 1.1.91. Począwszy od 1.1.92 można
              przeczytać wszystkie te informacje z /dev/vcsa*).

       TIOCLINUX, subcode=9
              Odtworzenie rozmiaru ekranu,  położenia  kursora  i  wszystkich  par  znak-atrybut.
              (Tylko jądra od 1.1.67 do 1.1.91. Począwszy od jądra 1.1.92, można to wykonać przez
              zapis do /dev/vcsa*.)

       TIOCLINUX, subcode=10
              Obsługuje funkcję oszczędzania energii (Power Saving)  monitorów  nowej  generacji.
              Tryb  wygaszania  ekranu  VESA  przyjmuje  wartość  argp[1], co powoduje sterowanie
              wygaszaniem ekranu w sposób następujący:

              0: Wygaszanie ekranu jest wyłączone.

              1: Aktualne zawartości rejestrów  karty  graficznej  zostają  zachowane,  następnie
                 sterownik  zostaje  zaprogramowany  tak,  aby  wyłączył  impulsy  synchronizacji
                 pionowej. Powoduje to przestawienie monitora w tryb oczekiwania (standby). Jeśli
                 monitor  posiada  licznik  czasowy Off_Mode, wtedy może ewentualnie sam wyłączyć
                 zasilanie.

              2: The  current  settings  are  saved,  then  both  the  vertical  and   horizontal
                 synchronization  pulses  are turned off.  This puts the monitor into "off" mode.
                 If your monitor has no Off_Mode timer, or if you want your monitor to power down
                 immediately  when  the  blank_timer  times  out,  then  you  choose this option.
                 (Caution: Powering down frequently  will  damage  the  monitor.)   (Since  Linux
                 1.1.76.)

WARTOŚĆ ZWRACANA

       On  success,  0 is returned.  On failure, -1 is returned, and errno is set to indicate the
       error.

BŁĘDY

       EBADF  Deskryptor pliku jest nieprawidłowy.

       EINVAL Deskryptor pliku lub argp jest niepoprawny.

       ENOTTY Deskryptor pliku nie jest skojarzony ze specjalnym urządzeniem znakowym lub  podane
              polecenie nie ma do niego zastosowania.

       EPERM  Niewystarczające uprawnienia.

UWAGI

       Ostrzeżenie:  Nie  należy  traktować tej strony podręcznika jak dokumentacji funkcji ioctl
       konsoli Linuksa. Strona jest przeznaczona dla ciekawskich jako alternatywa wobec  czytania
       źródeł  jądra.  Funkcje ioctl są nieudokumentowanymi funkcjami wewnętrznymi Linuksa, które
       mogą ulec zmianie bez ostrzeżenia (i rzeczywiście, ten  dokument  odzwierciedla  w  sposób
       mniej  lub  bardziej  dokładny  sytuację dla jądra w wersji 1.1.94; istnieje wiele mniej i
       bardziej znaczących różnic w stosunku do poprzednich wersji).

       Bardzo często wywołania funkcji ioctl są wprowadzane w celu komunikacji pomiędzy jądrem  i
       szczególnymi,  dobrze  znanymi  programami  (fdisk,  hdparm,  setserial, tunelp, loadkeys,
       selection, setfont itd.) i ich zachowanie zostanie zmienione, kiedy  będzie  tego  wymagał
       któryś z tych programów.

       Programy  korzystające  z  tych wywołań ioctl nie będą przenośne na inne systemy Unix, nie
       będą działać poprawnie ze starszymi wersjami jądra Linuksa, ani nie będą  współpracować  z
       przyszłymi wersjami jądra.

       Należy korzystać z funkcji zgodnych z POSIX.

ZOBACZ TAKŻE

       dumpkeys(1),  kbd_mode(1),  loadkeys(1),  mknod(1), setleds(1), setmetamode(1), execve(2),
       fcntl(2), ioctl_tty(2), ioperm(2), termios(3),  console_codes(4),  mt(4),  sd(4),  tty(4),
       ttyS(4), vcs(4), vcsa(4), charsets(7), mapscrn(8), resizecons(8), setfont(8)

       /usr/include/linux/kd.h, /usr/include/linux/vt.h

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  5.13  projektu Linux man-pages. Opis
       projektu, informacje dotyczące zgłaszania błędów oraz  najnowszą  wersję  oryginału  można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony  podręcznika  są:  Piotr  Pogorzelski
       <piotr.pogorzelski@ippt.gov.pl>,  Andrzej  Krzysztofowicz   <ankry@green.mf.pg.gda.pl>   i
       Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją. Bliższe informacje o warunkach licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   lub   nowszej.   Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.