Provided by: manpages-pt_20040726-5_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)

Linux                                              18/09/1995                                  CONSOLE_IOCTLS(4)