|
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.