Compartilhar via


Keyboard Driver Development Concepts

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Drivers Teclado são divididos em componentes. Isso facilita desenvolver drivers de teclado para qualquer layout de teclado. A layout de teclado é a chave organização usada para um teclado específico, inclusive tais fatores como o número de chaves e a configuração das chaves. Alguns teclados proprietários usam personalizado layouts e muitos teclados permitem que um usuário para chaves mapa (n.); mapear (v.) para caracteres de acordo com preferência pessoal.

Para todas as plataformas

Alguns drivers de teclado devem chaves identificador que geram múltiplo chaves virtuais. Isso é útil em menor plataformas hardware que não tiverem todos o físico teclas normalmente presentes no teclados usados com área de trabalho estações de trabalho. Alguns das chaves têm múltiplo funções, funções modificadas ou ambos. O driver gera chaves virtuais baseia o estado de determinado físico modificador chaves, como SHIFT e ALT e.

Geralmente, você deve implementar o driver de teclado como uma em camadas driver. A camada superior ou modelo driver de dispositivo (MDD), mapeia códigos digitalizar para Virtual-chave códigos, gera dados caractere associado com virtual-chave códigos, em seguida, empacota mensagens do teclado e coloca-los em um fila de mensagens System-Wide. A camada inferior ou plataforma-dependente driver (PDD), recupera códigos digitalizar do hardware.

A seguinte ilustração mostra uma pilha driver de teclado que seja hardware-plataforma independente.

Aa924890.94147dce-9057-474d-8041-6e8760800367(pt-BR,WinEmbedded.60).gif

O driver de teclado é diferente de outros drivers dispositivo porque é linguagem dependente. A codificar digitalizar para Virtual-código de chave e virtual-código de chave para Unicode caractere conversões são dependente somente em layout de teclado para a linguagem. A função PFN_KEYBD_DRIVER_VKEY_TO_UNICODE é responsável por gerar o caractere correto Unicode baseia o estado das teclas virtuais. Essa função é dependente somente em layout de teclado para a linguagem. Ambas essas conversões são baseadas em tabelas de conversão; Também conhecido como, Mapeamentos de teclado, que você pode personalizar para idiomas diferentes. Você pode criar seu próprio teclado mapeamentos ou personalizar o existente teclado mapeamentos, se necessário.

Os elementos gráficos, janela e eventos de subsistema (GWES) carrega o driver de teclado no tempo inicializar. Quando GWES for iniciado, ele recupera o nome de dynamic-link library o driver de teclado (DLL) a partir de HKEY_LOCAL_MACHINE\Hardware\DeviceMap\KEYBD\Drivername chave Registro. Se nenhuma entrada for encontrada, GWES usará o nome usar como padrão, Keybddr.dll. Em seguida, carrega o DLL e verifica que todos os exigido pontos entrada existirem. Em seguida, GWES chama a função PFN_KEYBD_DRIVER_INITIALIZE para executar um inicialização única. Nesta função, o driver salva um local copiar de função callback de GWES e inicializa o segmento serviço hardware e interrupção (ist) para interrupções de teclado identificador. Quando uma interrupção está sinalizado, o driver de teclado é responsável por converter a codificar digitalizar hardware em um virtual - código de chave e passar ambos para GWES por qualquer uma de callback passado para PFN_KEYBD_DRIVER_INITIALIZE_EX ou o keybd_event API. Posteriormente, GWES recebe o evento de teclado da fila e chamadas voltar para do o driver PFN_KEYBD_DRIVER_VKEY_TO_UNICODE Rotina. O driver analisa a chave especificada evento e o Virtual-estado da chave e gera o correspondente caracteres. GWES, em seguida, envia o Virtual-código de chave e os caracteres para o apropriado aplicativo. O driver de teclado deve adicionar os sinalizadores KEYBD_DEVICE_SILENT ou KEYBD_DEVICE_SILENT_REPEAT para o Virtual-chave códigos ou transmitir KEYEVENTF_SILENT para keybd_event Em ordem suprimir chave audível clica.

O PFN_KEYBD_DRIVER_GET_INFOPFN_KEYBD_DRIVER_SET_MODE funções get e definir informações sobre o teclado. Quando a entrada principal segmento processa um teclado - evento conexão através de função callback passado para PFN_KEYBD_DRIVER_INITIALIZE_EX, as chamadas segmento a PFN_KEYBD_DRIVER_GET_INFO função para o Virtual get-código de chave para dados Unicode fornecido pelo driver. O segmento também aloca o exigido memória para o Virtual-dados estado da chave e qualquer adicional dados exigido pelo driver.

O PFN_KEYBD_DRIVER_INITIALIZE_EX e PFN_KEYBD_EVENT_CALLBACK_EX funções versões substituir o non-Ex dessas funções. As funções ex fornecem suporte para Terminal Server Client, manipulação adicional digitalizar codificar informações que requer a Terminal Server Protocol. Os drivers de teclado exemplo em todas as plataformas hardware usam as versões ex.

Aa924890.collapse(pt-BR,WinEmbedded.60).gif A funcionalidade do driver Teclado obrigatórios e opcionais

Teclado drivers devem chamar keybd_event para notificar GWES de qualquer atividade do teclado.

A seguinte lista mostra os opcional teclado funcionalidade driver:

  • Atualizando drivers de teclado para trabalho com Layout Manager. Para obter mais informações, consulte Layout Manager.
  • Implementando MapVirtualKey(uCode, 0) Para habilitar Remote Desktop Protocol (RDP). (MapVirtualKeyuCode, 0) deve executar código de chave virtual para conversões codificar digitalizar XT. Para obter mais informações, consulte Remote Desktop Protocol Support.
  • A implementação (MapVirtualKeyuCode, 3) Para habilitar teclados USB. (MapVirtualKeyx, 3) deve executar at codificar digitalizar para conversões virtual código de chave.
  • Ativando LEDs do Teclado USB

Para Windows Embedded CE, para obter mais informações, consulte Adding Keyboard LED Support to the HID Keyboard Driver.

Aa924890.collapse(pt-BR,WinEmbedded.60).gif Comentários

É recomendável que o driver luz de fundo não ENC softkey pressiona para o OS quando a luz de fundo está desativado.

Para Mobile Windows

Aa924890.collapse(pt-BR,WinEmbedded.60).gif Comentários

**Drivers de dispositivo que iniciar aplicativos devem usar o State and Notifications Broker para verificar o estado bloqueio dispositivo prior to iniciando aplicativos que apresentam um User Interface para o usuário. Esta ação irá evitar aplicativos vindas backup sobre a Tela bloqueio e potencialmente expondo informações sigilosas.

Para verificar o estado bloqueado o seguinte codificar pode ser usado.

DWORD dwLockState = 0;
RegistryGetDWORD(SN_LOCK_ROOT, SN_LOCK_PATH, SN_LOCK_VALUE, &dwLockState);
if(dwLockState & SN_LOCK_BITMASK_DEVICELOCKED){
   //device is locked
}
if(dwLockState & SN_LOCK_BITMASK_KEYLOCKED){
   //device is key locked
}
if(dwLockState & SN_LOCK_BITMASK_SIMLOCKED){
   //device is SIM locked
}

Os valores SN_LOCK_ * são definidos em arquivo de cabeçalho de snapi.h e a função RegistryGetDWORD é definido em arquivo de cabeçalho de regext.h.**

See Also

Concepts

Layout Manager
Keyboard Driver Samples
Keyboard Driver Registry Settings
Device Layouts
Input Languages
Translating Scan Codes to Virtual-Key Codes
External Keyboard Driver Support