NOM¶
console_ioctl - Ioctl pour les consoles et terminaux virtuels
DESCRIPTION¶
Les requêtes
ioctl(2) spécifiques à Linux suivants sont
disponibles. Chacune d'entre elles nécessite un troisième
paramètre, ici noté
argp.
- KDGETLED
- Récupère l'état des LED. argp pointe
vers un char. L'état des LED est enregistré dans les
trois bits de poids le plus faible de *argp, comme indiqué
ci-dessous :
LED_CAP 0x04 led du verrouillage des majuscules
LEC_NUM 0x02 led du verrouillage du pavé numérique
LED_SCR 0x01 led du verrouillage du défilement
- KDSETLED
- Configure l'état des LED. Les LED sont
configurées suivant la valeur des trois bits de poids faible de
*argp. Cependant, si un bit de poids plus fort est défini
à 1, les LED reviennent dans leur état normal, affichant
l'état des fonctions du clavier : verrouillage des majuscules,
verrouillage du pavé numérique et verrouillage du
défilement.
Avant la version 1.1.54 du noyau, les LED reflétaient seulement
l'état fonctionnel du clavier, modifiable par KDGETLED/KDSETLED. Depuis
la version 1.1.54, les LED peuvent être utilisées pour afficher
des informations arbitraires, mais affichent par défaut l'état
fonctionnel du clavier. Les deux ioctl ci-dessous permettent d'accéder
à cet état :
- KDGKBLED
- Récupère l'état du clavier (et non des
LED) : verrouillage des majuscules, verrouillage du pavé
numérique et verrouillage du défilement. argp pointe vers
un char stockant l'état. Les trois bits de poids faible (masque 0x7)
indiquent l'état actuel, alors que les trois bits de poids faible de
l'autre demi-octet (masque 0x70) indiquent l'état par
défaut.
- KDSKBLED
- Définit l'état du clavier (et non des LED) :
verrouillage des majuscules, verrouillage du pavé numérique et
verrouillage du défilement. argp indique les états
voulus. Les trois bits de poids faible (masque 0x7) indiquent les
états et les trois bits de poids faible de l'autre demi-octet suivant
(masque 0x70) indiquent les états par défaut. (Depuis
1.1.54.)
- KDGKBTYPE
- Récupère le type de clavier. Retourne la valeur
KB_101, définie comme 0x02.
- KDADDIO
- Ajoute un port aux ports d'entrée/sortie valables.
Équivalent à ioperm(arg,1,1).
- KDDELIO
- Supprime un port des ports d'entrée/sortie valables.
Équivalent à ioperm(arg,1,0).
- KDENABIO
- Active les entrées/sorties vers la carte vidéo.
Équivalent à ioperm(0x3b4, 0x3df-0x3b4+1, 1).
- KDDISABIO
- Désactive les entrées/sorties vers la carte
vidéo. Équivalent à ioperm(0x3b4, 0x3df-0x3b4+1,
0)..
- KDSETMODE
- Définit le mode texte/graphique. argp peut
valoir :
KD_TEXT 0x00
KD_GRAPHICS 0x01
- KDGETMODE
- Récupère le mode texte/graphique. argp
pointe vers un long qui prend une des valeurs
précédentes.
- KDMKTONE
- Génère une note d'une durée donnée. Les
16 bits de poids faible de argp indiquent la période en nombre
de cycles, et les 16 bits de poids fort indiquent la durée en
millisecondes. Une durée nulle correspond à un son coupé.
La ligne de commande est immédiatement rendue. Par exemple,
argp = (125<<16) + 0x637 indiquerait le bip normalement
associé à Ctrl-G.
- KIOCSOUND
- Démarre et arrête la génération du son.
Les 16 bits de poids faible de argp indiquent la période en
nombre de cycles (c'est-à-dire argp = 1193180/fréquence).
argp = 0 coupe le son. Dans les deux, le contrôle de la ligne
de commande est rendu immédiatement.
- GIO_CMAP
- Récupère du noyau la table de correspondance
actuelle des couleurs par défaut. argp pointe vers un tableau
de 48 octets. (Depuis 1.3.3.)
- PIO_CMAP
- Modifie le plan par défaut des couleurs du mode texte.
argp pointe vers un tableau de 48 octets contenant dans l'ordre les
valeurs des 16 couleurs disponibles, en Rouge, Vert et Bleu : 0 pour
aucune, 255 pour l'intensité maximale. Les couleurs par défaut
sont dans l'ordre : le noir, le rouge foncé, le vert foncé,
le marron, le bleu foncé, le violet foncé, le cyan foncé,
le gris clair, le gris foncé, le rouge, le vert, le jaune, le bleu,
le violet, le cyan et le blanc. (Depuis 1.3.3.)
- GIO_FONT
- Récupère la fonte de l'écran de 256
caractères sous sa forme étendue. argp pointe vers un
tableau de 8192 octets. Le code d'erreur EINVAL est renvoyé si
la fonte alors chargée est définie sur 512 caractères ou si
la console n'est pas en mode texte.
- GIO_FONTX
- Récupère la fonte de l'écran et ses
informations relatives. argp pointe vers une struct
consolefontdesc (consultez PIO_FONTX). Lors de l'appel, le
champ charcount devrait être configuré au nombre maximal
de caractères correspondant à la taille du tampon vers lequel
pointe chardata. Lors du retour, charcount et
charheight sont remplis des données respectives de la fonte
actuellement chargée, le tableau chardata contenant les
données de la fonte si la valeur initiale de charcount indique
un espace disque suffisant, sinon le tampon reste intact et errno
contient ENOMEM. (Depuis 1.3.3.)
- PIO_FONT
- Définit la fonte (de 256 caractères) de
l'écran et charge la fonte dans le générateur de
caractères EGA/VGA. argp pointe vers un tableau de
correspondance de 8192 octets, comprenant 32 octets par caractère.
Seuls N d'entre eux sont utilisés pour une fonte 8xN (0
< N <= 32). Cet appel invalide également la
correspondance Unicode.
- PIO_FONTX
- Définit la fonte de l'écran et les informations
pour le rendu. argp pointe vers une structure de type :
struct consolefontdesc {
unsigned short charcount; /* nombre de caractères
(256 ou 512) */
unsigned short charheight; /* lignes par caractère
(1-32) */
char *chardata; /* données de la fonte
forme étendue */
};
Si nécessaire, la taille de l'écran sera modifiée et un
signal SIGWINCH sera envoyé aux processus appropriés. Cet
appel invalide également la correspondance Unicode. (Depuis
1.3.1.)
- PIO_FONTRESET
- Rétablit la fonte, la taille et la correspondance
Unicode de l'écran aux valeurs par défaut de démarrage
(boot). argp n'est pas utilisé, mais ne doit pas valoir NULL
pour la compatibilité avec les futures versions de Linux. (Depuis
1.3.28.)
- GIO_SCRNMAP
- Récupère la correspondance de l'écran du
noyau. argp pointe vers un espace de taille E_TABSZ, qui recevra
les positions de la fonte utilisées pour afficher chaque
caractère. Les informations renvoyées par cet appel ne seront
sûrement pas intéressantes si la fonte chargée a plus de
256 caractères.
- GIO_UNISCRNMAP
- Récupère la correspondance Unicode complète
du noyau. argp pointe vers un espace de taille
E_TABSZ*sizeof(unsigned short), qui recevra la représentation Unicode
de chaque caractère. Un jeu spécial d'Unicodes, démarrant
à U+F000, est utilisé pour représentation les
correspondances directes avec les fontes (« direct to font
mappings »). (Depuis 1.3.1.)
- PIO_SCRNMAP
- Charge dans le noyau la table « définissable
par l'utilisateur » (la quatrième), qui fait la
correspondance entre octet et symboles à l'écran de la console.
argp pointe vers un espace de taille E_TABSZ.
- PIO_UNISCRNMAP
- Charge dans le noyau la table « définissable
par l'utilisateur » (la quatrième), qui fait la
correspondance entre octet et Unicodes, qui sont alors convertis en
symboles à l'écran d'après la table de correspondance
déjà chargée entre Unicode et fonte. Les Unicodes
spéciaux, démarrant à U+F000, peuvent être
utilisés pour une correspondance directe avec les symboles de la
fonte. (Depuis 1.3.1.)
- GIO_UNIMAP
- Récupère la correspondance Unicode/Fonte du
noyau. argp pointe vers une structure de type :
struct unimapdesc {
unsigned short entry_ct;
struct unipair *entries;
};
où entries pointe vers une structure de type :
struct unipair {
unsigned short unicode;
unsigned short fontpos;
};
(Depuis 1.1.92.)
- PIO_UNIMAP
- Définit l'association Unicode/Police du noyau.
argp pointe vers une struct unimapdesc. (Depuis 1.1.92)
- PIO_UNIMAPCLR
- Vide la table, éventuellement en informant
l'algorithme de hachage. argp pointe vers une structure de
type :
struct unimapinit {
unsigned short advised_hashsize; /* 0 si sans opinion */
unsigned short advised_hashstep; /* 0 si sans opinion */
unsigned short advised_hashlevel; /* 0 si sans opinion */
};
(Depuis 1.1.92.)
- KDGKBMODE
- Récupère le mode courant du clavier. argp
pointe vers un long qui prend une de ces valeurs :
K_RAW 0x00
K_XLATE 0x01
K_MEDIUMRAW 0x02
K_UNICODE 0x03
- KDSKBMODE
- Définit le mode actuel du clavier. argp est un
long égal à une des valeurs précédentes.
- KDGKBMETA
- Récupère le mode de gestion des
méta-touches. argp pointe vers un long qui prend une
des valeurs suivantes :
K_METABIT 0x03 positionne le bit de poids fort
K_ESCPREFIX 0x04 préfixe pour les échappements
- KDSKBMETA
- Définit le mode de gestion des méta-touches.
argp est un long égal à une des valeurs
précédentes.
- KDGKBENT
- Récupère une entrée dans la table de
traduction des touches (code de touche vers code d'action). argp
pointe vers une structure de type :
struct kbentry {
unsigned char kb_table;
unsigned char kb_index;
unsigned short kb_value;
};
dont les deux premiers membres sont renseignés : kb_table
sélectionne la table de touches (0<= kb_table <
MAX_NR_KEYMAPS), et kb_index est le code de touche (0 <=
kb_index < NR_KEYS). kb_value est positionné avec le
code d'action correspondant ou K_HOLE si la touche n'existe pas ou encore
K_NOSUCHMAP si kb_table n'est pas valable.
- KDSKBENT
- Définit une entrée de la table de traduction.
argp pointe vers une struct kbentry.
- KDGKBSENT
- Récupère la chaîne d'une touche fonction.
argp pointe vers une structure de type :
struct kbsentry {
unsigned char kb_func;
unsigned char kb_string[512];
};
kb_string fournit la chaîne (terminée par un
caractère nul) correspondant au code d'action de la
kb_funcième touche fonction.
- KDSKBSENT
- Définit la chaîne d'une touche fonction.
argp pointe vers une struct kbsentry.
- KDGKBDIACR
- Lit la table des accents du noyau. argp pointe vers
une structure de type :
struct kbdiacrs {
unsigned int kb_cnt;
struct kbdiacr kbdiacr[256];
};
où kb_cnt est le nombre d'entrées dans le tableau, chaque
entrée étant une structure de type :
struct kbdiacr {
unsigned char diacr;
unsigned char base;
unsigned char result;
};
- KDGETKEYCODE
- Lit une entrée de la table des codes touche du noyau
(« scan code » vers code touche). argp pointe
vers une structure de type :
struct kbkeycode {
unsigned int scancode;
unsigned int keycode;
};
keycode fournit le code touche correspondant à scancode.
(89 <= scancode <= 255 seulement. Pour 1 <=
scancode <= 88, keycode==scancode.) (Depuis
1.1.63.)
- KDSETKEYCODE
- Écrit une entrée de la table des codes touche du
noyau. argp pointe vers une struct kbkeycode. (Depuis
1.1.63.)
- KDSIGACCEPT
- Le processus signale sa volonté d'accepter le signal
argp quand il est généré en pressant une certaine
combinaison de touches. (1 <= argp <= NSIG). (Consultez
spawn_console() dans linux/drivers/char/keyboard.c)
- VT_OPENQRY
- Renvoie la première console disponible (non ouverte).
argp pointe vers un int auquel est affecté le
numéro du terminal virtuel (1 <= *argp <=
MAX_NR_CONSOLES).
- VT_GETMODE
- Récupère le mode du terminal virtuel
(« vt ») actif. argp pointe vers une structure
de type :
struct vt_mode {
char mode; /* mode du terminal virtuel */
char waitv; /* si positionné, met les écritures en attente
et permet les écritures, sinon */
short relsig; /* signal à lever en cas de libération */
short acqsig; /* signal à lever en cas d'acquisition */
short frsig; /* pas utilisé (mis à 0) */
};
qui indique le mode du terminal virtuel actif. mode prend une des
valeurs :
VT_AUTO changement de vt automatique
VT_PROCESS changement de vt contrôlé par un processus
VT_ACKACQ changement de vt après confirmation
- VT_SETMODE
- Définit l'état du terminal virtuel actif.
argp pointe vers une struct vt_mode.
- VT_GETSTATE
- Récupère l'information globale sur l'état du
terminal virtuel. argp pointe vers une structure de type :
struct vt_stat {
unsigned short v_active; /* terminal virtuel actif */
unsigned short v_signal; /* signal à envoyer */
unsigned short v_state; /* masque de bits de terminaux virtuels */
};
Pour chaque terminal virtuel utilisé, le bit correspondant de
v_state est positionné. (noyaux 1.0 à 1.1.92.)
- VT_RELDISP
- Libère un affichage.
- VT_ACTIVATE
- Passe au terminal virtuel argp (1 <= argp
<= MAX_NR_CONSOLES).
- VT_WAITACTIVE
- Attend jusqu'à ce que le terminal virtuel argp
soit activé.
- VT_DISALLOCATE
- Libère la mémoire associée au terminal
virtuel argp. (Depuis 1.1.54.)
- VT_RESIZE
- Informe le noyau sur la taille de l'écran. argp
pointe vers une structure de type :
struct vt_sizes {
unsigned short v_rows; /* # lignes */
unsigned short v_cols; /* # colonnes */
unsigned short v_scrollsize; /* n'est plus utilisé */
};
Notez que ça ne change pas le mode vidéo. Consultez
resizecons(8). (Depuis 1.1.54.)
- VT_RESIZEX
- Informe le noyau de divers paramètres de l'écran.
argp pointe vers une structure de type :
struct vt_consize {
unsigned short v_rows; /* nombre de lignes */
unsigned short v_cols; /* nombre de colonnes */
unsigned short v_vlin; /* lignes de pixels
sur l'écran */
unsigned short v_clin; /* lignes de pixels
par caractère */
unsigned short v_vcol; /* colonnes de pixels
sur l'écran */
unsigned short v_ccol; /* colonnes de pixels
par caractère */
};
Tout paramètre peut être mis à zéro pour indiquer
qu'aucun changement n'est souhaité. Si plusieurs paramètres sont
positionnés, ils doivent être cohérents. Notez que ça
ne change pas le mode vidéo. Consultez resizecons(8). (Depuis
1.3.3.)
Les actions des ioctls suivants dépendent du premier octet de la structure
pointée par
argp, qui sera appelé
subcode par la
suite. Elles ne sont autorisées que pour le superutilisateur ou pour le
propriétaire du tty courant.
- TIOCLINUX, subcode=0
- Fait un cliché de l'écran. A disparu dans le
noyau 1.1.92. (Avec les noyaux 1.1.92 et suivants, lisez /dev/vcsN ou
/dev/vcsaN à la place.)
- TIOCLINUX, subcode=1
- Récupère les informations sur la tâche. A
disparu dans 1.1.92.
- TIOCLINUX, subcode=2
- Définit la sélection. argp pointe vers une
structure de type :
struct {
char subcode;
short xs, ys, xe, ye;
short sel_mode;
};
xs et ys sont la colonne et la ligne de début. xe
et ye la colonne et la ligne de fin. (Le coin en haut à gauche
a pour coordonnées ligne=colonne=1.) sel_mode vaut 0 pour les
sélections caractère par caractère, 1 pour les
sélections mot à mot ou 2 pour les sélections ligne à
ligne. Les caractères de l'écran indiqués sont
surlignés et sauvés dans le tableau statique sel_buffer de
devices/char/console.c.
- TIOCLINUX, subcode=3
- Colle la sélection. Les caractères dans le tampon
de la sélection sont écrits dans fd.
- TIOCLINUX, subcode=4
- Arrête l'économiseur d'écran.
- TIOCLINUX, subcode=5
- Définit le contenu de la table de correspondance (de
256 bits) définissant les caractères d'un
« mot » pour une sélection mot à mot.
(Depuis 1.1.32.)
- TIOCLINUX, subcode=6
- argp pointe vers un caractère qui prend la
valeur de la variable shift_state du noyau. (Depuis 1.1.32.)
- TIOCLINUX, subcode=7
- argp pointe vers un caractère qui prend la
valeur de la variable report_mouse du noyau. (Depuis 1.1.33.)
- TIOCLINUX, subcode=8
- Fait un cliché de largeur et de la hauteur de
l'écran, de la position du curseur et de toutes les paires
caractère-attribut. (Noyaux 1.1.67 à 1.1.91 uniquement. Avec les
noyaux 1.1.92 et suivants, lisez /dev/vcsa* à la place.)
- TIOCLINUX, subcode=9
- Restaure la largeur et la hauteur de l'écran, la
position du curseur et toutes les paires caractère-attribut. (Noyaux
1.1.67 à 1.1.91 uniquement. Avec les noyaux 1.1.92 et suivants,
écrivez dans /dev/vcsa* à la place.)
- TIOCLINUX, subcode=10
- Gère les fonctionnalités de gestion
d'énergie de la nouvelle génération de moniteurs. Le mode
de veille d'écran VESA est définit à argp[1], qui
défini ce que la veille produit :
0 : La veille de l'écran est désactivée.
1 : Les paramètres du registre de l'adaptateur vidéo
sont enregistrés, puis le contrôleur est programmé pour
couper les pulsations de synchronisation verticales. Ceci place le
moniteur en mode « standby ». Si votre moniteur a un
minuteur, il finira par s'éteindre de lui-même.
2 : Les paramètres courants sont enregistrés, puis
les pulsations de synchronisation verticales et horizontales sont
coupées. Ceci place votre moniteur en mode
« off ». Si votre moniteur n'a pas de minuteur ou si
vous souhaitez que votre moniteur s'éteigne immédiatement quand
le minuteur de veille arrive à bout, vous devriez choisir cette
option. ( Prudence : Des extinctions fréquentes
abîmeront votre moniteur.)
(Depuis 1.1.76)
VALEUR RENVOYÉE¶
En cas de succès, 0 est renvoyé. En cas d'erreur, -1 est renvoyé,
est
errno est positionné.
ERREURS¶
errno peut prendre une de ces valeurs :
- EBADF
- Le descripteur de fichier est invalide.
- ENOTTY
- Le descripteur de fichier n'est pas associé avec un
périphérique spécial de type caractère ou la
requête spécifiée ne peut pas lui être
appliquée.
- EINVAL
- Le descripteur de fichier ou argp est n'est pas
valable.
- EPERM
- Droits insuffisants.
NOTES¶
Attention : ne considérez pas cette page de manuel comme une
documentation des ioctls des consoles Linux. Elle n'existe que pour satisfaire
votre curiosité, et pour vous éviter de lire les sources. Les ioctls
sont documentés à l'intérieur de Linux et peuvent changer
à tout moment sans notification. (En réalité, cette page
décrit la situation au moment du noyau 1.1.94 ; il existe des
différences mineures, voire plus importantes, avec les versions plus
récentes.)
Très souvent, les ioctls sont ajoutés pour la communication entre le
noyau et un programme particulier assez connu (fdisk, hdparm, setserial,
tunelp, loadkeys, selection, setfont, etc.), et leurs comportements changeront
quand ce programme particulier le nécessite.
Les programmes qui utilisent ces ioctls ne seront pas portables vers d'autres
versions d'UNIX, et ne fonctionneront pas avec des versions de Linux plus
anciennes ou plus récentes.
Utilisez les fonctions POSIX.
VOIR AUSSI¶
dumpkeys(1),
kbd_mode(1),
loadkeys(1),
mknod(1),
setleds(1),
setmetamode(1),
execve(2),
fcntl(2),
ioperm(2),
termios(3),
console(4),
console_codes(4),
mt(4),
sd(4),
tty(4),
tty_ioctl(4),
ttyS(4),
vcs(4),
vcsa(4),
charsets(7),
mapscrn(8),
resizecons(8),
setfont(8)
/usr/include/linux/kd.h,
/usr/include/linux/vt.h
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Simon Paillard et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».