DBCS PM provides an input handling mechanism to handle the DBCS keyboard and input method functions. The Structure of the DBCS Keyboard and Input Method in DBCS PM shows its process flow.
Keyboard data (from kbd D/D) Mouse data (from Mou D/D) │ │ (*1) ┌────────────┐ │ │ │System Queue│ │ │ └────────────┘ │ Input Playback Hook (*7) │─────────────────────┐ VKey │ WinSetGlyphXlatTbl │ Char │ WinSetCharXlatTbl │ │ │ │─────────────┐(*3) │ │ │ │ PreAccel Hook │ WM_CHAR ┌───────────────┐ (*2) │ │ │ │─────────│ DBCS Keyboard │ (*4) ┌───────┐ │ │ │───────│ │ │ │ Input Method │ │ I M E │ │ │ │───────│ │ │ │ Mechanism │ (*5) └───────┘ │ │ │ Provided by system WM_CHAR │ └───────────────┘ or ISV │ │ Provided by system │ (*2) ┌──────────────┐ │ │ │ │ │ Application │ ────┘ (*6) │ │ └──────────────┘ Structure of the DBCS Keyboard and Input Method in DBCS PM
The function is implemented as follows:
Note: Pre─accel hook is a mechanism which the PM input module uses to handle the accelerator keys that are defined by the application program.