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.