NOM
ioctl de console - ioctl pour les consoles et terminaux virtuels.
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 fixé à 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
version1.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
Fixe 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
Fixe 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 (voir 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
Fixe 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
Fixe 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
Fixe 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
Fixe le mode courant 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
Fixe 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
Fixe 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
Fixe 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
Fixe 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
Fixe 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
Fixe 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 fixé
à 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.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Simon Paillard
<simon.paillard@resel.enst-bretagne.fr> et l’équipe francophone de
traduction de Debian.
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> ».