Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       ioctl_console - Ioctls pour les consoles et terminaux virtuels

DESCRIPTION

       Les  requêtes ioctl(2) spécifiques à Linux suivantes sont disponibles pour les consoles et
       terminaux virtuels. 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
              LED_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 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éfinit  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è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 est un entier non signé qui peut valoir :

              KD_TEXT       0x00
              KD_GRAPHICS   0x01

       KDGETMODE
              Récupère le mode texte/graphique. argp pointe vers un int qui prend une des valeurs
              précédentes de KDSETMODE.

       KDMKTONE
              Génère  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 en nombre de cycles, 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é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 cas, 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 Linux 1.3.3.)

       PIO_CMAP
              Change the default text-mode color map.  argp  points  to  a  48-byte  array  which
              contains,  in  order,  the  Red, Green, and Blue values for the 16 available screen
              colors: 0 is off, and 255 is full intensity. The  default  colors  are,  in  order:
              black,  dark red, dark green, brown, dark blue, dark purple, dark cyan, light grey,
              dark grey, bright red, bright green, yellow, bright  blue,  bright  purple,  bright
              cyan, and white. (Since 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
              Resets  the  screen font, size, and Unicode mapping to the bootup defaults. argp is
              unused, but should be set to NULL to ensure compatibility with future  versions  of
              Linux. (Since Linux 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'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è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 un tableau de

                  struct unipair {
                      unsigned short unicode;
                      unsigned short fontpos;
                  };

              (Depuis Linux 1.1.92.)

       PIO_UNIMAP
              Définit   l'association  Unicode/fonte  du  noyau.  argp  pointe  vers  une  struct
              unimapdesc. (Depuis Linux 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 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   positionne 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
              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 Linux 1.1.63.)

       KDSETKEYCODE
              Écrit 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è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 contrôles de processus
              VT_ACKACQ    changement de contexte

       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 Linux 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;       /* 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
              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
              Linux 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 terminal courant.

       TIOCLINUX, subcode=0
              Fait 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ère les informations sur la tâche. A disparu dans Linux 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 Linux 1.1.32.)

       TIOCLINUX, subcode=6
              argp  pointe  vers  un  caractère qui prend la valeur de la variable shift_state du
              noyau. (Depuis Linux 1.1.32.)

       TIOCLINUX, subcode=7
              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
              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é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)

VALEUR RENVOYÉE

       On  success,  0  is returned. On failure, -1 is returned, and errno is set to indicate the
       error.

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 la requête 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 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  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 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),  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

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.