Provided by: manpages-pt_20040726-4_all bug

NOME

       console ioctl - ioctl's para terminais de console e consoles virtuais

DESCRI,C~AO

       ADVERT^ENCIA: Se voc^e usar a informa,c~ao seguintes voc^e pode queimar a si
       mesmo.

       ADVERT^ENCIA: ioctl's s~ao chamadas internas do Linux  sem  documenta,c~ao,
       propensa em ser altera sem nenhum aviso. Usar as fun,c~oes POSIX.

       As seguintes requisicao peculiar ioctl() do linux sao suportadas.  Cada
       requer um terceiro argumento, presumido aqui para ser argp.

       KDGETLED
              Obtem os estados dos LEDs. argp aponta para um inteiro longo. Os
              tres  menores  bits  de *argp sao 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

       KDSETLED
              Seleciona os LEDs. Os LEDs sao selecionados para os tres menores
              bits  de  argp.  De  outra  forma,  se  um  bit de ordem maior e
              selecionado, os  LEDs  sao  revertidos  para  o  estado  normal:
              mostrando  o  estado  das  funcoes  do teclado de caps lock, num
              lock, e scroll lock.

       Antes da versao  1.1.54,  os  LEDs  devolvia  justamente  o  estado  do
       correspondente  do  sinalizador  do  teclado,  e KDGETLED/KDSETLED alem
       disso alteraria o sinalizador do teclado.  Desde  a  versao  1.1.54  os
       leds  podem  ser  usados  para  exibir informacoes arbitrarias, mas por
       padrao eles mostram  o  sinalizador  de  teclado.   As  duas  seguintes
       ioctl's sao usadas para acessar o sinalizador de teclado.

       KDGKBLED
              Obtem  o  sinalizador  de  teclado CapsLock, NumLock, ScrollLock
              (sem luzes).  argp aponta para um caracter no qual e  marcado  o
              estado  do  sinalizador.  Os tres bits de menor ordem (mask 0x7)
              recebem o estado atual do sinalizador, e os bits de menor  ordem
              nos  proximos  quatro  bits (mask 0x70) obtem o estado padrao do
              sinalizador. (Desde a versao 1.1.54.)

       KDSKBLED
              Seleciona o sinalizador do teclado CapsLock, NumLock, ScrollLock
              (sem  luzes).   argp tem o estado do sinalizador que e desejado.
              Os tres  bits  de  menor  ordem  (mask  0x7)  tem  o  estado  do
              sinalizador,  e os bits de menor ordem nos proximos 4 bits (mask
              0x70) tem o  estado  padrao  do  sinalizador.  (Desde  a  versao
              1.1.54.)

       KDGKBTYPE
              Obtem  o  tipo de teclado. Este retorna o valor KB_101, definido
              como 0x02.

       KDADDIO
              Adiciona  uma  porta  de  I/O   como   valida.   Equivalente   a
              ioperm(arg,1,1).

       KDDELIO
              Remove   uma   porta   de   I/O   como   valida.  Equivalente  a
              ioperm(arg,1,0).

       KDENABIO
              Habilita  a  I/O  para  a  placa   de   video.   Equivalente   a
              ioperm(0x3b4, 0x3df-0x3b4+1, 1).

       KDDISABIO
              Desabilita   a   I/O  para  a  placa  de  video.  Equivalente  a
              ioperm(0x3b4, 0x3df-0x3b4+1, 0).

       KDSETMODE
              Seleciona o modo texto/grafico. argp e um destes:

                  KD_TEXT       0x00
                  KD_GRAPHICS   0x01

       KDGETMODE
              Obtem o modo text/graphics. argp aponta para  um  tipo  longo  o
              qual e selecionado para um dos valores abaixo.

       KDMKTONE
              Gera um som de comprimento especificado.  Os 16 bits mais baixos
              de argp especificado o periodo em ciclos de  relogio,  e  os  16
              bits  mais  altos  entrega a duracao em in msec.  Se a duracao e
              zero, o som e desligado.  O controle retorna imediatamente.  Por
              exemplo,   argp   =  (125<<16)  +  0x637  especificaria  o  beep
              normalmente associado com ctrl-G.  (Desta forma desde  a  versao
              0.99pl1; interrompido em 2.1.49-50.)

       KIOCSOUND
              Inicia  ou  termina  a  geracao do som. O 16 bits mais baixos de
              argp especificam o periodo em ciclos de relogio (que e,  argp  =
              1193180/frequencia).   argp  =  0  desliga  o  som.  Em ambos os
              casos, o controle retorna imediatamente.

       GIO_CMAP
              Obtem o atual mapa de cores padrao  a  partir  do  kernel.  argp
              aponta para um vetor de 48 bytes. (Desde 1.3.3.)

       PIO_CMAP
              Altera o mapa de cores padrao no modo texto. argp aponta para um
              vetor de 48 bytes o qual contem, em ordem, os valores  Vermelho,
              Verde,  e  Azul  para  as  16  cores  disponiveis  da  tela: 0 e
              desligado, e 255 e intensidade maxima. As cores padrao  sao,  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.)

       GIO_FONT
              Obtem os 256 caracteres da fonte da  tela  em  forma  expandida.
              argp  aponta  para  um  vetor de 8192 bytes. Falha com codigo de
              erro EINVAL se a fonte atualmente carregado e uma fonte  de  512
              caracteres, ou se o console nao esta em modo texto.

       GIO_FONTX
              Obtem a fonte da tela e informacoes associadas. argp aponta para
              uma estrutua consolefontdesc (veja  PIO_FONTX).  Na  chamada,  o
              campo  charcount precisaria ser selecionado para o numero maximo
              de caracteres  que  poderia  combinar  no  buffer  apontado  por
              chardata.   No  retorno,  o charcount e charheight sao recheados
              dos respectivos dados para a fonte  atualmente  carregada,  e  o
              vetor  chardata  contem  o  dados da fonte se o valor inicial de
              charcount indicava espaco suficiente disponivel; de outra  forma
              o buffer fica intocado e errno e selecionado para ENOMEM. (Desde
              1.3.1.)

       PIO_FONT
              Seleciona uma fonte da tela de 256 caracteres. Carrega  a  fonte
              dentro  do  gerador  de  caracteres EGA/VGA. argp aponta para um
              mapa de bits de 8192, com 32  bytes  por  caractere.  Somente  o
              primeiro  N  deles  sao usados para uma fonte 8xN (0 < N <= 32).
              Esta chamada tambem elimina o mapeamento Unicode.

       PIO_FONTX
              Seleciona a fonte da tela e associa informacoes de desenho. argp
              aponta para uma

              struct consolefontdesc {
                      u_short charcount;      /* caracteres na fonte (256 ou 512) */
                      u_short charheight;     /* linhas rastreadas por caracteres (1-32) */
                      char *chardata;         /* dados da fone em forma expandida */
              };

              Se  necessario  a  tela  sera  apropriadamente redimensionada, e
              SIGWINCH envia para o processo apropriado. Esta  chamada  tambem
              elimina o mapeamento Unicode. (Desde 1.3.1.)

       PIO_FONTRESET
              Repoes  o  fonte  da  tela,  tamanho e mapeamento Unicode para a
              incializacao padrao. argp nao e usado, mas seria selecinado para
              NULL  para  assegurar  compatibilidade  com  futuras  versoes do
              Linux. (Desde 1.3.28.)

       GIO_SCRNMAP
              Obtem o mapeamento da tela a partir do kernel. argp aponta  para
              uma   area  de  tamanho  E_TABSZ,  o  qual  e  carregado  com  a
              posicionamento da fonte usada para exibir cada  caractere.  Esta
              chamada  e  provavelmente para retornar informacoes imprestaveis
              se a fonte atualmente carregada e maior que 256 caracteres.

       GIO_UNISCRNMAP
              Obtem o mapeamento completo Unicode da tela a partir do  kernel.
              argp  aponta  para  uma  area de tamanho E_TABSZ*sizeof(unsigned
              short), o qual e carregado com a representacao Unicode  de  cada
              caractere. Um conjunto especial de Unicode, comecando em U+F000,
              sao  usados  para  representar  o  mapeamento  ``direto  para  a
              fonte''.  (Desde 1.3.1.)

       PIO_SCRNMAP
              Carrega  o ``definivel pelo usuario'' (quatro) tabelas no kernel
              o qual mapeia bytes dentro dos simbolos da tela da console. argp
              aponta para uma area de tamanho E_TABSZ.

       PIO_UNISCRNMAP
              Carrega  o ``definivel pelo usuario'' (quatro) tabelas no kernel
              a qual mapeia bytes  dentro  dos  Unicodes,  o  qual  sao  entao
              traduzidos  em  simbolos 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
              simbolos da fonte. (Desde 1.3.1.)

       GIO_UNIMAP
              Obtem o mapeamento Unicode para fonte a partir do  kernel.  argp
              aponta para uma

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

              aonde entries aponta para um vetor de

              struct unipair {
                      u_short unicode;
                      u_short fontpos;
              };

              (Desde 1.1.92.)

       PIO_UNIMAP
              Coloca  o  mapeamento  unicode para fonte no kernel. argp aponta
              para uma estrutura unimapdesc. (Desde 1.1.92)

       PIO_UNIMAPCLR
              Limpa a tabela, possivelmente um algoritmo picado.  argp  aponta
              para uma

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

              (Desde 1.1.92.)

       KDGKBMODE
              Obtem  o modo atual do teclado. argp aponta para um longo o qual
              e selecionado para um destes:

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

       KDSKBMODE
              Seleciona o modo atual do teclado.  argp e um longo igual  a  um
              dos valores acima.

       KDGKBMETA
              Obtem  o  modo de manipulacao da tecla meta. argp aponta para um
              longo o qual e selecionado para um destes:

                  K_METABIT     0x03   set high order bit
                  K_ESCPREFIX   0x04   escape prefix

       KDSKBMETA
              Seleciona o modo de manipulacao da tecla meta.  argp e um  longo
              igual a um dos valores acima.

       KDGKBENT
              Obtem uma entrada na tabela de translacao da tecla (keycode para
              action code).  argp aponta para uma

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

              com o primeito dos dos membros preenchido em: kb_table seleciona
              a tabela de tecla (0 <= kb_table < MAX_NR_KEYMAPS), e kb_index e
              o keycode (0 <= kb_index <  NR_KEYS).   kb_value  e  selecionado
              para  o correspondente action code, ou K_HOLE se nao havia tecla
              semelhante, ou K_NOSUCHMAP se kb_table e invalido.

       KDSKBENT
              Seleciona uma entrada na tabela de traducao.  argp  aponta  para
              uma estrutura kbentry.

       KDGKBSENT
              Obtem uma tecla de funcao. argp aponta para uma

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

              kb_string  e  selecionada  para  a  (terminacao  NULA) sequencia
              correspondente para a tecla de funcao kb_func action code.

       KDSKBSENT
              Seleciona uma entrada para uma tecla de funcao. argp aponta para
              uma struct kbsentry.

       KDGKBDIACR
              Le a tabela de acentuacao do kernel. argp aponta para uma

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

              onde kb_cnt e o numero de entradas no vetor, cada qual e uma

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

       KDGETKEYCODE
              Le  a  tabela  de entrada keycode do kernel (rastrei o code para
              keycode).  argp aponta para uma

              struct kbkeycode { unsigned int scancode, keycode; };

              keycode e selecionada para corresponder ao  scancode  fornecido.
              (89  <=  scancode  <=  255  somente.   Para 1 <= scancode <= 88,
              keycode==scancode.)  (Desde 1.1.63.)

       KDSETKEYCODE
              Escreve no kernel a entrada da tabela keycode. argp aponta  para
              uma estrutura kbkeycode.  (Desde 1.1.63.)

       KDSIGACCEPT
              O  processo  chamante  indicado  dele concordancia para aceita o
              sinal argp quandop  ele  e  gerado  pelo  presionamento  de  uma
              combinacao  de  teclas apropriadas.  (1 <= argp <= NSIG).  (Veja
              spawn_console() em linux/drivers/char/keyboard.c.)

       VT_OPENQRY
              Devolve o primeiro console disponivel  (fechado).   argp  aponta
              para  um  int  o  qual  e selecionado para um numero de vt (1 <=
              *argp <= MAX_NR_CONSOLES).

       VT_GETMODE
              Obtem o modo de ativacao do vt. argp aponta para uma

              struct vt_mode {
                  char mode;     /* vt mode */
                  char waitv;    /* if set, hang on writes if not active */
                  short relsig;  /* signal to raise on release req */
                  short acqsig;  /* signal to raise on acquisition */
                  short frsig;   /* unused (set to 0) */
              };

              mode e selecionada para um destes valores:

                  VT_AUTO       auto vt switching
                  VT_PROCESS    process controls switching
                  VT_ACKACQ     acknowledge switch

       VT_SETMODE
              Seleciona o modo de ativacao do vt. argp aponta para uma  struct
              vt_mode.

       VT_GETSTATE
              Obtem a informacao global do estado vt. argp aponta para uma

              struct vt_stat {
                  ushort v_active;  /* active vt */
                  ushort v_signal;  /* signal to send */
                  ushort v_state;   /* vt bitmask */
              };

              Para  cada  vt  em uso, o bit correspondente no membro v_state e
              selecionado.  (Kerneis 1.0 direto 1.1.92.)

       VT_RELDISP
              Libera um monitor.

       VT_ACTIVATE
              Troca para o vt argp (1 <= argp <= MAX_NR_CONSOLES).

       VT_WAITACTIVE
              Aguarda ate o vt argp ser ativado.

       VT_DISALLOCATE
              Desalocar a memoria associada com o vt argp.  (Desde 1.1.54.)

       VT_RESIZE
              Seleciona o tamanho ideal da tela kernel. argp aponta para um

              struct vt_sizes {
                  ushort v_rows;       /* # rows */
                  ushort v_cols;       /* # columns */
                  ushort v_scrollsize; /* no longer used */
              };

              Note que isto nao  e  alterado  para  o  modo  de  video.   Veja
              resizecons(8). (Desde 1.1.54.)

       VT_RESIZEX
              Seleciona  os  varios  parametros ideais da tela do kernel. argp
              aponta para um

              struct vt_consize {
                      ushort v_rows;          /* number of rows */
                      ushort v_cols;          /* number of columns */
                      ushort v_vlin;          /* number of pixel rows on screen */
                      ushort v_clin;          /* number of pixel rows per character */
                      ushort v_vcol;          /* number of pixel columns on screen */
                      ushort v_ccol;          /* number of pixel columns per character */
              };

              Qualquer parametro pode ser  selecionada  para  zero,  indicando
              ``nenhuma   alteracao'',   mas   se   multiplos  parametros  sao
              alterados, eles devem ser auto consistentes. Note que  isto  nao
              mudou o modo de video. Veja resizecons(8). (Desde 1.3.3.)

       A  acao  das seguintes following dependia do primeiro byte na estrutura
       apontada pelo argp, relativo a este lugar como o  subcode.   Estes  sao
       somente valido para o superusuario ou o proprietario do tty atual.

       TIOCLINUX, subcode=0
              Esvazia  a tela.  Desapareceu em 1.1.92. (Com o kernel 1.1.92 ou
              posterior, le a partir de /dev/vcsN ou /dev/vcsaN ao invez de.)

       TIOCLINUX, subcode=1
              Obtem a informacao da tarefa. Desapareceu em 1.1.92.

       TIOCLINUX, subcode=2
              Seleciona a selecao.  argp aponta para uma

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

              xs e ys estao comecando as colunas e  linhas.   xe  e  ye  estao
              terminando  as  colunas e linhas. (O canto superior esquerdo e a
              linha=coluna=1.)  sel_mode e 0 para uma  selecao  caractere  por
              caractere, 1 para uma selecao palavra por palavra, ou 2 para uma
              selecao linha por linha.  Os caracteres indicados  na  tela  sao
              brilhantes   e   guardados   no  vetor  estatico  sel_buffer  em
              devices/char/console.c.

       TIOCLINUX, subcode=3
              Cola a selecao.  Os caracteres no buffer sao escritos para fd.

       TIOCLINUX, subcode=4
              Tela nao vazia.

       TIOCLINUX, subcode=5
              Seleciona o conteudo de uma tabela de visualizacao de caracteres
              de  256  bits  definida  na  "palavra", para selecao palavra por
              palavra. (Desde 1.1.32.)

       TIOCLINUX, subcode=6
              argp aponta para um char oq qual e selecionada para o  valor  da
              variavel do kernel shift_state. (Desde 1.1.32.)

       TIOCLINUX, subcode=7
              argp  aponta para um caractere o qual e selecionado para o valor
              da variavel do kernel report_mouse. (Desde 1.1.33.)

       TIOCLINUX, subcode=8
              Esvazia a tela na largura e comprimento, posicao  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,  le  a
              partir /dev/vcsa* ao invez de.)

       TIOCLINUX, subcode=9
              Restaura  o  comprimento e largura da tela, posicao 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, le a
              partir /dev/vcsa* ao invez de.)

       TIOCLINUX, subcode=10
              Manipulacao da caracteristica de Power Saving da nova geracao de
              monitores.   Tela VESA em modo vazio e selecionado para argp[1],
              o qual governa o que a tela em branco fara:

                  0: Tela em branco e desabilitada.

                  1:  O  adptador  de  video  atual  ``registra   a   selecoes
              guardadas,  entao  o  controlador  e programada para desligar os
              pulsos de sincronizacao vertical. Isto coloca o monitor em  mode
              "standby".  Se o monitor tem um temporizador Off_Mode, entao ele
              ira eventualmente desligar a enegia de si mesmo.

                  2: As selecoes atuais sao guardadas, entao ambos  os  pulsos
              de  sincronizacao  vertical  e  horizontal sao desligados.  Isto
              coloca  o  monitor  em  modo  "off".   Se  o  monitor   tem   um
              temporizador  Off_Mode,  ou  se  voce  procura  que  seu monitor
              desligue imediadamente quando o tempo  de  blank_timer  termina,
              entao  voce  preferira esta opcao.  (Cuidado: Desligar o monitor
              frequnetemente ira danificr o monitor.)

              (Desde 1.1.76.)

VALORES DE RETORNO

       -1 para erro, e errno e selecionado.

ERRORS

       errno pode ter um destes valores:

       EBADF  descritor de arquivo e invalido.

       ENOTTY descritor de arquivo nao e associado com um dispositivo especial
              de  caractere,  ou  a requesicao especificada nao se aplica para
              ele.

       EINVAL descritor de arquivo ou argp e invalido.

       EPERM  violacao de permissao.

ADVERT^ENCIAS

       Nao respeite esta pagina de manual como documentacao  das  chamadas  de
       console  ioctl's do Linux.  Isto e fornecido para curiosos somente, com
       um  alternativa  para  estudar  o  fonte.  Ioctl's  sao  chamadas   nao
       documentadas do Linux, propensa em ser alterada sem nenhum aviso. (E de
       fato, esta pagina descreve mais ou menos a situacao da versao do kernel
       1.1.94;  tem pequenas e muitas e nao somente pequenas diferencas com as
       versao mais recentes.)

       Muito frequentemente, sao introduzidas para comunicacao ente o kernel e
       um  programa  particular  bem  conhecido,  (fdisk,  hdparm,  setserial,
       tunelp, loadkeys, selection, setfont, etc.), e  o  comportamento  deles
       sera alterado quando requerido por este programa particular.

       Programas  usando  estas  ioctl's  podem  nao ser portaveis para outras
       versoes de Unix, podem nao trabalhar em versoes antiguas  do  Linux,  e
       podem nao trabalhar nas futuras versoes do Linux.

       Usar as funcoes POSIX.

VEJA TAMB'EM

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

TRADUZIDO POR LDP-BR em 21/08/2000.

       Andre  L.  Fassone  Canova  <lonelywolf@blv.com.br>  (traducao)  Carlos
       Augusto Horylka <horylka@conectiva.com.br> (revisao)