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:  ioctl's  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)