table of contents
- trixie 1:4.27.0-1
 - trixie-backports 1:4.28.0-2~bpo13+2
 - testing 1:4.28.0-2
 - unstable 1:4.28.0-2
 
| ioctl_kd(2) | System Calls Manual | ioctl_kd(2) | 
NAZWA¶
ioctl_vt - funkcje ioctl konsoli i konsoli wirtualnych
SKŁADNIA¶
#include <linux/kd.h> /* Definicja zmiennych op */ #include <sys/ioctl.h>
int ioctl(int fd, unsigned long op, void *argp);
OPIS¶
Przedstawione poniżej operacje ioctl(2) są specyficzne dla Linuksa i są obsługiwane dla konsoli i konsoli wirtualnych.
- 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
 - Ustawienie diod LED. Diody są ustawiane odpowiednio do wartości trzech najmniej znaczących bitów liczby całkowitej bez znaku, typu long, w argp. Jednakże jeśli ustawiony jest najbardziej znaczący bit, stan diod wraca do stanu normalnego: odzwierciedla stan funkcji klawiatury caps lock, num lock i scroll lock.
 
Przed Linuksem 1.1.54 diody odzwierciedlały jedynie stan znaczników klawiatury, a ioctl KDGETLED/KDSETLED zmieniały również stan tych znaczników. Od Linuksa 1.1.54 diody mogą wyświetlać dowolną informację, lecz standardowo wskazują stan znaczników klawiatury. Do zmiany znaczników klawiatury służą dwa następne wywołania funkcji ioctl.
- KDGKBLED
 - Pobranie wartości znaczników klawiatury: CapsLock, NumLock, ScrollLock (znaczników, nie stanu diod). argp wskazuje na zmienną typu char, do której zostaną przepisane wartości znaczników. Najniższe trzy bity (maska 0x7) odzwierciedlają stan znaczników, a trzy najniższe bity następnego bajtu (maska 0x70) zawierają domyślne ustawienie znaczników. (Od Linuksa 1.1.54).
 - KDSKBLED
 - Ustawienie wartości znaczników klawiatury: CapsLock, NumLock, ScrollLock (znaczników, nie stanu diod). argp zawiera pożądany stan znaczników. Trzy najniższe bity (maska 0x7) zawierają stan znaczników, a trzy najniższe bity następnego bajtu (maska 0x70) zawierają domyślne ustawienie znaczników. (Od Linuksa 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
 - Włączenie trybu tekstowego/graficznego. argp jest
      liczbą całkowitą bez znaku zawierającą
      jedną z wartości:
    
KD_TEXT 0x00 KD_GRAPHICS 0x01  - KDGETMODE
 - Pobranie informacji o ustawionym trybie: tekstowy/graficzny. argp wskazuje na zmienną int, której zostanie nadana jedna z wartości pokazanych wyżej dla KDSETMODE.
 - KDMKTONE
 - Wygenerowanie dźwięku o określonej długości. Niższe 16 bitów liczby całkowitej bez znaku, typu long, w argp, określa czas wyrażony w cyklach zegara, a wyższe 16 bitów podaje czas trwania w milisekundach. Jeśli czas trwania jest równy zeru, dźwięk zostaje wyłączony. Sterowanie jest przekazywane natychmiast. Na przykład, argp = (125<<16) + 0x637 określa dźwięk zwykle skojarzony ze znakiem Ctrl-G. (Od Linuksa 0.99pl1; nie działa w Linuksie 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
 - Pobranie z jądra aktualnie obowiązującej mapy kolorów. argp wskazuje na 48-bajtową tablicę. (Od Linuksa 1.3.3).
 - PIO_CMAP
 - Zmiana domyślnej mapy kolorów trybu tekstowego. argp wskazuje na 48-bajtową tablicę, która zawiera kolejno wartości Red, Green i Blue dla dostępnych 16 kolorów ekranu: 0 brak, 255 pełna intensywność. Domyślnymi kolorami są, w kolejności: czarny, ciemnoczerwony, ciemnozielony, brązowy, ciemnoniebieski, ciemnopurpurowy, ciemny niebieskozielony, jasnoszary, ciemnoszary, jasnoczerwony, jasnozielony, żółty, jasnoniebieski, jasnopurpurowy, jasny niebieskozielony i biały. (Od Linuksa 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
 - Pobranie czcionki ekranowej i związanych z nią informacji. argp wskazuje na strukturę typu struct consolefontdesc (patrz PIO_FONTX). Przed wywołaniem funkcji, polu charcount powinna zostać nadana wartość równa maksymalnej liczbie znaków, jakie się zmieszczą w buforze wskazywanym przez chardata. Po zakończeniu, charcount i charheight są wypełniane odpowiednimi informacjami dotyczącymi aktualnie załadowanej czcionki, a tablica chardata zawiera informacje o foncie, o ile przekazana wartość charcount wskazywała wystarczającą ilość miejsca; w przeciwnym razie bufor nie jest modyfikowany, a zmiennej errno nadawana jest wartość ENOMEM. (Od Linuksa 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 */ };
 - Jeśli jest to konieczne, ekran zostanie odpowiednio przeskalowany, a do odpowiednich procesów przesłany będzie sygnał SIGWINCH. Ta procedura unieważnia jednocześnie odwzorowanie Unicode. (Od Linuksa 1.3.1).
 
- PIO_FONTRESET
 - Inicjuje czcionkę ekranową, rozmiar i odwzorowanie Unicode do wartości ustawionych podczas startu sytemu. argp nie jest używany, lecz powinien mieć wartość NULL, aby zapewnić zgodność z przyszłymi wersjami Linuksa. (Od Linuksa 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
 - Pobranie z jądra pełnego odwzorowania Unicode. argp wskazuje na obszar o rozmiarze E_TABSZ*sizeof(unsigned short), który jest wypełniany kodami Unicode odpowiednimi dla poszczególnych znaków. Specjalny zestaw kodów Unicode, rozpoczynający się od U+F000, służy do reprezentacji odwzorowania "bezpośrednio na czcionkę" ("direct to font"). (Od Linuksa 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
 - Załadowanie do jądra "definiowanej przez użytkownika" (czwartej) tabeli odwzorowującej bajty na kody Unicode, które są z kolei tłumaczone na symbole ekranowe zgodnie z aktualnie załadowaną tabelą odwzorowania Unicode-na-czcionkę. Do bezpośredniego odwzorowania na symbole ekranowe mogą być wykorzystywane specjalne kody Unicode rozpoczynające się od U+F000. (Od Linuksa 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; };
 - (Od Linuksa 1.1.92).
 
- PIO_UNIMAP
 - Załadowanie do jądra mapy odwzorowania Unicode-na-czcionkę. argp wskazuje na strukturę struct unimapdesc. (Od Linuksa 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 */ };
 - (Od Linuksa 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 /* Tryb surowy (scancode) */ K_XLATE 0x01 /* Tłumaczy kody klawiszy za pomocą mapy klawiszy */ K_MEDIUMRAW 0x02 /* Tryb umiarkowanie surowy (scancode) */ K_UNICODE 0x03 /* Tryb unikodowy */ K_OFF 0x04 /* Tryb wyłączony; od Linuksa 2.6.39 */  - KDSKBMODE
 - Ustawienie aktualnego stanu klawiatury. argp wskazuje na zmienną typu long o wartości równej jednej ze stałych pokazanych dla 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
 - Ustawienie trybu obsługi klawisza meta. argp wskazuje na zmienną typu long o wartości równej jednej z pokazanych wyżej stałych dla 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 otrzymuje wartość odpowiednią dla podanego scancode. (Tylko z zakresu 89 <= scancode <= 255. Dla 1 <= scancode <= 88, jest keycode==scancode.) (Od Linuksa 1.1.63).
 
- KDSETKEYCODE
 - Zapisanie pozycji w tabeli kodów klawiszy jądra. argp wskazuje na strukturę struct kbkeycode. (Od Linuksa 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.)
 
WARTOŚĆ ZWRACANA¶
Funkcja zwraca 0, jeżeli zakończy się pomyślnie (chyba że zaznaczono inaczej). Jeśli wystąpi błąd zwraca -1 i ustawia errno wskazując błąd.
BŁĘDY¶
- EINVAL
 - argp jest niepoprawne.
 
STANDARDY¶
Linux.
ZOBACZ TAKŻE¶
TŁUMACZENIE¶
Tłumaczenie niniejszej strony podręcznika: 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 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.
| 13 czerwca 2024 r. | Linux man-pages 6.9.1 |