Provided by:
manpages-pl_20060617-3_all 
NAZWA
konsolowe ioctl'e - funkcje ioctl konsoli i konsoli wirtualnych
OPIS
Przedstawione poniej argumenty funkcji ioctl() s specyficzne dla
Linuksa. Wymagaj trzeciego parametru, nazywanego tu argp.
KDGETLED
Pobiranie stanu diod LED. argp wskazuje na zmienn typu long int.
Trzy najmniej znaczce bity *argp wskazuj aktualny stan diod wg
schematu:
LED_CAP 0x04 dioda caps lock
LEC_NUM 0x02 dioda num lock
LED_SCR 0x01 dioda scroll lock
KDSETLED
Ustienie diod LED. Diody s ustawiane odpowiednio do wartoci
trzech najmniej znaczcych bitow argp. Jednake jeli ustawiony
jest najbardziej znaczacy bit, stan diod wraca do stanu
normalnego: odzwierciedla stan funkcji klawiatury caps lock, num
lock i scroll lock.
W jdrach przed 1.1.54 diody odzwierciedlaly jedynie stan znacznikow
klawiatury, a ioctl KDGETLED/KDSETLED zmienialy rownie stan tych
znacznikow. Od wersji 1.1.54 diody mog wywietla dowoln informacj, lecz
standardowo wskazuj stan znacznikow klawiatury. Do zmiany znacznikow
klawiatury slu dwa nastpne wywolania funkcji ioctl.
KDGKBLED
Pobranie wartoci znacznikow klawiatury: CapsLock, NumLock,
ScrollLock (znacznikow, nie stanu diod). argp wskazuje na zmienn
typu char, do ktorej zostan przepisabne wartoci znacznikow.
Najnisze trzy bity (maska 0x7) odzwierciedlaj stan znacznikow, a
trzy najnisze bity nastpnego bajtu (maska 0x70) zawieraj domylne
ustawienie znacznikow. (Od wersji 1.1.54.)
KDSKBLED
Ustawienie wartoci znacznikow klawiatury: CapsLock, NumLock,
ScrollLock (znacznikow, nie stanu diod). argp zawiera podany
stan znacznikow. Trzy najnisze bity (maska 0x7) zawieraj stan
znacznikow, a trzy najnisze bity nastpnego bajtu (maska 0x70)
zawieraj domylne ustawienie znacznikow. (Od wersji 1.1.54.)
KDGKBTYPE
Pobiranie typ klawiatury. Przekazuje warto KB_101, zdefiniowan
jako 0x02;
KDADDIO
Dodanie portu we/wy jako poprawnego. Rownowane funkcji
ioperm(arg,1,1).
KDDELIO
Usunicie portu we/wy z listy poprawnych portow. Rownowane
funkcji ioperm(arg,1,0).
KDENABIO
Wlczenie dostpu do portow we/wy karty graficznej. Rownowane
wywolaniu ioperm(0x3b4, 0x3df-0x3b4+1, 1).
KDDISABIO
Wylczenie dostpu do portow we/wy karty graficznej. Rownowane
wywolaniu ioperm(0x3b4, 0x3df-0x3b4+1, 0).
KDSETMODE
Wlczenie trybu tekstowego/graficznego. argp przyjmuje warto:
KD_TEXT 0x00
KD_GRAPHICS 0x01
KDGETMODE
Pobranie informacji o ustawionym trybie: tekstowy/graficzny.
argp wskazuje na zmienn typu long, ktorej zostanie nadana jedna
z podanych wyej wartoci.
KDMKTONE
Wygenerowanie dwiku o okrelonej dlugoci. Nisze 16 bitow argp
okrela czas wyraony w cyklach zegara, a wysze 16 bitow podaje
czas trwania w milisekundach. Jeli czas trwania jest rowny
zeru, dwik zostaje wylczony. Sterowanie jest przekazywane
natychmiast. Na przyklad, argp = (125<<16) + 0x637 okrela dwik
zwykle skojarzony ze znakiem Ctrl-G. (Od wersji 0.99pl1; nie
dziala w 2.1.49-50.)
KIOCSOUND
Wlczenie lub wylczenie generowanie dwikow. Nisze 16 bitow argp
okrela czas trwania w cyklach zegara (tzn. argp =
1193180/czstostliwo). Jeli argp = 0 wowczas dwiek zostaje
wylczony. W kadym z przypadkow sterowanie jest przekazywane
natychmiast.
GIO_CMAP
Pobranie z jdra aktualnie obowizujcej mapy kolorow. argp
wskazuje na 48-bajtow tablic. (Od wersji 1.3.3)
PIO_CMAP
Zmiana domylnej mapy kolorow trybu tekstowego. argp wskazuje na
48-bajtow tablic, ktora zawiera kolejno wartoci Red, Green i
Blue dla dostpnych 16 kolotow ekranu: 0 brak, 255 pelna
intensywno. Domylnymi kolorami s, w kolejnoci: czarny,
ciemnoczerwony ciemnozielony, brzowy, ciemnoniebieski,
ciemnopurpurowy, ciemny niebieskozielony, jasnoszary,
ciemnoszary, jasnoczerwony, jasnozielony, olty, jasnoniebieski,
jasnopurpurowy, jasny niebieskozielony i bialy. (Od wersji
1.3.3.)
GIO_FONT
Pobranie 256-znakowego fontu ekranowego w rozszerzonym formacie.
argp wskazuje na tablic 8192 bajtow. Jeli aktualnie zaladowany
font jest jednym z fontow 512-bajtowych lub jeli konsola nie
jest w trybie tekstowym, funkcja powraca z kodem bldu EINVAL.
GIO_FONTX
Pobranie fontu ekranowego i zwizanych z nim informacji. argp
wskazuje na struktur typu struct consolefontdesc (patrz
PIO_FONTX). Przed wywolaniem funkcji, polu charcount powinna
zosta nadana wrto rowna maksymalnej liczbie znakow, jakie si
zmieszcz w buforze wskazywanym przez chardata. Po zakoczeniu,
charcount i charheight s wypelniane odpowiednimi informacjami
dotyczcymi aktualnie zaladowanego fontu, a tablica chardata
zawiera informacje o foncie, o ile przekazana warto charcount
wskazywala wystarczajc ilo miejsca; w przeciwnym razie bufor nie
jest modyfikowany, a zmiennej errno nadawana jest warto ENOMEM.
(Od wersji 1.3.1.)
PIO_FONT
Ustawia 256-znakowy font ekranowy. Jest on ladowany do
generatora znakow karty EGA/VGA. argp wskazuje 8192 bajtow map z
32 bajtami na jeden znak. W przypadku fontow 8xN (0 < N <= 32)
wykorzystywane jest tylko pierwszych N bajtow. Ta procedura
uniewania jednoczenie odwzorowanie Unicode.
PIO_FONTX
Ustawia font ekranowy i zwizane z nim informacje na temat jego
prezentacji. argp wskazuje struktur
struct consolefontdesc {
u_short charcount; /* liczba znakow w foncie (256 lub 512) */
u_short charheight; /* liiczba wierszy w foncie (1-32) */
char *chardata; /* dane fontu w postaci rozszerzonej */
};
Jeli jest to konieczne, ekran zostanie odpowienio przeskalowany,
a do odpowiednich procesow przeslany bdzie sygnal SIGWINCH. Ta
procedura uniewania jednoczenie odwzorowanie Unicode.
PIO_FONTRESET
Inicjalizuje czcionk ekranow, rozmiar i odwzorowanie Unicode do
wartoci ustawionych podczas startu sytemu. argp nie jest uywany,
lecz powinien mie warto NULL, aby zapewni zgodno z przyszlymi
wersjami jdra. (Od wersji 1.3.28.)
GIO_SCRNMAP
Pobranie z jdra odwzorowania ekranu. argp wskazuje na obszar o
rozmiarze E_TABSZ, ktory jest wypelniany danymi fontu slucymi do
wywietlenia poszczegolnych znakow. W przypadku gdy aktualnie
zaladowany font zawiera wicej ni 256 znakow, ta procedura zwraca
raczej bezwartociowe informacje.
GIO_UNISCRNMAP
Pobranie z jdra pelnego odwzorowania Unicode. argp wskazuje na
obszar o rozmiarze E_TABSZ*sizeof(unsigned short), ktory jest
wypelniany kodami Unicode odpowiednimi dla poszczegolnych
znakow. Specjalny zestaw kodow Unicode, rozpoczynajcy si od
U+F000, sluy do reprezentacji odwzorowania ,,bezporednio na
font'' (,,direct to font''). (Od wersji 1.3.1.)
PIO_SCRNMAP
Zaladowanie do jdra ,,definiowanej przez uytkownika'' (czwartej)
tabeli odwzorowujcej bajty na symbole ekranu konsoli, argp
wskazuje na obszar o rozmiarze E_TABSZ.
PIO_UNISCRNMAP
Zaladowanie do jdra ,,definiowanej przez uytkownika'' (czwartej)
tabeli odwzorowujcej bajty na kody Unicode, ktore s z kolei
tlumaczone na symbole ekranowe zgodnie z aktualnie zaladowan
tabel odwzorowania Unicode-na-font. Do bezporedniego
odwzorowania na symbole ekranowe mog by wykorzystywane specjalne
kody Unicode rozpoczynajce si od U+F000. (Od wersji 1.3.1.)
GIO_UNIMAP
Pobranie z jdra mapy odwzorowania Unicode-na-font. argp wskazuje
na struktur
struct unimapdesc {
u_short entry_ct;
struct unipair *entries;
};
w ktorej entries wskazuj na tablic struktur
struct unipair {
u_short unicode;
u_short fontpos;
};
(Od wersji 1.1.92.)
PIO_UNIMAP
Zaladowanie do jdra mapy odwzorowania Unicode-na-font. argp
wskazuje na struktur typu struct unimapdesc. (Od wersji 1.1.92.)
PIO_UNIMAPCLR
Wyczyszczenie tabeli, jeli moliwe proponuje algorytm z
mieszaniem (hash).
struct unimapinit {
u_short advised_hashsize; /* 0 przy braku opinii */
u_short advised_hashstep; /* 0 przy braku opinii */
u_short advised_hashlevel; /* 0 przy braku opinii */
};
(Od wersji 1.1.92.)
KDGKBMODE
Pobranie aktualnego stanu klawiatury. argp wskazuje na zmienn
typu long, ktorej zostanie nadana warto rowna jednej z poniszych
stalych:
K_RAW 0x00
K_XLATE 0x01
K_MEDIUMRAW 0x02
K_UNICODE 0x03
KDSKBMODE
Ustawienie aktualnego stanu klawiatury. argp wskazuje na zmienn
typu long o wartoci rownej jednej z powyszych stalych.
KDGKBMETA
Pobranie trybu obslugi klawisza meta. argp wskazuje na zmienn
typu long, ktorej zostanie nadana warto rowna jednej z poniszych
stalych:
K_METABIT 0x03 ustawienie najwyszego bitu
K_ESCPREFIX 0x04 kod przedrostkowy ucieczki
KDSKBMETA
Ustawienie trybu obslugi klawisza meta. argp wskazuje na zmienn
typu long o wartoci rownej jednej z powyszych stalych:
KDGKBENT
Pobranie jednej pozycji z tabeli translacji klawiszy (kod
klawisza (keycode) na kod akcji). argp wskazuje na struktur
struct kbentry {
u_char kb_table;
u_char kb_index;
u_short kb_value;
};
ktorej pierwsze dwa pola maj nadane wartoci o nastpujcym
znaczeniu: kb_table okrela 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, K_HOLE, jeli nie ma takiego klawisza, a K_NOSUCHMAP,
jeli kb_table jest niepoprawne.
KDSKBENT
Nadanie wartoci jednej pozycji tabeli translacji. argp wskazuje
na struktur typu struct kbentry.
KDGKBSENT
Pobranie lacucha znakow przypisanego klawiszowi funkcyjnemu.
argp wskazuje na struktur
struct kbsentry {
u_char kb_func;
u_char kb_string[512];
};
kb_string przypisywany jest zakoczony znakiem NUL lacuch znakow,
odpowiadajcy kodowi akcji kb_func-tego klawisza funkcyjnego.
KDSKBSENT
Przypisuje klawiszowi funkcyjnemu lacuch znakow. argp wskazuje
na struktur typu struct kbsentry.
KDGKBDIACR
Odczytanie tabeli akcentow jdra. argp wskazuje na struktur
struct kbdiacrs {
unsigned int kb_cnt;
struct kbdiacr kbdiacr[256];
};
gdzie kb_cnt oznacza liczb pozycji w tablicy, z ktorych kada
jest struktur
struct kbdiacr { u_char diacr, base, result; };
KDGETKEYCODE
Odczytanie pozycji z tabeli kodow klawiszy (scan code to
keycode). argp wskazuje na struktur
struct kbkeycode { unsigned int scancode, keycode; };
keycode otrzymuje warto odpowiedni dla podanego scancode.
(Tylko z zakresu 89 <= scancode <= 255. Dla 1 <= scancode <=
88, jest keycode==scancode.) (Od wersji 1.1.63.)
KDSETKEYCODE
Zapisanie pozycji w tabeli kodow klawiszy jdra. argp wskazuje na
strukture typu struct kbkeycode. (Od wersji 1.1.63.)
KDSIGACCEPT
Proces wywolujcy t funkcj wskazuje sw ch do przyjcia sygnalu
argp, generowanego przez wcinicie odpowiedniej kombinacji
klawiszy. (1 <= argp <= NSIG). (Patrz spawn_console() w
linux/drivers/char/keyboard.c.)
VT_OPENQRY
Przekazanie pierwszej dostpnej (ale nie otwartej) konsoli. argp
wskazuje na zmienn typu int, ktorej zostanie nadana warto rowna
numerowi konsoli wirtualnej (1 <= *argp <= MAX_NR_CONSOLES).
VT_GETMODE
Pobranie trybu aktywnej konsoli wirtualnej. argp wskazuje na
struktu
struct vt_mode {
char mode; /* tryb konsoli wirtualnej */
char waitv; /* jeli ustawione, czeka przy zapisie,
jeli nie jest aktywna */
short relsig; /* sygnal w przypadku zwolnienia */
short acqsig; /* sygnal w przypadku uzyskania */
short frsig; /* niewykorzystane (rowne 0) */
};
..., w ktorej przekazywany jest tryb pracy aktualnej konsoli
wirtualnej (vt). mode moe przyjmowa nastpujce wartoci:
VT_AUTO autoamtyczne przelczanie vt
VT_PROCESS przelczanie sterowane przez proces
VT_ACKACQ potwierdzanie przelczenia
VT_SETMODE
Ustawienie trybu aktywnej konsoli wirtualnej. argp wskazuje na
struktur typu struct vt_mode.
VT_GETSTATE
Ustawienie globalne informacje o stanie konsoli wirtualnej. argp
wskazuje na struktur
struct vt_stat {
ushort v_active; /* aktywna konsola wirtualna */
ushort v_signal; /* sygnal do wyslania */
ushort v_state; /* maska bitowa konsoli wirt. */
};
Dla kaej aktualnie uywanej konsoli ustawiany jest odpowiedni bit
w polu v_state. (Jdra od 1.0 do 1.1.92.)
VT_RELDISP
Zwolnienie ekranu.
VT_ACTIVATE
Przelczenie na konsol argp (1 <= argp <= MAX_NR_CONSOLES).
VT_WAITACTIVE
Oczekiwanie na aktywacj konsoli wirtualnej argp.
VT_DISALLOCATE
Zwolnienie pamici przydzielonej dla konsoli wirtualnej argp.
(Od wersji 1.1.54.)
VT_RESIZE
Zmiana wybraenia jdra o rozmiarach ekranu. argp wskazuje na
struktur
struct vt_sizes {
ushort v_rows; /* liczba wierszy */
ushort v_cols; /* liczba kolumn */
ushort v_scrollsize; /* aktualnie nie uywane */
};
Naley pamita, e nie zmienia to trybu karty graficznej Patrz
resizecons(8). (Od wersji 1.1.54.)
VT_RESIZEX
Zmiana wyobraenia jdra o ronych parametrach ekranu. argp
wskazuje na struktur
struct vt_consize {
ushort v_rows; /* liczba wierszy */
ushort v_cols; /* liczba kolumn */
ushort v_vlin; /* liczba wierszy pikseli na ekranie */
ushort v_clin; /* liczba wierszy pikseli na znak */
ushort v_vcol; /* liczba kolumn pikseli na ekranie */
ushort v_ccol; /* liczba kolumn pikseli na znak */
};
Kady z parametrow moe mie warto zerow, co oznacza ,,nie
zmienia'', lecz jeli jednoczsnie zmienianych jest kilka
parametrow, musz one by ze sob zgodne. Naley pamita, e nie
zmienia to trybu karty graficznej Patrz resizecons(8). (Od
wersji 1.3.3.)
Dzialanie poniszych funkcji ioctl jest zalene od wartoci pierwszego
bajtu struktury wskazywanej przez argp, tutaj oznaczanego jako subcode.
Mog z nich korzysta jedynie administrator i wlaciciel aktualnej
konsoli.
TIOCLINUX, subcode=0
Zrzut ekranu Zniknlo w 1.1.92. (Dla jdra 1.1.92 i poniejszych,
obecnie naley zamiast tego czyta z /dev/vcsN lub /dev/vcsaN.)
TIOCLINUX, subcode=1
Pobranie inforamcji o zadaniu. Zniknlo w 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 pocztkow kolumn i wiersz xe i ye oznaczaj kocow
kolumn i wiersz. (Gorny lewy rog ma wspolrzdne
wiersz=kolumna=1.) sel_mode jest rowne 0 w przypadku
zaznaczania znak po znaku, 1 - slowo po slowie, lub 2 - wiersz
po wierszu. Zaznaczone znaki ekranowe s podwietlone i zachowane
w statycznej tablicy sel_buffer zdefiniowanej w
devices/char/console.c.
TIOCLINUX, subcode=3
Wstawienie zanaczenia. Znaki znajdujce si w buforze zaznaczenia
s zapisywane do fd.
TIOCLINUX, subcode=4
Odtworzenie ekranu po wygaszeniu.
TIOCLINUX, subcode=5
Wypelnienie 256-bitowej tablicy definujcej znaki w "slowie" dla
zaznaczania "slowo-po-slowie". (Od wersji 1.1.32.)
TIOCLINUX, subcode=6
argp wskazuje na zmienn typu char, ktorej nadawana jest warto
zmiennej jdra shift_state. (Od wersji 1.1.32.)
TIOCLINUX, subcode=7
argp wskazuje na zmienn typu char, ktorej nadawana jest warto
zmiennej jdra report_mouse. (Od wersji 1.1.33.)
TIOCLINUX, subcode=8
Zrzucenie informacji o szerokoci i wysokoci ekranu, pozycji
kursora i wszystkich parach znak-atrybuty. (Tylko jdra od 1.1.67
do 1.1.91. Poczwszy od 1.1.92 mona przecztya wszystkie te
inforamcje z /dev/vcsa*.)
TIOCLINUX, subcode=9
Odtworzenie rozmiaru ekranu, poloenia kursora i wszystkich par
znak-atrybut. (Tylko jdra od 1.1.67 do 1.1.91. Poczwszy od
jdra 1.1.92, mona to wykona przez zapis do /dev/vcsa*.)
TIOCLINUX, subcode=10
Obsluguje funkcj oszczdzania energii (Power Saving) monitorow
nowej generacji. Tryb wygaszania ekranu VESA przyjmuje warto
argp[1], co powoduje sterowanie wygaszaniem ekranu w sposob
nastpujcy:
0: Wygaszanie ekranu jest wylczone.
1: Aktualne zawartoci rejestrow karty graficznej zostaj
zachowane, nastpnie sterownik zostaje zaprogramowany tak, aby
wylczyl impulsy synchronizacji pionowej. Powoduje to
przestawienie monitora w tryb oczekiwania (standby). Jeli
monitor posiada licznik czasowy Off_Mode, wtedy moe ewentualnie
sam wylczy zasilanie.
2: Zostaj zachowane aktualne ustawienia, nastpnie wylczane s
zarowno impulsy synchronizacji zarowno pionowej, jak i poziomej.
Powoduje to wylaczenie monitora (tryb "off"). Opcj t naley wybra
jeli monitor nie posiada licznika czasowego Off_Mode lub jeli
chcemy aby monitor wylczyl si natychmiast. (Ostrzeenei: Czste
wylczanie zasilania moe uszkodzi monitor.)
(Od wersji 1.1.76.)
WARTO ZWRACANA
Po pomylnym zakoczeniu zwracane jest 0. Po bldzie zwracane jest -1 i
ustawiana jest zmienna errno.
B/LDY
errno moe przyjmowa nastpujce wartoci:
EBADF deskryptor pliku jest nieprawidlowy.
ENOTTY deskryptor pliku nie jest skojarzony ze specjalnym urzdzeniem
znakowym lub podane polecenie nie ma do niego zastosowania.
EINVAL deskryptor pliku lub argp jest niepoprawny.
EPERM naruszenie uprawnie.
OSTRZEENIE
Nie naley traktowa tej strony podrcznika jak dokumentacji funkcji ioctl
dla konsoli Linuksa. Jest ona przeznaczona dla ciekawskich jako
alternatywa wobec czytania zrodel jdra. Funkcje ioctl s
niudokumentowanymi funkcjami wewntrznymi Linuksa, ktore mog ulec
zmianie bez ostrzeenia (i rzeczywicie, ten dokument odzwierciedla w
sposob mniej lub bardziej dokladny sytuacj dla jdra w wersji 1.1.94;
istnieje wiele mniej i bardziej znaczcych ronic w stosunku do
poprzednich wersji.)
Bardzo czsto wywolania funkcji ioctl s wprowadzane w celu komunikacji
pomidzy jdrem i szczegolnymi, dobrze znanymi programami (fdisk, hdparm,
setserial, tunelp, loadkeys, selection, setfont itd.), i ich zachowanie
zostanie zmienione, kiedy bdzie tego wymagal ktory z tych programow.
Programy korzystajce z tych wywola ioctl nie bd przenone na inne
systemy Unix, nie bd dziala poprawnie ze starszymi wersjami jadra
Linuksa, ani nie bd wspolpracowa z przyszlymi wersjami jdra.
Naley korzysta z funkcji zgodnych z POSIX.
ZOBACZ TAKE
kbd_mode(1), loadkeys(1), dumpkeys(1), mknod(1), setleds(1),
setmetamode(1), ioperm(2), execve(2), fcntl(2), termios(3), console(4),
console_codes(4), mt(4), sd(4), tty(4), ttys(4), tty_ioctl(4), vcs(4),
vcsa(4), charsets(7), mapscrn(8), setfont(8), resizecons(8),
/usr/include/linux/kd.h, /usr/include/linux/vt.h
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.