The [underdocumented] world of the Korean keyboard layout

by Michael S. Kaplan, published on 2012/04/30 07:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2012/04/30/10298801.aspx


The Korean keyboard layout has several diferent flavors, all of which get molded into the one big "kbdkor.dll" file that contains four different regular keyboard DLLs.

You might be curious what those four Korean layouts are:

Note that none of these four are documented keybord subtypes for GetKeyboardType. And note that 106 isn't on the list (the Korean 106 is exacyly captured by the Korean 103).

There is a reason for all of that....

Because unlike the Japanese "kbdjpn.dll" keyboard, it is not so much hardware incompatibility that drives the differences, it is how the 101 keyboards handle the two missing keys (when they are missing).

The four different layouts (this is information from the actual source; it seems to be docmented nowhere!):

kbd101a:

kbd101b:

kbd101c:

kbd103:

Now of course there isn't much documentation on these differences.

Though how to detect them can be found, in the Microsoft Knowledge Base (927824: Windows may not use the correct keyboard layout when you connect a USB keyboard to the computer), which has the following info listed:

English and Korean keyboard registry entries

English US 101/102-key keyboard

The following table illustrates the

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

registry entries for an English US 101/102 key USB keyboard.

Value nameValue typeValue data
LayerDriver JPN REG_SZ kbd101.dll
OverrideKeyboardIdentifier REG_SZ PCAT_101KEY
OverrideKeyboardSubtype DWORD 0
OverrideKeyboardType DWORD 7

Korean 101-key Type 1 USB keyboard

The following table illustrates the

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

registry entries for a Korean 101-key Type 1 USB keyboard.

Value nameValue typeValue data
LayerDriver KOR REG_SZ kbd101a.dll
OverrideKeyboardIdentifier REG_SZ PCAT_101AKEY
OverrideKeyboardSubtype DWORD 3
OverrideKeyboardType DWORD 8

Korean 101-key Type 2 USB keyboard

The following table illustrates the

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

registry entries for a Korean 101-key Type 2 USB keyboard.

Value nameValue typeValue data
LayerDriver KOR REG_SZ kbd101b.dll
OverrideKeyboardIdentifier REG_SZ PCAT_101BKEY
OverrideKeyboardSubtype DWORD 4
OverrideKeyboardType DWORD 8

Korean 101-key Type 3 USB keyboard

The following table illustrates the

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

registry entries for a Korean 101-key Type 3 USB keyboard.

Collapse this tableExpand this table
Value nameValue typeValue data
LayerDriver KOR REG_SZ kbd101c.dll
OverrideKeyboardIdentifier REG_SZ PCAT_101CKEY
OverrideKeyboardSubtype DWORD 5
OverrideKeyboardType DWORD 8

Korean 103/106-key USB keyboard

The following table illustrates the

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

registry entries for a Korean 103/106-key USB keyboard.

Value nameValue typeValue data
LayerDriver KOR REG_SZ kbd103.dll
OverrideKeyboardIdentifier REG_SZ PCAT_103KEY
OverrideKeyboardSubtype DWORD 6
OverrideKeyboardType DWORD 8

 Now one very reasonable question one may expect to have here is perfectly obvious.

WHY?

As in....

Why go through all of these tortuous levels of complication at all?

I have no idea, though I suspect it is compatibility with various other layouts, and giving OEMs a way to support it.

But in any case, Korean keyboard problems are much easier to grok than the Japanese ones. And at least now much of this info is documented somewhere!


John Cowan on 30 Apr 2012 9:10 AM:

Is it really misspelled "Hanguel" in the source?

Michael S. Kaplan on 30 May 2012 12:28 PM:

Yes it is, in fact... :-)


referenced by

2012/07/09 The [even more underdocumented] world of the Japanese keyboard layout

go to newer or older post, or back to index or month or day