Provided by: manpages-es_1.55-10_all bug

NOMBRE

       console  ioctl  -  ioctl's  para  la  terminal  de  consola  y consolas
       virtuales

DESCRIPCI'ON

       Se admiten las siguientes peticiones ioctl() peculiares de Linux.  Cada
       una requiere un tercer argumento, supuesto aqui como argp.

       KDGETLED
              Obtiene  estado  de los LEDs.  argp apunta a un long int.  Los 3
              bits mas bajos de *argp se ponen segun el estado  de  los  LEDs,
              como sigue:

                  LED_CAP       0x04   LED Bloq. Mayus
                  LEC_NUM       0x02   LED Bloq. Num
                  LED_SCR       0x01   LED Bloq. Despl

       KDSETLED
              Enciende  los  LEDs.  Los LEDs se encienden segun los 3 bits mas
              bajos de argp.  Sin embargo, si se  pone  un  bit  de  mas  alto
              orden,  los LEDs se ponen a su funcionamiento normal: mostrar el
              estado de las funciones del teclado: bloqueo de  mayusculas,  de
              teclado auxiliar numerico y de desplazamiento.

       Antes  de  1.1.54,  los  LEDs  simplemente  reflejaban el estado de las
       correspondientes  senales  del  teclado,  y  KDGETLED/KDSETLED  tamiben
       cambiaban  las  senales  del  teclado.  Desde  1.1.54,  los LEDs pueden
       mostrar informacion arbitraria, pero por omision muestran  las  senales
       del  teclado.  Las 2 siguientes llamadas a ioctl se usan para acceder a
       las senales del teclado.

       KDGKBLED
              Obtiene las senales del teclado Bloq.Mayus,  BloqNum,  BloqDespl
              (no las luces).  argp apunta a un char que se pone con el estado
              de la senal.  Los  3  bits  de  mas  bajo  orden  (mascara  0x7)
              obtienen  el  estado  de la senal actual, y los bits de mas bajo
              orden de la siguiente cuarteta (mascara 0x70) obtienen el estado
              de la senal predeterminado. (Desde 1.1.54.)

       KDSKBLED
              Pone  las senales del teclado Bloq.Mayus, BloqNum, BloqDespl (no
              las luces).  argp tiene el estado de la senal  deseado.   Los  3
              bits  de  mas  bajo  orden  (mascara 0x7) tienen el estado de la
              senal, y los bits de mas bajo orden  de  la  siguiente  cuarteta
              (mascara  0x70)  tienen  el  estado  de la senal predeterminado.
              (Desde 1.1.54.)

       KDGKBTYPE
              Obtiene el tipo de  teclado.  Esto  devuelve  el  valor  KB_101,
              definido como 0x02.

       KDADDIO
              Anade puerto de E/S como valido. Equivale a ioperm(arg,1,1).

       KDDELIO
              Quita puerto de E/S como valido. Equivale a ioperm(arg,1,0).

       KDENABIO
              Habilita  E/S  a  la  tarjeta de video. Equivale a ioperm(0x3b4,
              0x3df-0x3b4+1, 1).

       KDDISABIO
              Inhabilita  la  E/S  a  la  tarjeta   de   video.   Equivale   a
              ioperm(0x3b4, 0x3df-0x3b4+1, 0).

       KDSETMODE
              Pone el modo de texto o grafico.  argp es uno de estos:

                  KD_TEXT       0x00
                  KD_GRAPHICS   0x01

       KDGETMODE
              Obtiene  el  modo de texto o grafico.  argp apunta a un long int
              que se pone a uno de los valores de arriba.

       KDMKTONE
              Genera un tono de la longitud especificada.   Los  16  bits  mas
              bajos  de  argp especifican el periodo en ciclos de reloj, y los
              16 bits mas altos dan la duracion en ms.  Si la duracion  es  0,
              el sonido se apaga.  Se devuelve el control inmediatamente.  Por
              ejemplo, argp  =  (125<<16)  +  0x637  especificaria  el  pitido
              asociado   normalmente   con   un   Ctrl-G.    (Este   modo   de
              funcionamiento desde 0.99pl1; infringido en 2.1.49-50.)

       KIOCSOUND
              Empieza o para la generacion de sonido. Los 16 b  mas  bajos  de
              argp  especifican el periodo en ciclos de reloj (esto es, argp =
              1193180-:-frecuencia).  argp = 0 apaga el sonido.  En  cualquier
              caso, se devuelve el control inmediatamente.

       GIO_CMAP
              Obtiene  el  mapa  de  colores predeterminado actual del nucleo.
              argp apunta a un vector de 48 bytes. (Desde 1.3.3.)

       PIO_CMAP
              Cambia el mapa de colores predeterminado  en  modo  texto.  argp
              apunta  a  un vector de 48 B que contiene, en orden, los valores
              de Rojo, Verde y  Azul  para  los  16  colores  de  la  pantalla
              sisponibles:  0  es  apagado,  y 255 es intensidad completa. Los
              colores predeterminados son, en orden, negro, rojo oscuro, verde
              oscuro,  marron,  azul  oscuro,  purpura oscuro, celeste oscuro,
              gris  claro,  gris  oscuro,  rojo  brillante,  verde  brillante,
              amarillo, azul brillante, purpura brillante, celeste brillante y
              blanco. (Desde 1.3.3.)

       GIO_FONT
              Obtiene el tipo de letra de pantalla de 256 caracteres en  forma
              expandida.  argp  apunta  a  un  vector  de 8192 B. Falla con el
              codigo de error EINVAL si el tipo cargado actualmente es uno  de
              512 caracteres, o si la consola no esta en modo texto.

       GIO_FONTX
              Obtiene  el tipo de letra de la pantalla e informacion asociada.
              argp apunta a una struct consolefontdesc (vea PIO_FONTX).  En el
              momento  de  la llamada, el campo charcount deberia estar puesto
              con el maximo numero de caracteres  que  cupieran  en  el  bufer
              apuntado  por  chardata.   Al  regresar,  los campos charcount y
              charheight se llenan con los  datos  respectivos  para  el  tipo
              cargado actualmente, y el vector chardata contiene los datos del
              tipo si el valor inicial de charcount indicaba que habia espacio
              suficiente  disponible;  de otra forma, el bufer queda intacto y
              en errno se pone el valor ENOMEM. (Desde 1.3.1.)

       PIO_FONT
              Establece el tipo de letra de pantalla de 256 caracteres.  Carga
              el tipo en el generador de caracteres EGA/VGA.  argp apunta a un
              mapa de 8192  bytes,  con  32  bytes  por  caracter.   Solo  los
              primeros  N  de  ellos  se emplean para un tipo de 8xN (0 < N <=
              32).  Esta llamada tambien invalida la asociacion Unicode.

       PIO_FONTX
              Establece  el  tipo  de  pantalla  e  informacion  asociada   de
              atributos de video. argp apunta a una

              struct consolefontdesc {
                      u_short charcount;      /* caracteres en el tipo (256 o 512) */
                      u_short charheight;     /* lineas de rastreo por caracter (1-32) */
                      char *chardata;         /* datos de tipo en forma expandida */
              };

              Si es necesario, la pantalla se redimensionara apropiadamente, y
              se enviara SIGWINCH a  los  procesos  apropiados.  Esta  llamada
              tambien invalida la asociacion Unicode. (Desde 1.3.1.)

       PIO_FONTRESET
              Restaura el tipo de letra de pantalla, el tamano y la asociacion
              Unicode a los valores predeterminados en el arranque. No se  usa
              argp, pero debe igualarse a NULL para asegurar la compatibilidad
              con versiones futuras de Linux. (Desde 1.3.28.)

       GIO_SCRNMAP
              Obtiene del nucleo la asociacion de pantalla. argp apunta  a  un
              area  de tamano E_TABSZ, que se carga en las posiciones del tipo
              usadas  para  mostrar  cada  caracter.  Esta  llamada  mas  bien
              devuelve  informacion  inutil  si el tipo de letra cargado en la
              actualidad es de mas de 256 caracteres.

       GIO_UNISCRNMAP
              Obtiene del nucleo la asociacion de pantalla  completa  Unicode.
              argp  apunta a un area de tamano E_TABSZ*sizeof(unsigned short),
              que se carga con los Unicodes que representan cada caracter.  Se
              usa un conjunto especial de Unicodes, empezando por U+F000, para
              representar asociaciones ``directas al tipo''. (Desde 1.3.1.)

       PIO_SCRNMAP
              Carga la (4a) tabla ``definible por el usuario'' en  el  nucleo,
              que  asocia  bytes  con simbolos de pantalla de la consola. argp
              apunta a un area de tamano E_TABSZ.

       PIO_UNISCRNMAP
              Carga en el nucleo la (4a) tabla ``definible por  el  usuario'',
              que  asocia bytes con Unicodes, que luego se traducen a simbolos
              de la pantalla segun el mapa cargado en la actualidad Unicode-a-
              tipo.  Los  Unicodes especiales que empiezan en U+F000 se pueden
              usar para asociar directamente a los simbolos del  tipo.  (Desde
              1.3.1.)

       GIO_UNIMAP
              Obtiene  del  nucleo la asocacion Unicode-a-tipo.  argp apunta a
              una

              struct unimapdesc {
                      u_short entry_ct;
                      struct unipair *entries;
              };

              donde entries apunta a un vector de

              struct unipair {
                      u_short unicode;
                      u_short fontpos;
              };

              (Desde 1.1.92.)

       PIO_UNIMAP
              Poner la asociacion Unicode-a-tipo en el nucleo. argp  apunta  a
              una struct unimapdesc.  (Desde 1.1.92)

       PIO_UNIMAPCLR
              Limpia la tabla, posiblemente informa al algoritmo de hash. argp
              apunta a una

              struct unimapinit {
                      u_short advised_hashsize;  /* 0 si no opinion */
                      u_short advised_hashstep;  /* 0 si no opinion */
                      u_short advised_hashlevel; /* 0 si no opinion */
              };

              (Desde 1.1.92.)

       KDGKBMODE
              Obtiene el modo de teclado en curso. argp apunta a un  long  int
              que toma una de estos valores:

                  K_RAW         0x00
                  K_XLATE       0x01
                  K_MEDIUMRAW   0x02
                  K_UNICODE     0x03

       KDSKBMODE
              Establece  el modo de teclado actual.  argp es un long int igual
              a uno de los valores de antes.

       KDGKBMETA
              Obtiene el modo de manejo de la tecla META.  argp  apunta  a  un
              long int que se pone con uno de estos valores:

                  K_METABIT     0x03   pone a 1 el bit de mas alto orden
                  K_ESCPREFIX   0x04   prefijo de ESCAPE

       KDSKBMETA
              Establece  el  modo de manejo de la tecla META.  argp es un long
              int igual a uno de los valores anteriores.

       KDGKBENT
              Obtiene una entrada de la tabla de traduccion de teclas  (codigo
              de tecla a coigo de accion).  argp apunta a una

              struct kbentry {
                  u_char kb_table;
                  u_char kb_index;
                  u_short kb_value;
              };

              con  los  primeros  dos  miembros llenos: kb_table selecciona la
              tabla de teclas (0 <= kb_table < MAX_NR_KEYMAPS), y kb_index  es
              el  codigo de tecla (0 <= kb_index < NR_KEYS).  kb_value se pone
              al codigo de accion correspondiente, o  K_HOLE  si  no  hay  tal
              tecla, o K_NOSUCHMAP si kb_table es invalido.

       KDSKBENT
              Establece  una  entrada en la tabla de traduccion. argp apunta a
              una struct kbentry.

       KDGKBSENT
              Obtiene una cadena de tecla de funcion. argp apunta a una

              struct kbsentry {
                  u_char kb_func;
                  u_char kb_string[512];
              };

              kb_string  es   pone   a   la   cadena   (terminada   en   cero)
              correspondiente  al  codigo  de  accion  de  la tecla de funcion
              kb_func-sima.

       KDSKBSENT
              Establece una entrada de  cadena  de  tecla  de  funcion.   argp
              apunta a una struct kbsentry.

       KDGKBDIACR
              Lee la tabla de acentos del nucleo. argp apunta a una

              struct kbdiacrs {
                  unsigned int kb_cnt;
                  struct kbdiacr kbdiacr[256];
              };

              donde  kb_cnt  es  el  numero de entradas en el vector, cada una
              siendo una

              struct kbdiacr { u_char diacr, base, result; };

       KDGETKEYCODE
              Lee una entrada de la tabla de  codigos  de  teclas  del  nucleo
              (codigo de rastreo a codigo de tecla).  argp apunta a una

              struct kbkeycode { unsigned int scancode, keycode; };

              keycode  se  pone  a  un valor correspondiente al scancode dado.
              (89 <= scancode <= 255 solamente.  Para 1  <=  scancode  <=  88,
              keycode==scancode.)  (Desde 1.1.63.)

       KDSETKEYCODE
              Escribe  una  entrada  de tabla de codigos de teclas del nucleo.
              argp apunta a una struct kbkeycode.  (Desde 1.1.63.)

       KDSIGACCEPT
              El proceso que hace la llamada indica su voluntad de aceptar  la
              senal  argp cuando se genere por la pulsacion de una combinacion
              de teclas apropiada.  (1 <= argp <= NSIG).  (Vea spawn_console()
              en linux/drivers/char/keyboard.c.)

       VT_OPENQRY
              Devuelve  la  primera  consola  disponible  (no  abierta).  argp
              apunta a un int que se pone al numero de la vt (1  <=  *argp  <=
              MAX_NR_CONSOLES).

       VT_GETMODE
              Obtiene el modo de la vt activa.  argp apunta a una

              struct vt_mode {
                  char mode;     /* modo de la vt */
                  char waitv;    /* si puesto, se cuelga en escrituras si no activa */
                  short relsig;  /* senal a lanzar en peticion de liberacion */
                  short acqsig;  /* senal a lanzar en adquisicion */
                  short frsig;   /* sin uso (a 0) */
              };

              mode se pone a uno de estos valores:

                  VT_AUTO       cambio de vt automatico
                  VT_PROCESS    cambio de controles de proceso
                  VT_ACKACQ     cambio de confirmacion

       VT_SETMODE
              Establece  el  modo  de  la vt activa.  argp apunta a una struct
              vt_mode.

       VT_GETSTATE
              Obtiene informacion de estado global de vt. argp apunta a una

              struct vt_stat {
                  ushort v_active;  /* vt activa */
                  ushort v_signal;  /* senal a enviar */
                  ushort v_state;   /* mascara de bits de la vt */
              };

              Para cada vt en  uso,  el  bit  correspondiente  en  el  miembro
              v_state se pone a 1.  (Nucleos 1.0 a 1.1.92.)

       VT_RELDISP
              Libera una pantalla.

       VT_ACTIVATE
              Cambia a la vt argp (1 <= argp <= MAX_NR_CONSOLES).

       VT_WAITACTIVE
              Espera hasta que la vt argp ha sido activada.

       VT_DISALLOCATE
              Desaloja la memoria asociada con la vt argp.  (Desde 1.1.54.)

       VT_RESIZE
              Establece  la  idea  que tiene el nucleo del tamano de pantalla.
              argp apunta a una

              struct vt_sizes {
                  ushort v_rows;       /* No de filas */
                  ushort v_cols;       /* No de columnas */
                  ushort v_scrollsize; /* ya no se usa */
              };

              Note que esto no cambia el modo de  video.   Vea  resizecons(8).
              (Desde 1.1.54.)

       VT_RESIZEX
              Establece la idea que tiene el nucleo sobre varios parametros de
              pantalla.  argp apunta a una

              struct vt_consize {
                      ushort v_rows;          /* numero de filas */
                      ushort v_cols;          /* numero de columnas */
                      ushort v_vlin;          /* No de filas de pixeles en la pantalla */
                      ushort v_clin;          /* No de filas de pixeles por caracter */
                      ushort v_vcol;          /* No de cols. de pixeles en la pantalla */
                      ushort v_ccol;          /* No de cols. de pixeles por caracter */
              };

              Cualquier parametro puede ponerse a  cero,  indicando  ``no  hay
              cambio'',  pero  si  se ponen varios parametros, deben ser auto-
              consistentes. Note que esto no cambia  el  modo  de  video.  Vea
              resizecons(8). (Desde 1.3.3.)

       La accion de las siguientes ioctls depende del primer byte en la struct
       apuntada por argp, referido aqui como el sub-c'odigo. Estos son  legales
       solo para el super-usuario o el propietario de la tty actual.

       TIOCLINUX, sub-c'odigo=0
              Vuelca  la  pantalla.   Desaparecio  en  1.1.92.  (Con el nucleo
              1.1.92 o superior, lee de /dev/vcsN o /dev/vcsaN en su lugar.)

       TIOCLINUX, sub-c'odigo=1
              Obtiene informacion de tarea. Desaparecio en 1.1.92.

       TIOCLINUX, sub-c'odigo=2
              Establece seleccion.  argp apunta a una

                 struct {char subcode;
                     short xs, ys, xe, ye;
                     short sel_mode;
                 }

              xs e ys son las columna y fila de comienzo.   xe  e  ye  son  la
              columna  y  fila  de  final.   (La esquina superior izquierda es
              file=columna=1.)   sel_mode  es  0  para  seleccion  caracter  a
              caracter, 1 para seleccion palabra a palabra, o 2 para seleccion
              linea a linea.  Los caracteres de pantalla indicados se resaltan
              y    salvan    en    el    vector    estatico    sel_buffer   en
              devices/char/console.c.

       TIOCLINUX, sub-c'odigo=3
              Seleccion de pegado.  Los caracteres en el bufer de seleccion se
              escriben a fd.

       TIOCLINUX, sub-c'odigo=4
              Desblanquea la pantalla.

       TIOCLINUX, sub-c'odigo=5
              Establece  los  contenidos de una tabla de busqueda de 256 b que
              define caracteres en una "palabra", para la seleccion palabra  a
              palabra. (Desde 1.1.32.)

       TIOCLINUX, sub-c'odigo=6
              argp  apunta  a un  char que se pone con el valor de la variable
              del nucleo shift_state.  (Desde 1.1.32.)

       TIOCLINUX, sub-c'odigo=7
              argp apunta a un char que se pone al valor de  la  variable  del
              nucleo report_mouse.  (Desde 1.1.33.)

       TIOCLINUX, sub-c'odigo=8
              Vuelca la anchura y altura de la pantalla, posicion de cursor, y
              todos los  pares caracter-atributo.  (Nucleos  1.1.67  a  1.1.91
              solamente.   Con el nucleo 1.1.92 o posterior, lee de /dev/vcsa*
              en su lugar.)

       TIOCLINUX, sub-c'odigo=9
              Restaura la anchura y altura de la pantalla, posicion de cursor,
              y  todos los  pares caracter-atributo.  (Nucleos 1.1.67 a 1.1.91
              solamente.   Con  el  nucleo  1.1.92  o  posterior,  escribe  en
              /dev/vcsa* en su lugar.)

       TIOCLINUX, sub-c'odigo=10
              Maneja  la  caracteristica  de  Ahorro  de  Energia  de la nueva
              generacion de monitores.  El modo de blanqueo de  pantalla  VESA
              se  pone  a  argp[1],  que  gobierna  lo que hace el blanqueo de
              pantalla:

                  0: El blanqueo de pantalla es deshabilitado.

                  1: Se guardan los valores de los registros del adaptador  de
              video  instalado,  luego  se programa el controlador para apagar
              los pulsos de sincronizacion vertical. Esto pone el  monitor  en
              el   estado  de  "modo  de  espera".  Si  su  monitor  tiene  un
              temporizador Off_Mode, entonces eventualmente se apagara solo.

                  2: Se salvan los  valores  actuales,  luego  se  apagan  los
              pulsos  de  sincronizacion  vertical y horizontal.  Esto pone el
              monitor en modo  de  "apagado".   Si  su  monitor  no  tiene  el
              temporizador  Off_Mode, o si Ud. quiere que su monitor se apague
              inmediatamente cuando el tiempo del blank_timer  pase,  entonces
              debe  escoger  esta opcion.  (Precauci'on:: Apagar frecuentemente
              danara el monitor.)

              (Desde 1.1.76.)

VALOR DEVUELTO

       En caso de exito se devuelve 0. En caso de error se devuelve -1 y errno
       toma un valor.

ERRORES

       errno puede tomar uno de estos valores:

       EBADF  el descriptor de fichero es invalido.

       ENOTTY el  descriptor  de  fichero  no esta asociado con un dispositivo
              especial de caracteres, o la peticion especificada no se  aplica
              a el.

       EINVAL el descriptor de fichero o argp es invalido.

       EPERM  violacion de permiso.

ATENCI'ON

       No  mire esta pagina del Manual como documentacion sobre las ioctl's de
       la consola de Linux. Esta pagina solo se proporciona para  el  curioso,
       como una alternativa a leer los fuentes. Las ioctl's son cosas internas
       de Linux indocumentadas, sujetas a cambios sin previo aviso.  (Y  desde
       luego, esta pagina describe mas o menos la situacion en los tiempos del
       nucleo version 1.1.94; hay muchas diferencias menores y no tan  menores
       con versiones anteriores.)

       Muy  a  menudo,  las  ioctl's  se introducen para comunicacion entre el
       nucleo  y  un  programa  particular  bien  conocido   (fdisk,   hdparm,
       setserial,   tunelp,   loadkeys,   selection,   setfont,  etc.),  y  su
       comportamiento  cambiara  cuando  se   requiera   por   este   programa
       particular.

       Los  programas  que  usen estas ioctl's no seran transportables a otras
       versiones de Unix, no funcionaran en versiones mas antiguas de Linux, y
       no funcionaran en versiones futuras de Linux.

       Use funciones POSIX.

V'EASE TAMBI'EN

       kbd_mode(1),    loadkeys(1),    dumpkeys(1),    mknod(1),   setleds(1),
       setmetamode(1), ioperm(2), execve(2), fcntl(2), termios(3), console(4),
       console_codes(4),  mt(4), sd(4), tty(4), ttys(4), tty_ioctl(4), vcs(4),
       vcsa(4),   charsets(7),    mapscrn(8),    setfont(8),    resizecons(8),
       /usr/include/linux/kd.h, /usr/include/linux/vt.h