Provided by: manpages-pt_20040726-4_all bug

NOME

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

DESCRIÇÃO

       ADVERTÊNCIA: Se você usar a informação seguintes você pode queimar a si
       mesmo.

       ADVERTÊNCIA: ioctls são chamadas internas do Linux  sem  documentação,
       propensa em ser altera sem nenhum aviso. Usar as funções POSIX.

       As seguintes requisição peculiar ioctl() do linux são suportadas.  Cada
       requer um terçeiro argumento, presumido aqui para ser argp.

       KDGETLED
              Obtém os estados dos LEDs. argp aponta para um inteiro longo. Os
              três  menores  bits  de *argp 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

       KDSETLED
              Seleciona os LEDs. Os LEDs são selecionados para os três menores
              bits  de  argp.  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.

       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.

       KDGKBLED
              Obtém  o  sinalizador  de  teclado CapsLock, NumLock, ScrollLock
              (sem luzes).  argp 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.)

       KDSKBLED
              Seleciona o sinalizador do teclado CapsLock, NumLock, ScrollLock
              (sem  luzes).   argp 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.)

       KDGKBTYPE
              Obtém  o  tipo de teclado. Este retorna o valor KB_101, definido
              como 0x02.

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

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

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

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

       KDSETMODE
              Seleciona o modo texto/gráfico. argp é um destes:

                  KD_TEXT       0x00
                  KD_GRAPHICS   0x01

       KDGETMODE
              Obtém o modo text/graphics. argp aponta para  um  tipo  longo  o
              qual é 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  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,   argp   =  (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.)

       KIOCSOUND
              Inicia  ou  termina  a  geração do som. O 16 bits mais baixos de
              argp especificam o periodo em ciclos de relógio (que é,  argp  =
              1193180/freqüencia).   argp  =  0  desliga  o  som.  Em ambos os
              casos, o controle retorna imediatamente.

       GIO_CMAP
              Obtém o atual mapa de cores padrão  a  partir  do  kernel.  argp
              aponta para um vetor de 48 bytes. (Desde 1.3.3.)

       PIO_CMAP
              Altera o mapa de cores padrão no modo texto. argp 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.)

       GIO_FONT
              Obtém os 256 caracteres da fonte da  tela  em  forma  expandida.
              argp  aponta  para  um  vetor de 8192 bytes. Falha com código de
              erro EINVAL se a fonte atualmente carregado é uma fonte  de  512
              caracteres, ou se o console não está em modo texto.

       GIO_FONTX
              Obtém a fonte da tela e informações associadas. argp aponta para
              uma estrutua consolefontdesc (veja  PIO_FONTX).  Na  chamada,  o
              campo  charcount precisaria ser selecionado para o número máximo
              de caracteres  que  poderia  combinar  no  buffer  apontado  por
              chardata.   No  retorno,  o charcount e charheight são recheados
              dos respectivos dados para a fonte  atualmente  carregada,  e  o
              vetor  chardata  contém  o  dados da fonte se o valor inicial de
              charcount indicava espaço suficiente disponível; de outra  forma
              o buffer fica intocado e errno é 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  são usados para uma fonte 8xN (0 < N <= 32).
              Esta chamada também elimina o mapeamento Unicode.

       PIO_FONTX
              Seleciona a fonte da tela e associa informações 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  necessário  a  tela  será  apropriadamente redimensionada, e
              SIGWINCH envia para o processo apropriado. Esta  chamada  também
              elimina o mapeamento Unicode. (Desde 1.3.1.)

       PIO_FONTRESET
              Repões  o  fonte  da  tela,  tamanho e mapeamento Unicode para a
              incialização padrão. argp não é usado, mas seria selecinado para
              NULL  para  assegurar  compatibilidade  com  futuras  versões do
              Linux. (Desde 1.3.28.)

       GIO_SCRNMAP
              Obtém o mapeamento da tela a partir do kernel. argp 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.

       GIO_UNISCRNMAP
              Obtém o mapeamento completo Unicode da tela a partir do  kernel.
              argp  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.)

       PIO_SCRNMAP
              Carrega  o ‘‘definível pelo usuário’’ (quatro) tabelas no kernel
              o qual mapeia bytes dentro dos simbolos da tela da console. argp
              aponta para uma área de tamanho E_TABSZ.

       PIO_UNISCRNMAP
              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.)

       GIO_UNIMAP
              Obtém 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
              Obtém  o modo atual do teclado. argp aponta para um longo o qual
              é selecionado para um destes:

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

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

       KDGKBMETA
              Obtém  o  modo de manipulação da tecla meta. argp aponta para um
              longo o qual é selecionado para um destes:

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

       KDSKBMETA
              Seleciona o modo de manipulação da tecla meta.  argp é um  longo
              igual a um dos valores acima.

       KDGKBENT
              Obtém uma entrada na tabela de translação 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 é
              o keycode (0 <= kb_index <  NR_KEYS).   kb_value  é  selecionado
              para  o correspondente action code, ou K_HOLE se não havia tecla
              semelhante, ou K_NOSUCHMAP se kb_table é invalido.

       KDSKBENT
              Seleciona uma entrada na tabela de tradução.  argp  aponta  para
              uma estrutura kbentry.

       KDGKBSENT
              Obtém uma tecla de função. argp aponta para uma

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

              kb_string  é  selecionada  para  a  (terminação  NULA) seqüencia
              correspondente para a tecla de função kb_func action code.

       KDSKBSENT
              Seleciona uma entrada para uma tecla de função. argp aponta para
              uma struct kbsentry.

       KDGKBDIACR
              Lê a tabela de acentuação do kernel. argp aponta para uma

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

              onde kb_cnt é o número de entradas no vetor, cada qual é uma

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

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

              struct kbkeycode { unsigned int scancode, keycode; };

              keycode é 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 concordância para aceita o
              sinal argp quandop  ele  é  gerado  pelo  presionamento  de  uma
              combinação  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  é selecionado para um número de vt (1 <=
              *argp <= MAX_NR_CONSOLES).

       VT_GETMODE
              Obtém o modo de ativação 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 é 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 ativação do vt. argp aponta para uma  struct
              vt_mode.

       VT_GETSTATE
              Obtém a informação 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 é
              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 até o vt argp ser ativado.

       VT_DISALLOCATE
              Desalocar a memória 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 não  é  alterado  para  o  modo  de  video.   Veja
              resizecons(8). (Desde 1.1.54.)

       VT_RESIZEX
              Seleciona  os  vários  parâmetros 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 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.)

       A  ação  das seguintes following dependia do primeiro byte na estrutura
       apontada pelo argp, relativo a este lugar como o  subcode.   Estes  são
       somente válido para o superusuário ou o proprietário do tty atual.

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

       TIOCLINUX, subcode=1
              Obtém a informação da tarefa. Desapareçeu em 1.1.92.

       TIOCLINUX, subcode=2
              Seleciona a seleção.  argp aponta para uma

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

              xs  e  ys  estão  começando  as colunas e linhas.  xe e ye estão
              terminando as colunas e linhas. (O canto superior esquerdo  é  a
              linha=coluna=1.)   sel_mode  é  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.

       TIOCLINUX, subcode=3
              Cola a seleção.  Os caracteres no buffer são escritos para fd.

       TIOCLINUX, subcode=4
              Tela não vazia.

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

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

       TIOCLINUX, subcode=7
              argp aponta para um caractere o qual é selecionado para o  valor
              da variável do kernel report_mouse. (Desde 1.1.33.)

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

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

       TIOCLINUX, subcode=10
              Manipulação da caracteristíca de Power Saving da nova geração de
              monitores.  Tela VESA em modo vazio é selecionado para  argp[1],
              o qual governa o que a tela em branco fará:

                  0: Tela em branco é desabilitada.

                  1:   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.

                  2:  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.  (Cuidado: Desligar  o  monitor
              freqünetemente irá danificr o monitor.)

              (Desde 1.1.76.)

VALORES DE RETORNO

       -1 para erro, e errno é selecionado.

ERRORS

       errno pode ter um destes valores:

       EBADF  descritor de arquivo é inválido.

       ENOTTY descritor de arquivo não é associado com um dispositivo especial
              de caractere, ou a requesição especificada não  se  aplica  para
              ele.

       EINVAL descritor de arquivo ou argp é invalido.

       EPERM  violação de permissão.

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.

VEJA TAMBÉM

       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.

       André  L.  Fassone  Canova  <lonelywolf@blv.com.br>  (tradução)  Carlos
       Augusto Horylka <horylka@conectiva.com.br> (revisão)