Provided by:
manpages-es_1.55-10_all 
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