Dados gerais

Interface: KbdLayout
Arquivos: kbdlayout.h
Última atualização: 27/07/2002
Autor: Luiz Henrique Shigunov
Informações

Descrição
Estruturas
Funções

0x00 - GetMapTables - Obtém as tabelas de mapeamento
 

Descrição

Esta página descreve a interface KbdLayout que trata do acesso aos layouts dos teclados.

É através das diversas tabelas definidas nesta interface que um módulo que implementar a interface Keyboard mapeia um scancode em virtual key e dessa para um caracter.

Estruturas

typedef struct {
    unsigned short charCode;
    unsigned short flags;
} KbdLayout_VKFlags;

Onde charCode é o caracter e flags deve ser:

typedef struct {
    union {
        struct {
            unsigned char firstVK;
            unsigned char firstShift;
            unsigned char nextVK;
            unsigned char nextShift;
        } vks;
        int all;
    } key;
    unsigned short charCode;
    unsigned short reserved;
} KbdLayout_VKDeadKey;

Onde firstVK é a primeira virtual key pressionada, firstShift é o estado do shift para firstVK, nextVK é a segunda virtual key pressionada e nextShift é o estado do shift para nextVK. charCode é o caracter gerado pela combinação.

firstShift e nextShift devem ser:

typedef struct {
    unsigned char sc2VK[128];
    unsigned char e0sc2VK[128];
    KbdLayout_VKFlags vk2CharN[256];
    unsigned short *vk2CharS[8];
    KbdLayout_VKDeadKey *deadKeys;
} KbdLayout_MapTables;

sc2VK é a tabela que mapeia os scancodes sem nenhum prefixo em virtual keys. Já e0sc2VK é a tabela que mapeia os scancodes com prefixo 0xe0 em virtual keys.

vk2CharN é a tabela que mapeia virtual keys em caracteres quando nenhum shift está pressionado.

vk2CharS é um vetor com as tabelas de mapeamento de virtual keys em caracteres. Ela é indexada pelo estado dos shifts:

Se uma dessas tabelas não tiver mapeamento o ponteiro deve ser NULL. Por exemplo, se não tiver uma tabela para Shift-Ctrl-Alt, vk2CharS[6] deve ser NULL.

Os seguintes caracteres especiais podem ser usados em vk2CharN e vk2CharS:

deadKeys é a tabela que mapeia as deadkeys em caracteres, NULL se não tiver essa tabela. A tabela dever terminar com um item totalmente igual a 0.

Se Capslock estiver ligado a tabela vk2CharN da estrutura MapTables será consultada para saber se a tecla capslock atua como shift na virtual key. A tecla shift cancela o comportamento da tecla capslock, ou seja, se capslock estiver ligado e a tecla shift também estiver pressionada é como se capslock estivesse desligado e a tecla shift não estivesse pressionada.

0x00 - GetMapTables

Sintaxe

KbdLayout_MapTables *KbdLayout_GetMapTables(void);

Propriedades

Descrição

Esta função obtém as tabelas de mapeamento para o layout do teclado.

Valor de retorno

As tabelas de mapeamento.