console_ioctl(4) Ioctls für Console-Terminals und virtuelle Konsolen

BESCHREIBUNG

Die folgenden, Linux-spezifischen ioctl(2)-Anfragen werden unterstützt. Alle benötigen ein drittes Argument, das hier als argp angenommen wird.
KDGETLED
Zustand der LEDs ermitteln. argp zeigt auf ein char. Die unteren drei Bits von *argp werden wie folgt auf den Zustand der LEDs gesetzt:
LED_CAP 0x04Feststelltaste-LED
LED_NUM 0x02Num-LED
LED_SCR 0x01Rollen-LED
KDSETLED
Setzt die LEDs. Die LEDs werden so gesetzt, dass sie den niedrigeren drei Bits von argp entsprechen. Falls allerdings ein »higher order«-Bit gesetzt ist, kehren die LEDs zum Normalzustand zurück: Anzeige des Status der Tastaturfunktionen »Feststellen«, »Num« und »Rollen«.

Vor 1.1.54 gaben die LEDs lediglich den Zustand der entsprechenden Tastaturschalter wieder und KDGETLED/KDSETLED würde auch die Tastaturschalter ändern. Seit 1.1.54 können mit den LEDs beliebige Informationen dargestellt werden, aber standardmäßig zeigen sie die Tastaturschalter an. Die folgenden zwei Ioctls werden zum Zugriff auf die Tastaturschalter verwandt:

KDGKBLED
Ermittelt die Tastaturschalter CapsLock, NumLock, ScrollLock (nicht Lichter). argp zeigt auf ein Char, der auf den Schalterzustand gesetzt ist. Die niedrigrangigen drei Bits (Maske 0x7) erhalten den aktuellen Schalterzustand und die niedrigrangigen Bits des nächsten Nibbles (Maske 0x70) erhalten den Standardschalterzustand. (Seit 1.1.54)
KDSKBLED
Setzt die Tastaturschalter CapsLock, NumLock, ScrollLock (nicht Lichter). argp enthält den gewünschten Schalterzustand. Die niedrigrangigen drei Bits (Maske 0x7) enthalten den Schalterzustand und die niedrigrangigen Bits des nächsten Nibbles (Maske 0x70) enthalten den Standardschalterzustand. (Seit 1.1.54)
KDGKBTYPE
Tastaturtyp ermitteln. Dies liefert den Wert KB_101, definiert als 0x02.
KDADDIO
E/A-Port als gültig hinzufügen. Äquivalent zu ioperm(arg,1,1).
KDDELIO
E/A-Port als gültig löschen. Äquivalent zu ioperm(arg,1,0).
KDENABIO
E/A zur Videokarte aktivieren. Äquivalent zu ioperm(0x3b4, 0x3df-0x3b4+1, 1).
KDDISABIO
E/A zur Videokarte deaktivieren. Äquivalent zu ioperm(0x3b4, 0x3df-0x3b4+1, 0).
KDSETMODE
Text-/Graphikmodus setzen. argp ist eines der Folgenden:
KD_TEXT0x00
KD_GRAPHICS0x01
KDGETMODE
Text-/Graphikmodus ermitteln. argp zeigt auf ein long, der auf einen der oben aufgeführten Werte gesetzt wird.
KDMKTONE
Erzeugt einen Ton der angegebenen Länge. Die niedrigen 16 Bits von argp legen die Periode in Uhrzyklen fest und die höheren 16 Bits ergeben die Dauer in ms. Falls die Dauer Null ist, wird der Klang abgestellt. Die Steuerung kehrt sofort zurück. Beispielsweise würde argp = (125<<16) + 0x637 den Klang festlegen, der normalerweise mit Strg-G verbunden ist. (So seit 0.99pl1; defekt in 2.1.49-50.)
KIOCSOUND
Beginnt oder beendet die Klangerzeugung. Die niedrigen 16 Bits von argp legen die Periode in Uhrzyklen fest (d.h. argp = 1193180/Frequenz). argp = 0 schaltet den Klang ab. In jedem Fall kehrt die Steuerung sofort zurück.
GIO_CMAP
Get the current default color map from kernel. argp points to a 48-byte array. (Since 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 1.3.3.)
GIO_FONT
Gets 256-character screen font in expanded form. argp points to an 8192 byte array. Fails with error code EINVAL if the currently loaded font is a 512-character font, or if the console is not in text mode.
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 1.3.1.)
PIO_FONT
Sets 256-character screen font. Load font into the EGA/VGA character generator. argp points to a 8192 byte map, with 32 bytes per character. Only the first N of them are used for an 8xN font (0 < N <= 32). This call also invalidates the Unicode mapping.
PIO_FONTX
Bildschirmschrift und zugehörige Renderinginformation setzen. argp zeigt auf ein

struct consolefontdesc {
    unsigned short charcount;  /* Zeichen in Schrift
                                  (256 oder 512) */
    unsigned short charheight; /* Scanzeilen pro
                                  Zeichen (1-32) */
    char          *chardata;   /* Schriftdaten in
                                  expandierter Form */
};

If necessary, the screen will be appropriately resized, and SIGWINCH sent to the appropriate processes. This call also invalidates the Unicode mapping. (Since 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 1.3.28.)
GIO_SCRNMAP
Get screen mapping from kernel. argp points to an area of size E_TABSZ, which is loaded with the font positions used to display each character. This call is likely to return useless information if the currently loaded font is more than 256 characters.
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 1.3.1.)
PIO_SCRNMAP
Loads the "user definable" (fourth) table in the kernel which maps bytes into console screen symbols. argp points to an area of size 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 1.3.1.)
GIO_UNIMAP
Get Unicode-to-font mapping from kernel. argp points to a

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

wobei entries auf ein Feld der folgenden Form zeigt:

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

(seit 1.1.92)

PIO_UNIMAP
Put unicode-to-font mapping in kernel. argp points to a struct unimapdesc. (Since 1.1.92)
PIO_UNIMAPCLR
Clear table, possibly advise hash algorithm. argp points to a

struct unimapinit {
    unsigned short advised_hashsize;  /* 0 falls keine Meinung */
    unsigned short advised_hashstep;  /* 0 falls keine Meinung */
    unsigned short advised_hashlevel; /* 0 falls keine Meinung */
};

(seit 1.1.92)

KDGKBMODE
Ermittelt aktuellen Tastaturmodus. argp zeigt auf einen long, der auf einen der folgenden Werte gesetzt wird:
K_RAW0x00
K_XLATE0x01
K_MEDIUMRAW0x02
K_UNICODE0x03
KDSKBMODE
Aktuellen Tastaturmodus setzen. argp ist ein long, der zu einem der obigen Werte identisch ist.
KDGKBMETA
Gets meta key handling mode. argp points to a long which is set to one of these:
K_METABIT0x03set high order bit
K_ESCPREFIX0x04Maskierungsvorsatz
KDSKBMETA
Sets meta key handling mode. argp is a long equal to one of the above values.
KDGKBENT
Gets one entry in key translation table (keycode to action code). argp points to a

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

with the first two members filled in: kb_table selects the key table (0 <= kb_table < MAX_NR_KEYMAPS), and kb_index is the keycode (0 <= kb_index < NR_KEYS). kb_value is set to the corresponding action code, or K_HOLE if there is no such key, or K_NOSUCHMAP if kb_table is invalid.

KDSKBENT
Sets one entry in translation table. argp points to a struct kbentry.
KDGKBSENT
Gets one function key string. argp points to a

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

kb_string is set to the (null-terminated) string corresponding to the kb_functh function key action code.

KDSKBSENT
Sets one function key string entry. argp points to a struct kbsentry.
KDGKBDIACR
Read kernel accent table. argp points to a

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

where kb_cnt is the number of entries in the array, each of which is a

struct kbdiacr {
    unsigned char diacr;
    unsigned char base;
    unsigned char result;
};
KDGETKEYCODE
Read kernel keycode table entry (scan code to keycode). argp points to a

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 1.1.63.)

KDSETKEYCODE
Write kernel keycode table entry. argp points to a struct kbkeycode. (Since 1.1.63.)
KDSIGACCEPT
The calling process indicates its willingness to accept the signal argp when it is generated by pressing an appropriate key combination. (1 <= argp <= NSIG). (See spawn_console() in linux/drivers/char/keyboard.c.)
VT_OPENQRY
Liefert die erste verfügbare (nicht geöffnete) Konsole zurück. argp zeigt auf ein int, der auf die Anzahl der VT gesetzt ist (1 <= *argp <= MAX_NR_CONSOLES).
VT_GETMODE
Modus eines aktiven VT ermitteln. argp zeigt auf ein

struct vt_mode {
    char  mode;    /* vt mode */
    char  waitv;   /* if set, hang on writes if not active */
    short relsig;  /* signal to raise on release req */
    short acqsig;  /* signal to raise on acquisition */
    short frsig;   /* unused (set to 0) */
};

der auf einen der Modi des aktiven VT gesetzt ist. mode ist auf einen dieser Werte gesetzt:

VT_AUTOauto vt switching
VT_PROCESSprocess controls switching
VT_ACKACQacknowledge switch
VT_SETMODE
Modus des aktiven VT setzen. argp zeigt auf ein struct vt_mode.
VT_GETSTATE
Globale VT-Zustandsinfo ermitteln. argp zeigt auf ein

struct vt_stat {
    unsigned short v_active;  /* Aktives VT */
    unsigned short v_signal;  /* zu sendendes Signal */
    unsigned short v_state;   /* VT-Bitmaske */
};

Für jedes verwandte VT wird das entsprechende Bit in der v_state-Mitgliedsgruppe gesetzt (Kernel 1.0 bis 1.1.92).

VT_RELDISP
Release a display.
VT_ACTIVATE
Umschalten auf VT argp (1 <= argp <= MAX_NR_CONSOLES).
VT_WAITACTIVE
Warten, bis VT argp aktiviert wurde.
VT_DISALLOCATE
Den VT argp zugeordneten Speicher freigeben. (Seit 1.1.54)
VT_RESIZE
Die Vorstellung des Kernels über die Bildschirmgröße setzen. argp zeigt auf ein

struct vt_sizes {
    unsigned short v_rows;       /* # Zeilen */
    unsigned short v_cols;       /* # Spalten */
    unsigned short v_scrollsize; /* nicht mehr verwandt */
};

Beachten Sie, dass dies den Videomodus nicht ändert. Siehe resizecons(8). (seit 1.1.54)

VT_RESIZEX
Die Vorstellung des Kernels über verschiedene Bildschirmparameter setzen. argp zeigt auf ein

struct vt_consize {
    unsigned short v_rows;  /* number of rows */
    unsigned short v_cols;  /* number of columns */
    unsigned short v_vlin;  /* number of pixel rows
                               on screen */
    unsigned short v_clin;  /* number of pixel rows
                               per character */
    unsigned short v_vcol;  /* number of pixel columns
                               on screen */
    unsigned short v_ccol;  /* number of pixel columns
                               per character */
};

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 1.3.3.)

The action of the following ioctls depends on the first byte in the struct pointed to by argp, referred to here as the subcode. These are legal only for the superuser or the owner of the current terminal.

TIOCLINUX, subcode=0
Dump the screen. Disappeared in 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 1.1.92.
TIOCLINUX, subcode=2
Auswahl setzen. argp zeigt auf
struct {
   char  subcode;
   short xs, ys, xe, ye;
   short sel_mode;
};
xs und ys sind die Anfangsspalte und -zeile. xe und ye sind die Endspalte und -zeile. (Obere linke Ecke ist Zeile=Spalte=1.) sel_mode ist 0 für Zeichen-für-Zeichen-Auswahl, 1 für Wort-für-Wort-Auswahl oder 2 für Zeile-für-Zeile-Auswahl. Die angegebenen Bildschirmzeichen werden hervorgehoben und in dem statischen Feld sel_buffer in devices/char/console.c gespeichert.
TIOCLINUX, subcode=3
Auswahl einfügen. Die Zeichen des Auswahlpuffers werden nach fd geschrieben.
TIOCLINUX, subcode=4
Bildschirm-Leeren rückgängig machen.
TIOCLINUX, subcode=5
Setzt die Inhalte einer 256-Bit-Nachschlagetabelle, die Zeichen in einem »Wort« für eine Wort-für-Wort-Auswahl definiert (seit 1.1.32).
TIOCLINUX, subcode=6
argp zeigt auf ein Zeichen, das auf den Wert der Kernelvariable shift_state gesetzt ist. (Seit 1.1.32)
TIOCLINUX, subcode=7
argp zeigt auf ein Zeichen, das auf den Wert der Kernelvariable report_mouse gesetzt ist. (Seit 1.1.33)
TIOCLINUX, subcode=8
Bildschirmbreite und -höhe, Cursor-Position und alle Zeichen-Attribut-Paare ausgeben. (Nur Kernel 1.1.67 bis 1.1.91. Mit Kernel 1.1.92 und neuer lesen Sie stattdessen aus /dev/vcsa*.)
TIOCLINUX, subcode=9
Bildschirmbreite und -höhe, Cursor-Position und alle Zeichen-Attribut-Paare wiederherstellen. (Nur Kernel 1.1.67 bis 1.1.91. Mit Kernel 1.1.92 und neuer schreiben Sie stattdessen in /dev/vcsa*.)
TIOCLINUX, subcode=10
Handhabt die Stromsparfunktionen der neuen Bildschirmgeneration. VESA-Bildschirmleerungsmods wird mit argp[1] gesetzt, wodurch geregelt wird, was bei Bildschirmleerung passiert:
0:
Bildschirmleeren ist deaktiviert.
1:
Die aktuellen Videoadapterregistereinstellungen werden gespeichert. Dann wird der Controller programmiert, die vertikalen Synchronisationspulse zu deaktivieren. Dies versetzt den Bildschirm in den »standby«-Modus. Falls Ihr Bildschirm ein »Off_Mode«-Zeitschaltwerk hat, dann wird er sich von selbst abschalten.
2:
Die aktuellen Einstellungen werden gespeichert, dann werden sowohl die vertikalen als auch die horizontalen Synchronisationspulse deaktiviert. Dies versetzt den Bildschirm in den »off«-Modus. Falls Ihr Bildschirm kein »Off_Mode«-Zeitschaltwerk hat oder falls Sie möchten, dass sich Ihr Bildschirm sofort ausschaltet, wenn das »Off_Mode«-Zeitschaltwerk abläuft, dann wählen Sie diese Option. (Vorsicht: Häufiges Herunterfahren wird den Bildschirm beschädigen.) (seit 1.1.76)

RÜCKGABEWERT

Bei Erfolg wird 0 zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

errno kann einer der folgenden Werte annehmen:
EBADF
Der Dateideskriptor ist ungültig.
ENOTTY
The file descriptor is not associated with a character special device, or the specified request does not apply to it.
EINVAL
Der Dateideskriptor oder argp ist ungültig.
EPERM
Unzureichende Berechtigung.

ANMERKUNGEN

Warnung: Betrachten Sie diese Handbuchseite nicht als Dokumentation der Konsole-Ioctls von Linux. Sie wird nur für die Neugierigen als Alternative zum Lesen der Quellen bereitgestellt. Ioctls sind nicht dokumentierte Interna von Linux und können sich ohne Hinweis ändern. (Und tatsächlich beschreibt diese Handbuchseite mehr oder weniger die Situation von Kernel Version 1.1.94. Bei früheren Versionen gibt es viele kleine und nicht so kleine Unterschiede.)

Oft werden Ioctls für die Kommunikation zwischen dem Kernel und einem bestimmten, gut bekannten Programm eingeführt (Fdisk, Hdparm, Setserial, Tunelp, Loadkeys, Selection, Setfont, usw.). Sein Verhalten wird sich ändern, wenn es dieses bestimmte Programm erfordert.

Programme, die diese Ioctls verwenden, werden nicht auf andere Versionen von UNIX portierbar sein, sie werden nicht auf älteren Versionen von Linux und nicht auf zukünftigen Versionen von Linux funktionieren.

Verwenden Sie POSIX-Funktionen.

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <[email protected]> und Helge Kreutzmann <[email protected]> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <[email protected]>.