.\" -*- nroff -*- .\" Copyright (c) 1995 Jim Van Zandt and aeb .\" Sun Feb 26 11:46:23 MET 1995 .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, write to the Free .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, .\" USA. .\" .\" Modified, Sun Feb 26 15:04:20 1995, faith@cs.unc.edu .\" Modified, Thu Apr 20 22:08:17 1995, jrv@vanzandt.mv.com .\" Modified, Mon Sep 18 22:32:47 1995, hpa@storm.net (H. Peter Anvin) .\" " .TH CONSOLE_IOCTLS 4 "18/09/1995" "Linux" "Manual do Programador Linux" .SH NOME console ioctl \- ioctl's para terminais de console e consoles virtuais .SH DESCRIÇÃO \fBADVERTÊNCIA: Se você usar a informação seguintes você pode queimar a si mesmo.\fP \fBADVERTÊNCIA: ioctl's são chamadas internas do Linux sem documentação, propensa em ser altera sem nenhum aviso. Usar as funções POSIX.\fP As seguintes requisição peculiar \fBioctl()\fP do linux são suportadas. Cada requer um terçeiro argumento, presumido aqui para ser \fIargp\fP. .IP \fBKDGETLED\fP Obtém os estados dos LEDs. \fIargp\fP aponta para um inteiro longo. Os três menores bits de \fI*argp\fP são selecionados para o estado dos LEDs, como segue: LED_CAP 0x04 caps lock led LEC_NUM 0x02 num lock led LED_SCR 0x01 scroll lock led .IP \fBKDSETLED\fP Seleciona os LEDs. Os LEDs são selecionados para os três menores bits de \fIargp\fP. De outra forma, se um bit de ordem maior é selecionado, os LEDs são revertidos para o estado normal: mostrando o estado das funções do teclado de caps lock, num lock, e scroll lock. .LP Antes da versão 1.1.54, os LEDs devolvia justamente o estado do correspondente do sinalizador do teclado, e KDGETLED/KDSETLED além disso alteraria o sinalizador do teclado. Desde a versão 1.1.54 os leds podem ser usados para exibir informações arbitrárias, mas por padrão eles mostram o sinalizador de teclado. As duas seguintes ioctl's são usadas para acessar o sinalizador de teclado. .IP \fBKDGKBLED\fP Obtém o sinalizador de teclado CapsLock, NumLock, ScrollLock (sem luzes). \fIargp\fP aponta para um caracter no qual é marcado o estado do sinalizador. Os três bits de menor ordem (mask 0x7) recebem o estado atual do sinalizador, e os bits de menor ordem nos próximos quatro bits (mask 0x70) obtém o estado padrão do sinalizador. (Desde a versão 1.1.54.) .IP \fBKDSKBLED\fP Seleciona o sinalizador do teclado CapsLock, NumLock, ScrollLock (sem luzes). \fIargp\fP tem o estado do sinalizador que é desejado. Os três bits de menor ordem (mask 0x7) tem o estado do sinalizador, e os bits de menor ordem nos próximos 4 bits (mask 0x70) tem o estado padrão do sinalizador. (Desde a versão 1.1.54.) .IP \fBKDGKBTYPE\fP Obtém o tipo de teclado. Este retorna o valor KB_101, definido como 0x02. .IP \fBKDADDIO\fP Adiciona uma porta de I/O como válida. Equivalente a ioperm(arg,1,1). .IP \fBKDDELIO\fP Remove uma porta de I/O como válida. Equivalente a ioperm(arg,1,0). .IP \fBKDENABIO\fP Habilita a I/O para a placa de vídeo. Equivalente a ioperm(0x3b4, 0x3df-0x3b4+1, 1). .IP \fBKDDISABIO\fP Desabilita a I/O para a placa de vídeo. Equivalente a ioperm(0x3b4, 0x3df-0x3b4+1, 0). .IP \fBKDSETMODE\fP Seleciona o modo texto/gráfico. \fIargp\fP é um destes: KD_TEXT 0x00 KD_GRAPHICS 0x01 .IP \fBKDGETMODE\fP Obtém o modo text/graphics. \fIargp\fP aponta para um tipo longo o qual é selecionado para um dos valores abaixo. .IP \fBKDMKTONE\fP Gera um som de comprimento especificado. Os 16 bits mais baixos de \fIargp\fP especificado o periodo em ciclos de relógio, e os 16 bits mais altos entrega a duração em in msec. Se a duração é zero, o som é desligado. O controle retorna imediatamente. Por exemplo, \fIargp\fP = (125<<16) + 0x637 especificaria o beep normalmente associado com ctrl-G. (Desta forma desde a versão 0.99pl1; interrompido em 2.1.49-50.) .IP \fBKIOCSOUND\fP Inicia ou termina a geração do som. O 16 bits mais baixos de \fIargp\fP especificam o periodo em ciclos de relógio (que é, \fIargp\fP = 1193180/freqüencia). \fIargp\fP = 0 desliga o som. Em ambos os casos, o controle retorna imediatamente. .IP \fBGIO_CMAP\fP Obtém o atual mapa de cores padrão a partir do kernel. \fIargp\fP aponta para um vetor de 48 bytes. (Desde 1.3.3.) .IP \fBPIO_CMAP\fP Altera o mapa de cores padrão no modo texto. \fIargp\fP aponta para um vetor de 48 bytes o qual contém, em ordem, os valores Vermelho, Verde, e Azul para as 16 cores disponíveis da tela: 0 é desligado, e 255 é intensidade máxima. As cores padrão são, em ordem: preto, vermelho escuro, verde escuro, marrom, azul escuro, violeta escuro, ciano escuro, cinza claro, cinza escuro, vermelho brilhante, verde brilhante, amarelo, azul brilhante, violeta brilhante, ciano brilhante e branco. (Desde 1.3.3.) .IP \fBGIO_FONT\fP Obtém os 256 caracteres da fonte da tela em forma expandida. \fIargp\fP aponta para um vetor de 8192 bytes. Falha com código de erro \fBEINVAL\fP se a fonte atualmente carregado é uma fonte de 512 caracteres, ou se o console não está em modo texto. .IP \fBGIO_FONTX\fP Obtém a fonte da tela e informações associadas. \fIargp\fP aponta para uma estrutua consolefontdesc (veja \fBPIO_FONTX\fP). Na chamada, o campo \fIcharcount\fP precisaria ser selecionado para o número máximo de caracteres que poderia combinar no buffer apontado por \fIchardata\fP. No retorno, o \fIcharcount\fP e \fIcharheight\fP são recheados dos respectivos dados para a fonte atualmente carregada, e o vetor \fIchardata\fP contém o dados da fonte se o valor inicial de \fIcharcount\fP indicava espaço suficiente disponível; de outra forma o buffer fica intocado e \fIerrno\fP é selecionado para \fBENOMEM\fP. (Desde 1.3.1.) .IP \fBPIO_FONT\fP Seleciona uma fonte da tela de 256 caracteres. Carrega a fonte dentro do gerador de caracteres EGA/VGA. \fIargp\fP aponta para um mapa de bits de 8192, com 32 bytes por caractere. Somente o primeiro \fIN\fP deles são usados para uma fonte 8x\fIN\fP (0 < \fIN\fP <= 32). Esta chamada também elimina o mapeamento Unicode. .IP \fBPIO_FONTX\fP Seleciona a fonte da tela e associa informações de desenho. \fIargp\fP aponta para uma .nf struct consolefontdesc { u_short \fIcharcount\fP; /* caracteres na fonte (256 ou 512) */ u_short \fIcharheight\fP; /* linhas rastreadas por caracteres (1-32) */ char *\fIchardata\fP; /* dados da fone em forma expandida */ }; .fi Se necessário a tela será apropriadamente redimensionada, e \fBSIGWINCH\fP envia para o processo apropriado. Esta chamada também elimina o mapeamento Unicode. (Desde 1.3.1.) .IP \fBPIO_FONTRESET\fP Repões o fonte da tela, tamanho e mapeamento Unicode para a incialização padrão. \fIargp\fP não é usado, mas seria selecinado para \fBNULL\fP para assegurar compatibilidade com futuras versões do Linux. (Desde 1.3.28.) .IP \fBGIO_SCRNMAP\fP Obtém o mapeamento da tela a partir do kernel. \fIargp\fP aponta para uma área de tamanho E_TABSZ, o qual é carregado com a posicionamento da fonte usada para exibir cada caractere. Esta chamada é provavelmente para retornar informações imprestáveis se a fonte atualmente carregada é maior que 256 caracteres. .IP \fBGIO_UNISCRNMAP\fP Obtém o mapeamento completo Unicode da tela a partir do kernel. \fIargp\fP aponta para uma área de tamanho E_TABSZ*sizeof(unsigned short), o qual é carregado com a representação Unicode de cada caractere. Um conjunto especial de Unicode, começando em U+F000, são usados para representar o mapeamento ``direto para a fonte''. (Desde 1.3.1.) .IP \fBPIO_SCRNMAP\fP Carrega o ``definível pelo usuário'' (quatro) tabelas no kernel o qual mapeia bytes dentro dos simbolos da tela da console. \fIargp\fP aponta para uma área de tamanho E_TABSZ. .IP \fBPIO_UNISCRNMAP\fP Carrega o ``definível pelo usuário'' (quatro) tabelas no kernel a qual mapeia bytes dentro dos Unicodes, o qual são então traduzidos em símbolos da tela de acordo com o mapa atualmente carregado de Unicode para fonte. Unicodes especiais iniciam em U+F000 e podem ser usados para mapear diretamente para os símbolos da fonte. (Desde 1.3.1.) .IP \fBGIO_UNIMAP\fP Obtém o mapeamento Unicode para fonte a partir do kernel. \fIargp\fP aponta para uma .nf struct unimapdesc { u_short \fIentry_ct\fP; struct unipair *\fIentries\fP; }; .fi aonde \fIentries\fP aponta para um vetor de .nf struct unipair { u_short \fIunicode\fP; u_short \fIfontpos\fP; }; .fi (Desde 1.1.92.) .IP \fBPIO_UNIMAP\fP Coloca o mapeamento unicode para fonte no kernel. \fIargp\fP aponta para uma estrutura unimapdesc. (Desde 1.1.92) .IP \fBPIO_UNIMAPCLR\fP Limpa a tabela, possivelmente um algoritmo picado. \fIargp\fP aponta para uma .nf struct unimapinit { u_short \fIadvised_hashsize\fP; /* 0 if no opinion */ u_short \fIadvised_hashstep\fP; /* 0 if no opinion */ u_short \fIadvised_hashlevel\fP; /* 0 if no opinion */ }; .fi (Desde 1.1.92.) .IP \fBKDGKBMODE\fP Obtém o modo atual do teclado. \fIargp\fP aponta para um longo o qual é selecionado para um destes: K_RAW 0x00 K_XLATE 0x01 K_MEDIUMRAW 0x02 K_UNICODE 0x03 .IP \fBKDSKBMODE\fP Seleciona o modo atual do teclado. \fIargp\fP é um longo igual a um dos valores acima. .IP \fBKDGKBMETA\fP Obtém o modo de manipulação da tecla meta. \fIargp\fP aponta para um longo o qual é selecionado para um destes: K_METABIT 0x03 set high order bit K_ESCPREFIX 0x04 escape prefix .IP \fBKDSKBMETA\fP Seleciona o modo de manipulação da tecla meta. \fIargp\fP é um longo igual a um dos valores acima. .IP \fBKDGKBENT\fP Obtém uma entrada na tabela de translação da tecla (keycode para action code). \fIargp\fP aponta para uma .nf struct kbentry { u_char \fIkb_table\fP; u_char \fIkb_index\fP; u_short \fIkb_value\fP; }; .fi com o primeito dos dos membros preenchido em: \fIkb_table\fP seleciona a tabela de tecla (0 <= \fIkb_table\fP < MAX_NR_KEYMAPS), e \fIkb_index\fP é o keycode (0 <= \fIkb_index\fP < NR_KEYS). \fIkb_value\fP é selecionado para o correspondente action code, ou K_HOLE se não havia tecla semelhante, ou K_NOSUCHMAP se \fIkb_table\fP é invalido. .IP \fBKDSKBENT\fP Seleciona uma entrada na tabela de tradução. \fIargp\fP aponta para uma estrutura kbentry. .IP \fBKDGKBSENT\fP Obtém uma tecla de função. \fIargp\fP aponta para uma .nf struct kbsentry { u_char \fIkb_func\fP; u_char \fIkb_string\fP[512]; }; .fi \fIkb_string\fP é selecionada para a (terminação NULA) seqüencia correspondente para a tecla de função \fIkb_func\fP action code. .IP \fBKDSKBSENT\fP Seleciona uma entrada para uma tecla de função. \fIargp\fP aponta para uma struct kbsentry. .IP \fBKDGKBDIACR\fP Lê a tabela de acentuação do kernel. \fIargp\fP aponta para uma .nf struct kbdiacrs { unsigned int \fIkb_cnt\fP; struct kbdiacr \fIkbdiacr\fP[256]; }; .fi onde \fIkb_cnt\fP é o número de entradas no vetor, cada qual é uma struct kbdiacr { u_char \fIdiacr\fP, \fIbase\fP, \fIresult\fP; }; .IP \fBKDGETKEYCODE\fP Lê a tabela de entrada keycode do kernel (rastrei o code para keycode). \fIargp\fP aponta para uma .nf struct kbkeycode { unsigned int \fIscancode\fP, \fIkeycode\fP; }; .fi \fIkeycode\fP é selecionada para corresponder ao \fIscancode\fP fornecido. (89 <= \fIscancode\fP <= 255 somente. Para 1 <= \fIscancode\fP <= 88, \fIkeycode\fP==\fIscancode\fP.) (Desde 1.1.63.) .IP \fBKDSETKEYCODE\fP Escreve no kernel a entrada da tabela keycode. \fIargp\fP aponta para uma estrutura kbkeycode. (Desde 1.1.63.) .IP \fBKDSIGACCEPT\fP O processo chamante indicado dele concordância para aceita o sinal \fIargp\fP quandop ele é gerado pelo presionamento de uma combinação de teclas apropriadas. (1 <= \fIargp\fP <= NSIG). (Veja spawn_console() em linux/drivers/char/keyboard.c.) .IP \fBVT_OPENQRY\fP Devolve o primeiro console disponivel (fechado). \fIargp\fP aponta para um int o qual é selecionado para um número de vt (1 <= \fI*argp\fP <= MAX_NR_CONSOLES). .IP \fBVT_GETMODE\fP Obtém o modo de ativação do vt. \fIargp\fP aponta para uma .nf struct vt_mode { char \fImode\fP; /* vt mode */ char \fIwaitv\fP; /* if set, hang on writes if not active */ short \fIrelsig\fP; /* signal to raise on release req */ short \fIacqsig\fP; /* signal to raise on acquisition */ short \fIfrsig\fP; /* unused (set to 0) */ }; .fi ...o qual é selecionado para o modo de ativação do vt. \fImode\fP é selecionada para um destes valores: VT_AUTO auto vt switching VT_PROCESS process controls switching VT_ACKACQ acknowledge switch .IP \fBVT_SETMODE\fP Seleciona o modo de ativação do vt. \fIargp\fP aponta para uma struct vt_mode. .IP \fBVT_GETSTATE\fP Obtém a informação global do estado vt. \fIargp\fP aponta para uma .nf struct vt_stat { ushort \fIv_active\fP; /* active vt */ ushort \fIv_signal\fP; /* signal to send */ ushort \fIv_state\fP; /* vt bitmask */ }; .fi Para cada vt em uso, o bit correspondente no membro \fIv_state\fP é selecionado. (Kerneis 1.0 direto 1.1.92.) .IP \fBVT_RELDISP\fP Libera um monitor. .IP \fBVT_ACTIVATE\fP Troca para o vt \fIargp\fP (1 <= \fIargp\fP <= MAX_NR_CONSOLES). .IP \fBVT_WAITACTIVE\fP Aguarda até o vt \fIargp\fP ser ativado. .IP \fBVT_DISALLOCATE\fP Desalocar a memória associada com o vt \fIargp\fP. (Desde 1.1.54.) .IP \fBVT_RESIZE\fP Seleciona o tamanho ideal da tela kernel. \fIargp\fP aponta para um .nf struct vt_sizes { ushort \fIv_rows\fP; /* # rows */ ushort \fIv_cols\fP; /* # columns */ ushort \fIv_scrollsize\fP; /* no longer used */ }; .fi Note que isto não é alterado para o modo de video. Veja resizecons(8). (Desde 1.1.54.) .IP \fBVT_RESIZEX\fP Seleciona os vários parâmetros ideais da tela do kernel. \fIargp\fP aponta para um .nf struct vt_consize { ushort \fIv_rows\fP; /* number of rows */ ushort \fIv_cols\fP; /* number of columns */ ushort \fIv_vlin\fP; /* number of pixel rows on screen */ ushort \fIv_clin\fP; /* number of pixel rows per character */ ushort \fIv_vcol\fP; /* number of pixel columns on screen */ ushort \fIv_ccol\fP; /* number of pixel columns per character */ }; .fi Qualquer parâmetro pode ser selecionada para zero, indicando ``nenhuma alteração'', mas se multiplos parâmetros são alterados, eles devem ser auto consistentes. Note que isto não mudou o modo de video. Veja resizecons(8). (Desde 1.3.3.) .PP A ação das seguintes following dependia do primeiro byte na estrutura apontada pelo \fIargp\fP, relativo a este lugar como o \fIsubcode\fP. Estes são somente válido para o superusuário ou o proprietário do tty atual. .IP "\fBTIOCLINUX, subcode=0\fP" Esvazia a tela. Desapareçeu em 1.1.92. (Com o kernel 1.1.92 ou posterior, lê a partir de /dev/vcsN ou /dev/vcsaN ao invez de.) .IP "\fBTIOCLINUX, subcode=1\fP" Obtém a informação da tarefa. Desapareçeu em 1.1.92. .IP "\fBTIOCLINUX, subcode=2\fP" Seleciona a seleção. \fIargp\fP aponta para uma struct {char \fIsubcode\fP; short \fIxs\fP, \fIys\fP, \fIxe\fP, \fIye\fP; short \fIsel_mode\fP; } \fIxs\fP e \fIys\fP estão começando as colunas e linhas. \fIxe\fP e \fIye\fP estão terminando as colunas e linhas. (O canto superior esquerdo é a linha=coluna=1.) \fIsel_mode\fP é 0 para uma seleção caractere por caractere, 1 para uma seleção palavra por palavra, ou 2 para uma seleção linha por linha. Os caracteres indicados na tela são brilhantes e guardados no vetor estático sel_buffer em devices/char/console.c. .IP "\fBTIOCLINUX, subcode=3\fP" Cola a seleção. Os caracteres no buffer são escritos para \fIfd\fP. .IP "\fBTIOCLINUX, subcode=4\fP" Tela não vazia. .IP "\fBTIOCLINUX, subcode=5\fP" Seleciona o conteúdo de uma tabela de visualização de caracteres de 256 bits definida na "palavra", para seleção palavra por palavra. (Desde 1.1.32.) .IP "\fBTIOCLINUX, subcode=6\fP" \fIargp\fP aponta para um char oq qual é selecionada para o valor da variável do kernel \fIshift_state\fP. (Desde 1.1.32.) .IP "\fBTIOCLINUX, subcode=7\fP" \fIargp\fP aponta para um caractere o qual é selecionado para o valor da variável do kernel \fIreport_mouse\fP. (Desde 1.1.33.) .IP "\fBTIOCLINUX, subcode=8\fP" Esvazia a tela na largura e comprimento, posição do cursor, e todos os pares de atributos de caracteres. (Somente os kerneis 1.1.67 direto 1.1.91. Com o kernel 1.1.92 ou mais novos, lê a partir /dev/vcsa* ao invez de.) .IP "\fBTIOCLINUX, subcode=9\fP" Restaura o comprimento e largura da tela, posição do cursor, e todos os pares de atributos de caracteres. (Somente os kerneis 1.1.67 direto 1.1.91. Com o kernel 1.1.92 ou mais novos, lê a partir /dev/vcsa* ao invez de.) .IP "\fBTIOCLINUX, subcode=10\fP" Manipulação da caracteristíca de Power Saving da nova geração de monitores. Tela VESA em modo vazio é selecionado para \fIargp\fP[1], o qual governa o que a tela em branco fará: \fI0\fP: Tela em branco é desabilitada. \fI1\fP: O adptador de vídeo atual ``registra a seleções guardadas, então o controlador é programada para desligar os pulsos de sincronização vertical. Isto coloca o monitor em mode "standby". Se o monitor tem um temporizador Off_Mode, então ele irá eventualmente desligar a enegia de si mesmo. \fI2\fP: As seleções atuais são guardadas, então ambos os pulsos de sincronização vertical e horizontal são desligados. Isto coloca o monitor em modo "off". Se o monitor tem um temporizador Off_Mode, ou se você procura que seu monitor desligue imediadamente quando o tempo de blank_timer termina, então você preferirá esta opção. (\fICuidado:\fP Desligar o monitor freqünetemente irá danificr o monitor.) (Desde 1.1.76.) .SH "VALORES DE RETORNO" -1 para erro, e \fIerrno\fP é selecionado. .SH ERRORS \fIerrno\fP pode ter um destes valores: .TP .B EBADF descritor de arquivo é inválido. .TP .B ENOTTY descritor de arquivo não é associado com um dispositivo especial de caractere, ou a requesição especificada não se aplica para ele. .TP .B EINVAL descritor de arquivo ou \fIargp\fP é invalido. .TP .B EPERM violação de permissão. .SH ADVERTÊNCIAS Não respeite esta página de manual como documentação das chamadas de console ioctl's do Linux. Isto é fornecido para curiosos somente, com um alternativa para estudar o fonte. Ioctl's são chamadas não documentadas do Linux, propensa em ser alterada sem nenhum aviso. (E de fato, esta página descreve mais ou menos a situação da versão do kernel 1.1.94; tem pequenas e muitas e não somente pequenas diferenças com as versão mais recentes.) Muito frequentemente, são introduzidas para comunicação ente o kernel e um programa particular bem conhecido, (fdisk, hdparm, setserial, tunelp, loadkeys, selection, setfont, etc.), e o comportamento deles será alterado quando requerido por este programa particular. Programas usando estas ioctl's podem não ser portáveis para outras versões de Unix, podem não trabalhar em versões antiguas do Linux, e podem não trabalhar nas futuras versões do Linux. Usar as funções POSIX. .SH "VEJA TAMBÉM" .BR kbd_mode (1), .BR loadkeys (1), .BR dumpkeys (1), .BR mknod (1), .BR setleds (1), .BR setmetamode (1), .BR ioperm (2), .BR termios (2), .BR execve (2), .BR fcntl (2), .BR console (4), .BR console_codes (4), .BR mt (4), .BR sd (4), .BR tty (4), .BR ttys (4), .BR vcs (4), .BR vcsa (4), .BR charsets (7), .BR mapscrn (8), .BR setfont (8), .BR resizecons (8), .IR /usr/include/linux/kd.h , .I /usr/include/linux/vt.h .SH TRADUZIDO POR LDP-BR em 21/08/2000. \&\fR\&\f(CWAndré L. Fassone Canova (tradução)\fR \&\fR\&\f(CWCarlos Augusto Horylka (revisão)\fR