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:
The following table illustrates the
registry entries for an English US 101/102 key USB keyboard.
Value name | Value type | Value data |
---|---|---|
LayerDriver JPN | REG_SZ | kbd101.dll |
OverrideKeyboardIdentifier | REG_SZ | PCAT_101KEY |
OverrideKeyboardSubtype | DWORD | 0 |
OverrideKeyboardType | DWORD | 7 |
The following table illustrates the
registry entries for a Korean 101-key Type 1 USB keyboard.
Value name | Value type | Value data |
---|---|---|
LayerDriver KOR | REG_SZ | kbd101a.dll |
OverrideKeyboardIdentifier | REG_SZ | PCAT_101AKEY |
OverrideKeyboardSubtype | DWORD | 3 |
OverrideKeyboardType | DWORD | 8 |
The following table illustrates the
registry entries for a Korean 101-key Type 2 USB keyboard.
Value name | Value type | Value data |
---|---|---|
LayerDriver KOR | REG_SZ | kbd101b.dll |
OverrideKeyboardIdentifier | REG_SZ | PCAT_101BKEY |
OverrideKeyboardSubtype | DWORD | 4 |
OverrideKeyboardType | DWORD | 8 |
The following table illustrates the
registry entries for a Korean 101-key Type 3 USB keyboard.
Value name | Value type | Value data |
---|---|---|
LayerDriver KOR | REG_SZ | kbd101c.dll |
OverrideKeyboardIdentifier | REG_SZ | PCAT_101CKEY |
OverrideKeyboardSubtype | DWORD | 5 |
OverrideKeyboardType | DWORD | 8 |
The following table illustrates the
registry entries for a Korean 103/106-key USB keyboard.
Value name | Value type | Value 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