Date création : 30-03-2008 14:00:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section4 - Périphériques]
CONSOLE_IOCTLS
Index
- NOM
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- AVERTISSEMENT
- VOIR AUSSI
- TRADUCTION
NOM
ioctl de console - ioctl pour les consoles et terminaux virtuels.
DESCRIPTION
Les requêtes ioctl() 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 entier long. 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 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
-
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 structure 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 {
u_short charcount; /* nombre de caractères (256 or 512) */
u_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 {
u_short entry_ct;
struct unipair *entries;
};
où entries pointe vers une structure de type :
struct unipair {
u_short unicode;
u_short fontpos;
};
(Depuis 1.1.92.)
- PIO_UNIMAP
-
Fixe l'association Unicode/Police du noyau. argp pointe vers une
structure de type 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 {
u_short advised_hashsize; /* 0 si sans opinion */
u_short advised_hashstep; /* 0 si sans opinion */
u_short advised_hashlevel; /* 0 si sans opinion */
};
(Depuis 1.1.92.)
- KDGKBMODE
-
Récupère le mode courant du clavier. argp pointe vers un entier 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 entier long égal à une des
valeurs précédentes.
- KDGKBMETA
-
Récupère le mode de gestion des méta-touches. argp pointe vers un entier
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 entier 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 {
u_char kb_table;
u_char kb_index;
u_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 structure
de type kbentry.
- KDGKBSENT
-
Récupère la chaîne d'une touche fonction. argp pointe vers une structure
de type :
struct kbsentry {
u_char kb_func;
u_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 structure de
type 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 { u_char diacr, base, 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, 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 structure de type 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
entier 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 écriture, 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
valeur :
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 structure de
type 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 {
ushort v_active; /* terminal virtuel actif*/
ushort v_signal; /* signal à envoyer */
ushort 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 {
ushort v_rows; /* # lignes */
ushort v_cols; /* # colonnes */
ushort 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 {
ushort v_rows; /* nombre de lignes */
ushort v_cols; /* nombre de colonnes */
ushort v_vlin; /* lignes de pixels sur l'écran */
ushort v_clin; /* lignes de pixels par caractère */
ushort v_vcol; /* colonnes de pixels sur l'écran */
ushort 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élection 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 sauvés, puis le contrôleur est programmé 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 sauvé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. (Caution : 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.
AVERTISSEMENT
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. (Et
en effet, cette page décrit la situation au moment du noyau 1.1.94 ; il y a
des différences mineures et même pas si mineurs 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
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.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|