| Interface: Keyboard Arquivos: keyboard.h Última atualização: 24/11/2002 Autor: Luiz Henrique Shigunov | Descrição Estruturas Configuração | 
| Funções para o sistema | |
| 0x00 - GetLayout - Obtém o layout corrente | 0x01 - SetLayout - Define o layout corrente | 
| Funções para o usuário | |
| 0x02 - UGetLayout - Obtém o layout corrente | 0x03 - USetLayout - Define o layout corrente | 
Esta página descreve a interface Keyboard que trata do acesso ao teclado.
O módulo que implementar esta interface deve converter os toques de teclas (scancode) em virtual key e esses virtual key em caracteres propriamente dito.
Para fazer isso o módulo vai utilizar as tabelas de um módulo que implemente a interface KbdLayout.
Além disso o módulo deve controlar os leds do teclado (CapsLock, NumLock, ScrollLock).
typedef struct {
    unsigned int type;
    unsigned short charCode;
    unsigned char vKey;
    unsigned char reserved;
    unsigned int flags;
    unsigned int reserved2[5];
} Keyboard_Event;
Os valores de type entre 0x00-0x0f são reservados para o teclado.
Atualmente estão definidos os seguinte tipos:
| Valor | Descrição | 
|---|---|
| 0x00 | Tecla pressionada | 
| 0x01 | Tecla liberada | 
scancode é o valor lido do teclado para a tecla, charCode é o código do caracter em Unicode, zero se não existir e flags tem o estado dos vários shifts (ctrl, shift, alt, etc) e será o somatório de:
vKey é a virtual key, que pode ser:
| Valor | Código | Descrição | 
|---|---|---|
| 0x00 | Não utilizado | |
| 0x01 | Keyboard_VK_0 | Número 0 | 
| 0x02 | Keyboard_VK_1 | Número 1 | 
| 0x03 | Keyboard_VK_2 | Número 2 | 
| 0x04 | Keyboard_VK_3 | Número 3 | 
| 0x05 | Keyboard_VK_4 | Número 4 | 
| 0x06 | Keyboard_VK_5 | Número 5 | 
| 0x07 | Keyboard_VK_6 | Número 6 | 
| 0x08 | Keyboard_VK_7 | Número 7 | 
| 0x09 | Keyboard_VK_8 | Número 8 | 
| 0x0a | Keyboard_VK_9 | Número 9 | 
| 0x0b | Keyboard_VK_A | Letra A | 
| 0x0c | Keyboard_VK_B | Letra B | 
| 0x0d | Keyboard_VK_C | Letra C | 
| 0x0e | Keyboard_VK_D | Letra D | 
| 0x0f | Keyboard_VK_E | Letra E | 
| 0x10 | Keyboard_VK_F | Letra F | 
| 0x11 | Keyboard_VK_G | Letra G | 
| 0x12 | Keyboard_VK_H | Letra H | 
| 0x13 | Keyboard_VK_I | Letra I | 
| 0x14 | Keyboard_VK_J | Letra J | 
| 0x15 | Keyboard_VK_K | Letra K | 
| 0x16 | Keyboard_VK_L | Letra L | 
| 0x17 | Keyboard_VK_M | Letra M | 
| 0x18 | Keyboard_VK_N | Letra N | 
| 0x19 | Keyboard_VK_O | Letra O | 
| 0x1a | Keyboard_VK_P | Letra P | 
| 0x1b | Keyboard_VK_Q | Letra Q | 
| 0x1c | Keyboard_VK_R | Letra R | 
| 0x1d | Keyboard_VK_S | Letra S | 
| 0x1e | Keyboard_VK_T | Letra T | 
| 0x1f | Keyboard_VK_U | Letra U | 
| 0x20 | Keyboard_VK_V | Letra V | 
| 0x21 | Keyboard_VK_W | Letra W | 
| 0x22 | Keyboard_VK_X | Letra X | 
| 0x23 | Keyboard_VK_Y | Letra Y | 
| 0x24 | Keyboard_VK_Z | Letra Z | 
| 0x25 | Keyboard_VK_SPACE | Espaço | 
| 0x26 | Keyboard_VK_KEYPAD0 | Número 0 do keypad | 
| 0x27 | Keyboard_VK_KEYPAD1 | Número 1 do keypad | 
| 0x28 | Keyboard_VK_KEYPAD2 | Número 2 do keypad | 
| 0x29 | Keyboard_VK_KEYPAD3 | Número 3 do keypad | 
| 0x2a | Keyboard_VK_KEYPAD4 | Número 4 do keypad | 
| 0x2b | Keyboard_VK_KEYPAD5 | Número 5 do keypad | 
| 0x2c | Keyboard_VK_KEYPAD6 | Número 6 do keypad | 
| 0x2d | Keyboard_VK_KEYPAD7 | Número 7 do keypad | 
| 0x2e | Keyboard_VK_KEYPAD8 | Número 8 do keypad | 
| 0x2f | Keyboard_VK_KEYPAD9 | Número 9 do keypad | 
| 0x30 | Keyboard_VK_KEYPAD_DIV | / do keypad | 
| 0x31 | Keyboard_VK_KEYPAD_MUL | * do keypad | 
| 0x32 | Keyboard_VK_KEYPAD_MINUS | - do keypad | 
| 0x33 | Keyboard_VK_KEYPAD_PLUS | + do keypad | 
| 0x34 | Keyboard_VK_KEYPAD_DOT | . do keypad | 
| 0x35 | Keyboard_VK_KEYPAD_COMMA | , do keypad | 
| 0x36 | Keyboard_VK_PUNCT0 | Pontuação | 
| 0x37 | Keyboard_VK_PUNCT1 | Pontuação | 
| 0x38 | Keyboard_VK_PUNCT2 | Pontuação | 
| 0x39 | Keyboard_VK_PUNCT3 | Pontuação | 
| 0x3a | Keyboard_VK_PUNCT4 | Pontuação | 
| 0x3b | Keyboard_VK_PUNCT5 | Pontuação | 
| 0x3c | Keyboard_VK_PUNCT6 | Pontuação | 
| 0x3d | Keyboard_VK_PUNCT7 | Pontuação | 
| 0x3e | Keyboard_VK_PUNCT8 | Pontuação | 
| 0x3f | Keyboard_VK_PUNCT9 | Pontuação | 
| 0x40 | Keyboard_VK_PUNCT10 | Pontuação | 
| 0x41 | Keyboard_VK_PUNCT11 | Pontuação | 
| 0x42 | Keyboard_VK_PUNCT12 | Pontuação | 
| 0x43 | Keyboard_VK_PUNCT13 | Pontuação | 
| 0x44 | Keyboard_VK_PUNCT14 | Pontuação | 
| 0x45 | Keyboard_VK_PUNCT15 | Pontuação | 
| 0x46 | Keyboard_VK_PUNCT16 | Pontuação | 
| 0x47 | Keyboard_VK_PUNCT17 | Pontuação | 
| 0x48 | Keyboard_VK_PUNCT18 | Pontuação | 
| 0x49 | Keyboard_VK_PUNCT19 | Pontuação | 
| 0x4a | Keyboard_VK_PUNCT20 | Pontuação | 
| 0x4b | Keyboard_VK_ESC | Escape | 
| 0x4c | Keyboard_VK_BACK | Backspace | 
| 0x4d | Keyboard_VK_TAB | Tabulação | 
| 0x4e | Keyboard_VK_RETURN | Enter | 
| 0x4f | Keyboard_VK_KEYBAD_RETURN | Enter do keypad | 
| 0x50 | Keyboard_VK_LSHIFT | Shift esquerdo | 
| 0x51 | Keyboard_VK_RSHIFT | Shift direito | 
| 0x52 | Keyboard_VK_LCTRL | Ctrl esquerdo | 
| 0x53 | Keyboard_VK_RCTRL | Ctrl direito | 
| 0x54 | Keyboard_VK_LALT | Alt esquerdo | 
| 0x55 | Keyboard_VK_RALT | Alt direito | 
| 0x56 | Keyboard_VK_PAGEUP | Page up | 
| 0x57 | Keyboard_VK_PAGEDOWN | Page down | 
| 0x58 | Keyboard_VK_HOME | Home | 
| 0x59 | Keyboard_VK_END | End | 
| 0x5a | Keyboard_VK_INSERT | Insert | 
| 0x5b | Keyboard_VK_DELETE | Delete | 
| 0x5c | Keyboard_VK_UP | Cima | 
| 0x5d | Keyboard_VK_DOWN | Baixo | 
| 0x5e | Keyboard_VK_LEFT | Esquerda | 
| 0x5f | Keyboard_VK_RIGHT | Direita | 
| 0x60 | Keyboard_VK_NUMLOCK | Numlock | 
| 0x61 | Keyboard_VK_CAPSLOCK | Capslock | 
| 0x62 | Keyboard_VK_SCROLLLOCK | Scrolllock | 
| 0x63 | Keyboard_VK_SYSRQ | SysRq | 
| 0x64 | Keyboard_VK_PAUSE | Pause | 
| 0x65 | Keyboard_VK_F1 | F1 | 
| 0x66 | Keyboard_VK_F2 | F2 | 
| 0x67 | Keyboard_VK_F3 | F3 | 
| 0x68 | Keyboard_VK_F4 | F4 | 
| 0x69 | Keyboard_VK_F5 | F5 | 
| 0x6a | Keyboard_VK_F6 | F6 | 
| 0x6b | Keyboard_VK_F7 | F7 | 
| 0x6c | Keyboard_VK_F8 | F8 | 
| 0x6d | Keyboard_VK_F9 | F9 | 
| 0x6e | Keyboard_VK_F10 | F10 | 
| 0x6f | Keyboard_VK_F11 | F11 | 
| 0x70 | Keyboard_VK_F12 | F12 | 
| 0x71 | Keyboard_VK_F13 | F13 | 
| 0x72 | Keyboard_VK_F14 | F14 | 
| 0x73 | Keyboard_VK_F15 | F15 | 
| 0x74 | Keyboard_VK_F16 | F16 | 
| 0x75 | Keyboard_VK_F17 | F17 | 
| 0x76 | Keyboard_VK_F18 | F18 | 
| 0x77 | Keyboard_VK_F19 | F19 | 
| 0x78 | Keyboard_VK_F20 | F20 | 
| 0x79 | Keyboard_VK_F21 | F21 | 
| 0x7a | Keyboard_VK_F22 | F22 | 
| 0x7b | Keyboard_VK_F23 | F23 | 
| 0x7c | Keyboard_VK_F24 | F24 | 
| 0x7d | Keyboard_VK_LWIN | Window esquerdo | 
| 0x7e | Keyboard_VK_RWIN | Window direito | 
| 0x7f | Keyboard_VK_MENU | Menu | 
| 0x80 | Keyboard_VK_MACRO | Macro | 
| 0x81-0xff | Não utilizado | 
Várias virtual keys têm um significado dependendo do tipo de teclado.
typedef struct {
    unsigned short interSize;
    unsigned short impSize;
    char names[1];
} Keyboard_LayoutInfo;
Onde interSize é o tamanho do nome da interface incluindo o zero final, impSize o tamanho do nome da implementação incluindo o zero final e names é a área onde os nomes estão, primeiro o nome da interface seguido pelo nome da implementação.
Esta interface define os seguintes grupos e chaves disponíveis através da interface CfgManager:
| /system/Keyboard | ||
| As seguintes chaves estão definidas: 
 Alguns exemplos: 
 | ||
Estas funções são de uso exclusivo dos módulos do sistema.
const char *Keyboard_GetLayout(void);
Esta função obtém o nome da implementação da interface KbdLayout que está sendo usada pelo teclado.
O nome da implementação ou NULL em caso de erro.
int Keyboard_SetLayout(const char *imp);
Esta função define o layout do teclado para imp, que é o nome de uma implementação da interface KbdLayout.
Estas funções foram projetadas para os módulos do usuário.
int Keyboard_UGetLayout(Keyboard_LayoutInfo *info, unsigned int size);
Do usuário.
Esta função obtém informações sobre a implementação da interface KbdLayout que está sendo usada pelo teclado.
size é o tamanho total de info.
Se ocorrer sucesso, info será preenchido com as informações.
int Keyboard_USetLayout(const char *imp);
Do usuário.
Esta função define o layout do teclado para imp, que é o nome de uma implementação da interface KbdLayout.