console_ioctl

CONSOLE_IOCTLS(4)         Manual do Programador Linux        CONSOLE_IOCTLS(4)



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)