From KLID to GUID (aka KLIDoral stimulation, it feels GUID)

Sorting it all Out
Michael Kaplan's random stuff of dubious value
Be sure to read the disclaimer here first!

From KLID to GUID (aka KLIDoral stimulation, it feels GUID)

  • Comments 6

Apologies for the title (note to self: never author blog titles under the influence to try to appear as a cunning linguist!)

So it was just the other day that Yong asked:

Ok, so it looks like we got a regression (or a design change) on Vista/Windows 7 from Windows XP.

On XP/W2K3:
============Start of regopts.txt============
[RegionalSettings]
InputLocale = 0409:00000409,0404:E0020404
============End of regopts.txt============
// Just having this adds for example the Chinese Traditional (ChangJie) keyboard.

On Windows Vista SP2/W2K8 SP2
============Start of regopts.xml============

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
  <!-- User List-->
  <gs:UserList>
    <gs:User UserID="Current" CopySettingsToSystemAcct="true" />
  </gs:UserList>
  <!--System locale-->
  <gs:SystemLocale Name="zh-TW"/>

  <gs:InputPreferences>
    <!--en-US-->
      <gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/>
    <!--zh-TW-ChangJie-->
      <gs:InputLanguageID Action="add" ID="0404:E0020404"/>
  </gs:InputPreferences>

</gs:GlobalizationServices>
============End of regopts.xml============
It fails with:

Unexpected Failure.  Unsupported parameter.

On Windows 7/W2K8 R2.
It fails with:
Event ID: 10008
Source: International
Error while changing keyboard/input method for "0404:E0020404".

This is one of those architected backcompat breaks that was put in -- GUIDs were now needed, to replace the "fake" KLID values of prior versions that would forward to the appropriate Text Services Framework TIPs (which had been around for several versions, often atop the same KLID values that the older IMM based variants of IME that they replaced used to be on).

It amazed me that after all this time no one had still seemed to have published the list of the GUIDs so that people could replace existing scripts!

In fact, no one had asked me if such a list existed, really.

Which is odd since that is the sort of question I do tend to get a lot.

Anyway, I thought I would just take care of that now.

Here is the big table, with the old and new values:

LANGID XP/Server 2003 KLID Language/Script Input method description Vista/Windows 7
0411 00000411 Japanese Japanese keyboard No Change
0411 E0010411 Japanese Japanese IME {03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}
0412 E0010412 Korean Korean IME {A028AE76-01B1-46C2-99C4-ACD9858AE02F}{B5FE1F02-D5F2-4445-9C03-C568F23C99A1}
0412 00000412 Korean Korean keyboard No Change
0404 00000404 Traditional Chinese US Keyboard No Change
0804 00000804 Simplified Chinese US Keyboard No Change
0404 E0010404 Traditional Chinese Phonetic {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{761309DE-317A-11D4-9B5D-0080C882687E}
0804 E0010804 Simplified Chinese QuanPin {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{54FC610E-6ABD-4685-9DDD-A130BDF1B170}
0404 E0020404 Traditional Chinese ChangJie {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{4BDF9F03-C7D3-11D4-B2AB-0080C882687E}
0804 E0020804 Simplified Chinese ShuangPin {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{EF63706D-31C4-490E-9DBB-BD150ADC454B}
0404 E0030404 Traditional Chinese Quick {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{6024B45F-5C54-11D4-B921-0080C882687E}
0404 Did not exist?!? Traditional Chinese New Quick {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{0B883BA0-C1C7-11D4-87F9-0080C882687E}
0804 E0030804 Simplified Chinese ZhengMa {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{733B4D81-3BC3-4132-B91A-E9CDD5E2BFC9}
0404 E0040404 Traditional Chinese Big5 REMOVED
0404 E0050404 Traditional Chinese Array {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{D38EFF65-AA46-4FD5-91A7-67845FB02F5B}
0804 E0050804 Simplified Chinese NeiMa REMOVED
0404 E0060404 Traditional Chinese DaYi {E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{037B2C25-480C-4D7F-B027-D6CA6B69788A}
0404 E0070404 Traditional Chinese Unicode REMOVED
0404 e0080404 Traditional Chinese New Phonetic {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{B2F9C502-1742-11D4-9790-0080C882687E}
0404 e0090404 Traditional Chinese New ChangJie {531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{F3BA907A-6C7E-11D4-97FA-0080C882687E}
0804 E00E0804 Simplified Chinese PinYin {81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{F3BA9077-6C7E-11D4-97FA-0080C882687E}
0404 E01F0404 Traditional Chinese Alphanumeric (ABC) {81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FCA121D2-8C6D-41fb-B2DE-A2AD110D4820}

A few quick words about this table.

  • Yes, the three input methods based on having a code point (Big5, NeiMa, and Unicode) were removed;
  • And yes, the four keyboards stay in as they were in prior methods, unchanged;
  • The rest of the input methods are now associated with two different GUID values -- the first identifying the TIP engine and the second identifying the language profile under that TIP engine.

Note that this information is mostly useless to you but does explain why all of the IMEs that use TextTableService.DLL have the same GUID for the first one -- you can use this imnformation to sound particularly impressive at a client site, by the way. :-)

The two GUIDs are used the same way that the KLID values used to be used. Thus for Yong's case,

0404:E0020404

becomes

0404:{531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{4BDF9F03-C7D3-11D4-B2AB-0080C882687E}

Anyway, sorry I never printed this list before; I did mean to but never got around to it. And then I forgot. :-(

Hopefully this will be of user to people, going forward!

Comment on the blather
Leave a Comment
  • Please add 5 and 3 and type the answer here:
  • Post
Blog - Comment List
  • Consider your pun license revoked.

  • With this Blog, it has been revoked for over 2 years now. I now pun without a license....

  • Don't be silly.  Aardvarkian programmers never pun.  They 'cant'.

  • I followed the directions and included this on my unattend.xml:

    At the "<settings pass="oobeSystem">"

    "<InputLocale>"0409:00000409;0409:00020409;0c0a:0000040a;0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{F3BA9077-6C7E-11D4-97FA-0080C882687E};0404:{531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{761309DE-317A-11D4-9B5D-0080C882687E};0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"</InputLocale>"

    After sysprep, the only one I get is English-US. When I try with all the XP codes (0409:00000409;0409:00020409;0c0a:0000040a;0804:00000804;0804:e00e0804;0404:00000404;0404:e0010404;0411:00000411;0411:e0010411) I get only en-US, US-Int, es-ES, zh-CH (US Keyboard), zh-TW (US Keyboard) and jp-JP (US Keyboard).

    Am I missing something here?

    Thank you,

    Carlos

  • Pingback from  Add chinese input method for domain users | Eric Cheung Blog

  • This worked perfectly for my project. Thank you!

Page 1 of 1 (6 items)