Provided by: manpages-fr-dev_4.23.1-1_all 

NOM
ioctl_console - Ioctls pour les consoles et terminaux virtuels
DESCRIPTION
Les opérations ioctl(2) suivantes spécifiques à Linux sont disponibles pour les consoles et terminaux
virtuels. Chacune opération nécessite un troisième paramètre, ici noté argp.
KDGETLED
Récupérer 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
LED_NUM 0x02 LED du verrouillage du pavé numérique
LED_SCR 0x01 LED du verrouillage du défilement
KDSETLED
Configurer l'état des LED. Les LED sont configurées suivant la valeur des trois bits de poids
faible de l'entier non signé dans argp. Cependant, si un bit de poids plus fort est défini, 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 ioctls
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 (depuis Linux 1.1.54).
KDSKBLED
Définir l'état du clavier (et non des LED) : verrouillage des majuscules, verrouillage du pavé
numérique et verrouillage du défilement. argp est un entier long non signé qui 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
Linux 1.1.54).
KDGKBTYPE
Récupérer le type de clavier. Cela renvoie la valeur KB_101, définie comme 0x02.
KDADDIO
Ajouter un port aux ports d'entrée/sortie valables. Équivalent à ioperm(arg,1,1).
KDDELIO
Supprimer un port des ports d'entrée/sortie valables. Équivalent à ioperm(arg,1,0).
KDENABIO
Activer les entrées/sorties vers la carte vidéo. Équivalent à ioperm(0x3b4, 0x3df-0x3b4+1, 1).
KDDISABIO
Désactiver les entrées/sorties vers la carte vidéo. Équivalent à ioperm(0x3b4, 0x3df-0x3b4+1, 0).
KDSETMODE
Définir le mode texte/graphique. argp est un entier non signé qui peut valoir :
KD_TEXT 0x00
KD_GRAPHICS 0x01
KDGETMODE
Récupèrer le mode texte/graphique. argp pointe vers un int qui prend une des valeurs précédentes
de KDSETMODE.
KDMKTONE
Générer un son d'une durée donnée. Les 16 bits de poids faible de l'entier long non signé argp
indiquent la période des cycles d’horloge et les 16 bits de poids fort indiquent la durée en
milliseconde. Une durée nulle correspond à un son coupé. Le contrôle est immédiatement rendu. Par
exemple, argp = (125<<16) + 0x637 indiquerait le bip normalement associé à Ctrl-G (il en est ainsi
depuis Linux 0.99pl1 ; cassé depuis Linux 2.1.49-50.
KIOCSOUND
Démarrer ou arrêter la génération du son. Les 16 bits de poids faible de argp indiquent la période
des cycles d’horloge (c'est-à-dire argp = 1193180/fréquence). argp = 0 coupe le son. Dans les deux
cas, le contrôle de la ligne de commande est rendu immédiatement.
GIO_CMAP
Récupérer du noyau la table de correspondance actuelle des couleurs par défaut. argp pointe vers
un tableau de 48 octets. (Depuis Linux 1.3.3.)
PIO_CMAP
Modifier le plan par défaut des couleurs du mode texte. argp pointe vers un tableau de 48 octets
contenant, dans l'ordre, les valeurs rouge, vert et bleu, des 16 couleurs disponibles de l'écran :
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 brillant, le vert brillant, le jaune, le bleu brillant, le violet
brillant, le cyan brillant et le blanc (Depuis Linux 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 afférentes. 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, et le tableau chardata contient 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 Linux 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 les N premiers 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
struct consolefontdesc {
unsigned short charcount; /* caractères de la fonte
(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 Linux 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 doit valoir NULL pour la compatibilité avec les
futures versions de Linux. (Depuis Linux 1.3.28.)
GIO_SCRNMAP
Récupérer 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érer 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'Unicode, démarrant à U+F000, est utilisé pour représenter les correspondances directes
avec les fontes (« direct to font mappings »). (Depuis Linux 1.3.1.)
PIO_SCRNMAP
Charge dans le noyau la table « définissable par l'utilisateur » (la quatrième), qui fait la
correspondance entre octets et symboles sur 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 octets et Unicode, qui sont alors convertis en symboles à l'écran d'après la
table de correspondance déjà chargée entre Unicode et fonte. Les Unicode spéciaux, démarrant à
U+F000, peuvent être utilisés pour une correspondance directe avec les symboles de la fonte.
(Depuis Linux 1.3.1.)
GIO_UNIMAP
Récupérer 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 un tableau de
struct unipair {
unsigned short unicode;
unsigned short fontpos;
};
(Depuis Linux 1.1.92.)
PIO_UNIMAP
Définir l'association Unicode/fonte du noyau. argp pointe vers une struct unimapdesc. (Depuis
Linux 1.1.92)
PIO_UNIMAPCLR
Vider 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 Linux 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 /* mode brut (scancode) */
K_XLATE 0x01 /* Traduire les codes de touches avec les plans de touches */
K_MEDIUMRAW 0x02 /* mode brut intermédiaire (scancode) */
K_UNICODE 0x03 /* mode Unicode */
K_OFF 0x04 /* mode inactif ; depuis Linux 2.6.39 */
KDSKBMODE
Définit le mode actuel du clavier. argp est un long égal à une des valeurs affichées dans
KDGKBMODE.
KDGKBMETA
Récupère le mode de gestion des touches méta. argp pointe vers un long qui prend une des valeurs
suivantes :
K_METABIT 0x03 positionner le bit de poids fort
K_ESCPREFIX 0x04 préfixe d'échappement
KDSKBMETA
Définit le mode de gestion des touches méta. argp est un long égal à une des valeurs décrites
ci-dessus pour KDGKBMETA.
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 octet NULL ) 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
Lire 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
Lire 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 Linux 1.1.63.)
KDSETKEYCODE
Écrire une entrée de la table des codes touche du noyau. argp pointe vers une struct kbkeycode.
(Depuis Linux 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érer 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 contrôles de processus
VT_ACKACQ changement de contexte
VT_SETMODE
Définir l'état du terminal virtuel actif. argp pointe vers une struct vt_mode.
VT_GETSTATE
Récupérer 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é. (Linux 1.0 à
Linux 1.1.92.)
VT_RELDISP
Libérer un affichage.
VT_ACTIVATE
Passer au terminal virtuel argp (1 <= argp <= MAX_NR_CONSOLES).
VT_WAITACTIVE
Attendre jusqu'à ce que le terminal virtuel argp soit activé.
VT_DISALLOCATE
Libérer la mémoire associée au terminal virtuel argp. (Depuis Linux 1.1.54.)
VT_RESIZE
Informer le noyau sur la taille de l'écran. argp pointe vers une structure de type :
struct vt_sizes {
unsigned short v_rows; /* nombre de lignes */
unsigned short v_cols; /* nombre de colonnes */
unsigned short v_scrollsize; /* n'est plus utilisé */
};
Notez que ça ne change pas le mode vidéo. Consultez resizecons(8). (Depuis Linux 1.1.54.)
VT_RESIZEX
Informer 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 Linux 1.3.3.)
L'action des ioctls suivants dépend du premier octet de la structure vers laquelle pointe argp, qui sera
appelé subcode par la suite. Elles ne sont autorisées que pour le superutilisateur ou pour le
propriétaire du terminal courant. Les subcodes symboliques sont disponibles dans <linux/tiocl.h> depuis
Linux 2.5.71.
TIOCLINUX, subcode=0
Faire un cliché de l'écran. A disparu dans Linux 1.1.92. (Avec Linux 1.1.92 et suivants, lit
/dev/vcsN ou /dev/vcsaN à la place.)
TIOCLINUX, subcode=1
Récupérer les informations sur la tâche. A disparu dans Linux 1.1.92.
TIOCLINUX, subcode=TIOCL_SETSEL
Définir 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 un tampon du noyau.
Depuis Linux 6.7, l'utilisation de ce sous-code requiert la capacité CAP_SYS_ADMIN.
TIOCLINUX, subcode=TIOCL_PASTESEL
Coller la sélection. Les caractères dans le tampon de la sélection sont écrits dans fd.
Depuis Linux 6.7, l'utilisation de ce sous-code requiert la capacité CAP_SYS_ADMIN.
TIOCLINUX, subcode=TIOCL_UNBLANKSCREEN
réaffichage de l’écran
TIOCLINUX, subcode=TIOCL_SELLOADLUT
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 Linux 1.1.32.)
Depuis Linux 6.7, l'utilisation de ce sous-code requiert la capacité CAP_SYS_ADMIN.
TIOCLINUX, subcode=TIOCL_GETSHIFTSTATE
argp pointe vers un caractère qui prend la valeur de la variable shift_state du noyau. (Depuis
Linux 1.1.32.)
TIOCLINUX, subcode=TIOCL_GETMOUSEREPORTING
argp pointe vers un caractère qui prend la valeur de la variable report_mouse du noyau. (Depuis
Linux 1.1.33.)
TIOCLINUX, subcode=8
Faire un cliché de la largeur et hauteur de l'écran, de la position du curseur et de toutes les
paires caractère-attribut. (Linux 1.1.67 à Linux 1.1.91 uniquement. Avec les Linux 1.1.92 et
suivants, lit /dev/vcsa* à la place.)
TIOCLINUX, subcode=9
Restaurer la largeur et la hauteur de l'écran, la position du curseur et toutes les paires
caractère-attribut. (Linux 1.1.67 à Linux 1.1.91 uniquement. Avec Linux 1.1.92 et suivants, écrit
dans /dev/vcsa* à la place.)
TIOCLINUX, subcode=TIOCL_SETVESABLANK
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éfini à argp[1], qui définit 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. Cela 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. Cela 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 (blank_timer) arrive à bout, vous devriez choisir cette option.
(Prudence : Des extinctions fréquentes abîmeront votre moniteur.) (Depuis Linux 1.1.76)
TIOCLINUX, subcode=TIOCL_SETKMSGREDIRECT
Modifier la cible des messages du noyau (« console ») : par défaut et s'il est positionné sur 0,
les messages sont écrits sur le terminal virtuel (VT) actuellement actif. Le terminal sur lequel
écrire est un octet unique suivant subcode (depuis Linux 2.5.36).
TIOCLINUX, subcode=TIOCL_GETFGCONSOLE
Renvoit le nombre de terminaux virtuels (VT) actuellement au premier plan (depuis Linux 2.5.36).
TIOCLINUX, subcode=TIOCL_SCROLLCONSOLE
Faire défiler vers le bas le terminal (VT) au premier plan par le nombre de lines indiqué ou par
moitié d'écran si 0. lines vaut *(((int32_t *)&subcode) + 1) (depuis Linux 2.5.67).
TIOCLINUX, subcode=TIOCL_BLANKSCREEN
Mettre en veille le terminal (VT) au premier plan en ignorant les « coups » (frappes) : ne peut
être annulé qu'explicitement (en changeant de terminal, vers le mode texte, etc) (depuis
Linux 2.5.71).
TIOCLINUX, subcode=TIOCL_BLANKEDSCREEN
Renvoit le nombre de terminaux (VT) actuellement en veille, 0 si aucun (depuis Linux 2.5.71).
TIOCLINUX, subcode=16
Jamais utilisé.
TIOCLINUX, subcode=TIOCL_GETKMSGREDIRECT
Renvoit la cible des messages du noyau (depuis Linux 2.6.17).
VALEUR RENVOYÉE
En cas de succès, 0 est renvoyé (sauf autrement indiqué). En cas d'erreur, -1 est renvoyé et errno est
positionné pour indiquer l'erreur.
ERREURS
EBADF Le descripteur de fichier n’est pas valable.
EINVAL Le descripteur de fichier ou argp n'est pas valable.
ENOTTY Le descripteur de fichier n'est pas associé à un périphérique spécial de type caractère ou
l'opération spécifiée ne peut pas lui être appliquée.
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 des choses internes à Linux non documentées 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
connu (fdisk, hdparm, setserial, tunelp, loadkeys, selection, setfont, etc.), et leurs comportements
changeront quand ce programme particulier le nécessitera.
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 futures.
Utilisez les fonctions POSIX.
VOIR AUSSI
dumpkeys(1), kbd_mode(1), loadkeys(1), mknod(1), setleds(1), setmetamode(1), execve(2), fcntl(2),
ioctl_tty(2), ioperm(2), termios(3), console_codes(4), mt(4), sd(4), tty(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
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot
<david@tilapin.org>, Cédric Boutillier <cedric.boutillier@gmail.com>, Frédéric Hantrais
<fhantrais@gmail.com> et Jean-Philippe MENGUAL <jpmengual@debian.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
Pages du manuel de Linux 6.8 2 mai 2024 ioctl_console(2)