table of contents
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¶
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 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 |