Share via


Keyboard Driver Samples (Windows Embedded CE 6.0)

1/6/2010

The %_WINCEROOT%\Public\Common\OAK\Drivers\Keybd directory contains the source code for translation libraries for standard multifunction keyboards with 101 keys. This source code is built into hardware interface libraries for PS/2 8042 keyboard controllers and for hardware platforms with no keyboard controllers. The stub PDD is for hardware platforms without a keyboard controller.

The following table shows the location of the source code from which the hardware interface libraries are generated.

Subdirectory of %_WINCEROOT%\Public\Common\OAK\Drivers Description

keybd\laymgr

Layout Manager, which coordinates keyboard PDDs, device layouts, and input languages

keybd\ist

Generic keyboard IST

keybd\Nop

Stub keyboard PDD for a hardware platform with no keyboard controller

keybd\PS2_8042

Keyboard PDD and hardware driver for PS/2 8042-compatible keyboard controller

keybd\DeviceLayouts

Scan code to virtual-key translation tables for AT scan code sets and virtual key remapping functions in several international types

keybd\DeviceLayouts\Remap

keybd\DeviceLayouts\Remap\NumPadRmp

Virtual key remapping libraries

NumPad remapping library

keybd\DeviceLayouts\PS2_AT

keybd\DeviceLayouts\PS2_AT\00000409

keybd\DeviceLayouts\PS2_AT\00010409

keybd\DeviceLayouts\PS2_AT\00000409

keybd\DeviceLayouts\PS2_AT\00000412

AT scan code device layouts

United States 101 keyboard

Japanese (NEC layout) keyboard

Japanese (IBM layout) keyboard

Korean keyboard

keybd\InputLangs

keybd\InputLangs\0409

keybd\InputLangs\0411

keybd\InputLangs\0412

Virtual key to character input languages

United States English

Japanese

Korean

keybd\dll

keybd\dll\Kbd8042Us

keybd\dll\Kbd8042Jpn1

keybd\dll\Kbd8042Jpn2

keybd\dll\Kbd8042Kor

keybd\dll\KbdNopUs

keybd\dll\KbdNopJpn1

keybd\dll\KbdNopJpn2

keybd\dll\KbdNopKor

Creates AT scan code and null driver libraries that can be linked during the Sysgen phase

All of the sample platforms shipped with Windows Embedded CE use keyboard drivers based on the model device driver (MDD) code in the %_WINCEROOT_%\Public\Common\OAK\Drivers\Keybd directory. All of the sample platforms support keyboards that transmit AT scan codes.

The following table shows the libraries that link to build the driver.

Library Description

Keyboard controller interface

Very hardware platform-dependent.

Interrupt service thread (IST)

Can be used on most hardware platforms.

Scan code to virtual-key mapping

Different combinations of the scan code to virtual-key, virtual-key to character, and virtual-key mapping libraries create all varieties of international keyboards.

Virtual-key to character mapping

Different combinations of the scan code to virtual-key, virtual-key to character, and virtual-key mapping libraries create all varieties of international keyboards.

Virtual key remapping

Different combinations of the scan code to virtual-key, virtual-key to character, and virtual-key remapping libraries create all varieties of international keyboards.

Virtual key remapping generates virtual keys based on the state of particular physical keys and key modifiers, such as SHIFT and ALT. It is required on hardware platforms that do not have a standard physical keyboard.

Some hardware platforms use the PS/2 keyboard controller, which links during the Sysgen build phase and some use controller-specific code that is in their Platform or SOC directories.

Sample code for keyboard drivers is provided in the following directories:

  • %_TARGETPLATROOT%\Drivers\KBDMOUSE
  • %_TARGETPLATROOT%\Drivers\KEYMSE2
  • %_TARGETPLATROOT%\Drivers\PS2KBDMOUSE
  • %_WINCEROOT%\Public\Common\Oak\Drivers\Keybd

The driver in the %_WINCEROOT%\Public\Common\Oak\Drivers\Keybd directory is a layered driver. This driver generates virtual keys based on the state of particular physical keys and modifier keys, such as SHIFT and ALT. It also implements virtual key mapping. The virtual key remapping handles the case where the NUM LOCK key is engaged while a SHIFT key and a numeric keypad key are pressed. When this happens, key presses on the numeric keypad should behave as if the NUM LOCK key is not active. For example, the 8 key on the keypad should generate a cursor-up key event.

See Also

Concepts

Keyboard Driver Registry Settings

Other Resources

Keyboard Drivers