ioctl_kd(2)

BEZEICHNUNG
ioctl_kd - Ioctls für Konsolen-Terminal und virtuelle Konsolen

ÜBERSICHT
#include <linux/kd.h>  /* Definition der op-Konstanten */
#include <sys/ioctl.h>

int ioctl(int dd, unsigned long op, void *argz);

BESCHREIBUNG
Die folgenden, Linux-spezifischen ioctl(2)-Aktionen werden für Konsolen-Terminals und virtuelle Konsolen unterstützt.

KDGETLED
    Ermittelt den Zustand der LEDs. argz zeigt auf ein char. Die unteren drei Bits von *argz werden wie folgt auf den Zustand der LEDs gesetzt:
    LED_CAP | 0x04 | Feststelltaste-LED
    LED_NUM | 0x02 | Num-LED
    LED_SCR | 0x01 | Rollen-LED

KDSETLED
    Setzt die LEDs. Die LEDs werden so gesetzt, dass sie den niedrigeren drei Bits des vorzeichenlosen »long integer« argz 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 Linux 1.1.54 gaben die LEDs lediglich den Zustand der entsprechenden Tastaturschalter wieder und KDGETLED/KDSETLED würde auch die Tastaturschalter ändern. Seit Linux 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). argz 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 Halbbytes (Maske 0x70) erhalten den Standardschalterzustand. (Seit Linux 1.1.54)

KDSKBLED
    Setzt die Tastaturschalter CapsLock, NumLock, ScrollLock (nicht die LEDs). argz ist ein vorzeichenloser »long integer«, der den gewünschten Schalterzustand enthält. Die niedrigrangigen drei Bits (Maske 0x7) enthalten den Schalterzustand und die niedrigrangigen Bits des nächsten Halbbytes (Maske 0x70) enthalten den Standardschalterzustand. (Seit Linux 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 Graphikkarte aktivieren. Äquivalent zu ioperm(0x3b4, 0x3df-0x3b4+1, 1).

KDDISABIO
    E/A zur Graphikkarte deaktivieren. Äquivalent zu ioperm(0x3b4, 0x3df-0x3b4+1, 0).

KDSETMODE
    Text-/Graphikmodus setzen. argz ist ein vorzeichenloser »long integer«, der eines der folgenden enthält:
    KD_TEXT | 0x00
    KD_GRAPHICS | 0x01

KDGETMODE
    Text-/Graphikmodus ermitteln. argz zeigt auf ein int, der auf einen der oben für KDSETMODE gezeigten Werte gesetzt wird.

KDMKTONE
    Erzeugt einen Ton der angegebenen Länge. Die niedrigen 16 Bits des vorzeichenlosen »long integer« in argz 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 argz = (125<<16) + 0x637 den Klang festlegen, der normalerweise mit Strg-G verbunden ist. (So seit Linux 0.99pl1; defekt in Linux 2.1.49-50.)

KIOCSOUND
    Beginnt oder beendet die Klangerzeugung. Die niedrigen 16 Bits von argz legen die Periode in Uhrzyklen fest (d.h. argz = 1193180/Frequenz). argz = 0 schaltet den Klang ab. In jedem Fall kehrt die Steuerung sofort zurück.

GIO_CMAP
    Ermittelt die aktuelle Vorgabefarbzuordnungstabelle des Kernels. argz zeigt auf ein 48-byte-Feld. (Seit Linux 1.3.3)

PIO_CMAP
    Ändert die Standardfarbtabelle im Textmodus. argz zeigt auf ein 48-byte- Feld, das in dieser Reihenfolge die Rot-, Grün- und Blauwerte für die 16 verfügbaren Bildschirmfarben enthält: 0 ist aus und 255 volle Intensität. Die vorgegebenen Farben sind in dieser Reihenfolge: Schwarz, Dunkelrot, Dunkelgrün, Braun, Dunkelblau, Dunkelviolett, Dunkelzyan, Hellgrau, Dunkelgrau, Hellrot, Hellgrün, Gelb, Hellblau, Hellviolett, Hellzyan und Weiß. (Seit Linux 1.3.3)

GIO_FONT
    Ermittelt die 256-Zeichen-Bildschirmschrift in expandierter Form. argz zeigt auf ein 8192-Byte-Feld. Schlägt mit Fehlercode EINVAL fehl, falls die derzeit geladene Schrift eine 512-Zeichen-Schrift ist oder falls sich die Konsole nicht im Textmodus befindet.

GIO_FONTX
    Ermittelt die Bildschirmschrift und zugehörige Informationen. argz zeigt auf ein struct consolefontdesc (siehe PIO_FONTX). Beim Aufruf sollte das Feld charcount auf die maximale Anzahl von Zeichen gesetzt werden, die in den Puffer passen, auf den chardata zeigt. Bei der Rückkehr sind charcount und charheight mit den respektiven Daten der aktuell geladenen Schrift gefüllt und das Feld chardata enthält die Schriftdaten, falls der ursprüngliche Wert von charcount anzeigt, dass genug Raum verfügbar war. Andernfalls bleibt der Puffer unverändert und errno ist auf ENOMEM gesetzt. (Seit Linux 1.3.1)

PIO_FONT
    Setzt die 256-Zeichen-Bildschirmschrift. Lädt Schrift in den EGA-/VGA-Zeichenerzeuger. argz zeigt auf eine 8192-Byte-Abbildung mit 32 Byte je Zeichen. Nur die ersten N davon werden für eine 8xN-Schrift (0 < N <= 32) benutzt. Dieser Aufruf annuliert außerdem das Abbilden per Unicode.

PIO_FONTX
    Bildschirmschrift und zugehörige Renderinginformation setzen. argz 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 */
        };

    Falls nötig, wird die Größe des Bildschirms entsprechend geändert und SIGWINCH an die entsprechenden Prozesse gesandt. Dieser Aufruf annuliert außerdem das Abbilden per Unicode. (Seit Linux 1.3.1)

PIO_FONTRESET
    Setzt die Bildschirmschrift, Größe und das Abbilden per Unicode auf die Voreinstellungen beim Systemstart zurück. argz wird nicht benutzt, sollte aber auf NULL gesetzt werden, um Kompatibilität mit zukünftigen Versionen von Linux sicherzustellen. (Seit Linux 1.3.28)

GIO_SCRNMAP
    Holt Bildschirmabbildung vom Kernel. argz zeigt auf einen Bereich der Größe E_TABSZ, der mit den benutzten Schriftpositionen geladen wird, um jedes Zeichen anzuzeigen. Dieser Aufruf wird wahrscheinlich nutzlose Informationen zurückgeben, falls die derzeit geladene Schrift mehr als 256 Zeichen hat.

GIO_UNISCRNMAP
    Holt vollständige Unicode-Bildschirmabbildung vom Kernel. argz zeigt auf einen Bereich der Größe E_TABSZ*sizeof(unsigned short), der mit den Unicodes geladen ist, die jedes Zeichen darstellen. Ein besonderer Satz von Unicodes, der bei U+F000 anfängt, wird benutzt, um »direkt zur Schrift«-Abbildungen darzustellen. (Seit Linux 1.3.1)

PIO_SCRNMAP
    Lädt die »benutzerdefinierbare« (vierte) Tabelle in den Kernel, die Bytes auf Konsolenschriftsymbole abbildet. argz zeigt auf ein Feld der Größe E_TABSZ.

PIO_UNISCRNMAP
    Lädt die »benutzerdefinierbare« (vierte) Tabelle in den Kernel, die Bytes in Unicodes abbildet, die dann gemäß der derzeit geladenen Unicode-in-Schrift-Abbildung in Bildschirmsymbole übersetzt werden. Besondere Unicodes beginnen bei U+F000 und können benutzt werden, um direkt auf die Schriftsymbole abzubilden. (Seit Linux 1.3.1)

GIO_UNIMAP
    Holt Unicode-in-Schrift-Abbildung vom Kernel. argz zeigt auf ein

        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 Linux 1.1.92)

PIO_UNIMAP
    Hinterlegt Unicode-in-Schrift-Abbildung im Kernel. argz zeigt auf ein struct unimapdesc. (Seit Linux 1.1.92)

PIO_UNIMAPCLR
    Leert die Tabelle, informiert möglicherweise über den Hash-Algorithmus. argz zeigt auf ein

        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 Linux 1.1.92)

KDGKBMODE
    Ermittelt aktuellen Tastaturmodus. argz zeigt auf einen long, der auf einen der folgenden Werte gesetzt wird:
    K_RAW | 0x00 /* Roher (Scancode-)Modus */
    K_XLATE | 0x01 /* Keycodes mittels Keymap übersetzen */
    K_MEDIUMRAW | 0x02 /* Medium-roher (Scancode-)Modus */
    K_UNICODE | 0x03 /* Unicode-Modus */
    K_OFF | 0x04 /* Deaktivierter Modus (seit Linux 2.6.39) */

KDSKBMODE
    Aktuellen Tastaturmodus setzen. argz ist ein long, der zu einem der oben für KDGKBMODE gezeigten Werte identisch ist.

KDGKBMETA
    Ermittelt den Metatasten-Handhabungsmodus. argz zeigt auf einen long, der auf einen der folgenden gesetzt ist:
    K_METABIT | 0x03 | setzt signifikantestes Bit
    K_ESCPREFIX | 0x04 | Maskierungsvorsatz

KDSKBMETA
    Setzt den Metatasten-Handhabungsmodus. argz zeigt auf einen long, der auf einen der für KDGKBMETA gezeigten Werte gesetzt ist.

KDGKBENT
    Ermittelt einen Eintrag in der Tastenübersetzungstabelle (Tastencode zu Aktionscode). argz zeigt auf ein

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

    wobei die ersten zwei Einträge ausgefüllt sind: kb_table wählt die Tastentabelle (0 <= kb_table < MAX_NR_KEYMAPS) und kb_index ist der Tastencode (0 <= kb_index < NR_KEYS). kb_value wird auf den entsprechenden Aktionscode oder K_HOLE, falls es keine solche Taste gibt, oder K_NOSUCHMAP, falls kb_table ungültig ist, gesetzt.

KDSKBENT
    Wählt einen Eintrag in der Übersetzungstabelle aus. argz zeigt auf ein struct kbentry.

KDGKBSENT
    Ermittelt eine Funktionstastenzeichenkette. argz zeigt auf ein

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

    kb_string wird auf die (Null-terminierte) Zeichenkette gesetzt, die dem Aktionscode der kb_funcn Funktionstaste entspricht.

KDSKBSENT
    Setzt einen Funktionstastenzeichenketteneintrag. argz zeigt auf ein struct kbsentry.

KDGKBDIACR
    Liest die Akzenttabelle des Kernels. argz zeigt auf ein

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

    wobei kb_cnt die Anzahl der Einträge in dem Feld und jedes dieser ein folgendes ist:

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

KDGETKEYCODE
    Liest den Kernel-Keycode-Tabelleneintrag (Scancode nach Keycode). argz zeigt auf ein

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

    keycode wird so eingestellt, dass er dem übergebenen scancode entspricht. (Nur 89 <= scancode <= 255. Für 1 <= scancode <= 88, keycode==scancode.) (Seit Linux 1.1.63)

KDSETKEYCODE
    Schreibt den Kernel-Tastaturcodetabelleneintrag. argz zeigt auf ein struct kbkeycode. (Seit Linux 1.1.63)

KDSIGACCEPT
    Der aufrufende Prozess zeigt an, dass er das Signal argz akzeptiert, wenn dieses durch Drücken der entsprechenden Tastenkombination erzeugt wird. (1 <= argz <= NSIG). (Siehe spawn_console() in linux/drivers/char/keyboard.c.)

RÜCKGABEWERT
Bei Erfolg wird 0 zurückgegeben (außer wo angegeben). Bei einem Fehlschlag wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.

FEHLER

EINVAL
    argz ist ungültig.

STANDARDS
Linux.

SIEHE AUCH
ioctl(2), ioctl_console(2)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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 die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.