Compartilhar via


Keyboard PDDs

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

O teclado PDD é a plataforma-dependente codificar do driver de teclado. Layout Manager é possível identificador múltiplo, simultâneo teclado PDDs, como um teclado PS/2 e um teclado matriz, sobre o mesmo dispositivo. O teclado PDD contém inicialização e energia funções. Ele pode usar o comum teclado interrupção serviço segmento (ist) ou incluir seu próprio. Quando os elementos gráficos, janela e eventos de subsistema (GWES) inicializa o driver de teclado, ele inicializa cada PDD.

Cada teclado PDD tem uma função entrada que retorna um estrutura de dados contendo uma descrição dos ponteiros de função e PDD. Quando Layout Manager inicializa o PDD, o driver de teclado passa a PDD um identificador exclusivo que a PDD pode usar para se identificar. Isso ajuda quando múltiplo dispositivos usam a mesma PDD. De exemplo, separar dois controladores PS/2.

Cada PDD é a mesma DLL como Layout Manager. Não é possível adicionar um PDD em tempo de execução.

Você deve especificar os PDDs no driver de teclado que exigem inicialização. O NULL finalizada g_rgpfnPddEntries matriz especifica a ponto de entrada de cada PDD o driver de teclado DLL que requer inicialização. Funções de entrada podem ocorrer múltiplo horas na matriz se múltiplo controladores do teclado usam o mesmo PDD. A primeira entrada na matriz é a usar como padrão PDD. MapVirtualKey usa do este PDD usar como padrão dispositivo layout para converter digitalizar códigos para chaves virtuais.

Configuração recomenda Microsoft o usar como padrão PDD para uma entrada PS/2 para teclados HID suporte. Se seu dispositivo não tiver uma porta PS/2, use o stub PS/2 PDD para minimizar o tamanho do seu executar-imagem tempo.

O seguinte exemplo de código mostra uma declaração de uma ponto de entrada PDD de teclado e um inicializada g_rgpfnPddEntries matriz.

typedef BOOL (*PFN_KEYBD_PDD_ENTRY)(
  UINT uiPddId, 
  PFN_KEYBD_EVENT pfnKeybdEvent,
  PKEYBD_PDD *ppKeybdPdd
);

PFN_KEYBD_PDD_ENTRY g_rgpfnPddEntries[] = {
  PS2Entry,
  MatrixEntry,
  NULL
};

Quando executa ist do PDD, o ist envia o atual evento de teclado para o teclado Layout Manager através a função callback PFN_KEYBD_EVENT que identifica a função entrada do PDD o Layout Manager. O seguinte exemplo de código mostra esta interface.

typedef struct tagKEYBD_PDD {
  WORD wPddMask;   // Matches the keyboard layout with its PDD
  LPCTSTR pszName; // Could be used to identify PDD to user
  PFN_KEYBD_PDD_POWER_HANDLER pfnPowerHandler;
  PFN_KEYBD_PDD_TOGGLE_LIGHTS pfnToggleLights;
} KEYBD_PDD, *PKEYBD_PDD;

typedef void (*PFN_KEYBD_EVENT)(
  UINT uiPddId,
  UINT32 uiScanCode,
  BOOL fKeyDown
);

Configurando o teclado ist é uma das responsabilidades da função entrada de PDD. Com um controlador PS/2, a função entrada PDD também configura o mouse ist. O ist chama a função evento do teclado em Layout Manager. Layout Manager passa essa função para função entrada do PDD para cada evento de teclado. Você pode configurar e usar o genérico teclado ist passando função executar um loop ist do driver de teclado uma estrutura contendo todos exigido informações.

O seguinte aplicável mostra exemplo de código funções e estruturas para o genérico teclado ist.

typedef UINT (*PFN_KEYBD_PDD_GET_KEYBD_EVENT)(
  UINT uiPddId,
  UINT32 rguiScanCode[16],
  BOOL rgfKeyUp[16]
);

typedef struct tagKEYBD_IST {
  HANDLE hevInterrupt;
  DWORD dwSysIntr_Keybd;
  UINT uiPddId;
  PFN_KEYBD_PDD_GET_KEYBD_EVENT pfnGetKeybdEvent;
  PFN_KEYBD_EVENT pfnKeybdEvent;
} KEYBD_IST, *PKEYBD_IST;

BOOL KeybdIstLoop(
  PKEYBD_IST pKeybdIst
);

A seguinte lista mostra processamento ist típico:

  1. Quando manipulador interrupção do kernel sinais hevInterrupt, o genérico ist chama do o PDD PFN_KEYBD_PDD_GET_KEYBD_EVENT função.
  2. O ist chama função evento de teclado do Layout Manager para cada evento retornado,
  3. As chamadas ist InterruptDone Para dwSystIntr_Keybd.**
  4. Em resposta a chamadas para sua função evento de teclado, todos lógica repetição automática ocorre em Layout Manager.
    O ist e teclado PDD não envolvidos com intervalos repetição automática.
  5. Layout Manager chama a função Remapping para atual do teclado que específica layout dispositivo.

Para Windows Embedded CE, para obter mais informações, consulte InterruptDone.

Layout Manager chama função PFN_KEYBD_PDD_TOGGLE_LIGHTS do cada PDD quando um estado fotodiodo deve alteração.

Além disso, Layout Manager envia qualquer teclados HID um código de controle E/S (IOCTL), IOCTL_HID_SET_MODIFIERS, quando ocorre um evento fotodiodo para que luzes do teclado HID coincidir com os outros. Isso ocorre quando GWES chamadas do Layout Manager PFN_KEYBD_DRIVER_VKEY_TO_UNICODE.

Layout Manager chama manipulador de energia do cada PDD, PFN_KEYBD_PDD_POWER_HANDLER, com TRUE se desligando e FALSE se desligando no.

See Also

Concepts

Layout Manager