(or go back to index)
'If it is easy, then there are samples. And if it's very easy, everyone is writing them.' (2012/08/28)
…t a topic on that addressing versions of Windows like Win 7 and Server 2008? Thanks Hmmm. Well, to start, there is the big KLID/GUID list in From KLID to GUID (aka KLIDoral stimulation, it feels GUID). There are listed the IMEs and the languages they…
From KLID to GUID (aka KLIDoral stimulation, it feels GUID) (2012/08/27)
…20404". 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 sev…
Cutting the cord, revisited -- and documenting how to get the job done! (2012/08/24)
…out, partially ameliorated by Office 2007 which adds three of them back: Microsoft Pinyin IME 2007 for Simplified Chinese (KLID E0200804) Microsoft Office IME 2007 for Korean (KLID E0200412) Microsoft Office IME 2007 for Japanese (KLID E0200411) Perh…
It's 2012! NT 3.1 just called, they want their [circa 1993] methodology back! (2012/08/03)
…purposes that they may as well all be treated that way. For the keyboards under that registry key, every subkey contains a KLID; if converted to hexadecimal number, then LOWORD(<KLID>) is usually but not always a LANGID. You can pass those LANGID val…
That 'keyboard culture list' you may have heard so much about (2012/05/17)
…ed up with someone else's implementation. You see, that registry key's subkeys are called Keyboard Layout IDentifiers (aka KLIDs), some of which have Layout Id values under them, and at runtime each installed (loaded) keyboard layout has an HKL value…
If it's incorrect and out of sync, someone should step up and try to fix it... (2012/02/22)
…lti-language" style used by the common dialogd, which means that the kbdbr.dll "Portuguese (Brazilian ABNT)" keyboard with KLID 00000416: KEYNAME 01 Esc 0e Backspace 0f Tab 1c Enter 1d Ctrl 2a Shift 36 "Right Shift" 37 "Num *" 38 Alt 39 Space 3a "Cap…
The evolving Story of Locale Support, part 11: What language is that keyboard for? (2011/11/23)
…le will have to keep the list around themselves if they get a 0 for the LANGID and there is no "Layout Locale Name" there: KLIDLayout Text 00010c00Myanmar 00020c00New Tai Lue 00030c00Tai Le 00040c00Ogham 00050c00Tifinagh (Basic) 00060c00Tifinagh (Ful…
The evolving Story of Locale Support, part 2 (raising the roof on keyboards) (2011/11/02)
…th some locale -- with some LCID. The LCID, or to be more precise, the LANGID portion of the LCID, is embedded in both the KLID value that defines the keyboard layout itself and the HKL that acts as a handle to an installed layout that's in use. So t…
Knowing the layout doesn't mean knowing how to lay it out.... (2011/03/24)
…enerally there are just a few basic general types of layouts, and to solve this problem one would keep a list matching the KLID of the keyboard with the layout type. And of course have a general choice to use when an uknwon keyboard comes along.... F…
Flirting with a strange keyboard, will you remember its language in the morning? (2010/08/09)
…oard layout DLL. Thus the names that are returned by GetKeyNameText are firmly connected to the layout choice based on the KLID (keyboard layout identifier) which does not in any way need to be tied to the user interface language or even the input la…
From KLID to GUID (aka KLIDoral stimulation, it feels GUID) (2009/09/15)
…20404". 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 sev…
LoadKeyboardLayout is a 00bada55 puppy dog tail wagger of a function (2008/12/10)
…l GetLastError. However, when I supply a random string text (example: “sdfdfsfsfsdf”) for the input locale identifier, pwszKLID, the return value is a non-NULL (0x04090409, the en-US keyboard). The GetLastError() call returns 0, that everything is ok…
What do you get when you put a Hebrew on top of a Russian? (aka What lies beneath can bite you on the ass) (2008/10/01)
So it was actually a couple of days ago (in the blog titled What a tangled web we weave when a KLID from an HKL we must receive) that I painted a picture that would cause any normal, sane developer charged with working wit…
What a tangled web we weave when a KLID from an HKL we must receive (2008/09/29)
…roblem here is a misunderstanding I cover in one of my earliest blogs (Some keyboarding terms) -- the difference between a KLID and an HKL. Now the topic has come up a few times since then, like in Thursday morning wrestling: LCID vs. HKL, Why are th…
Yet another time that UTF-8 can't be the ACP (2008/08/15)
…o, anyway?. Basically, here are the steps: At keyboard load time, the code page associated with the LANGID of the layout's KLID (according to the locale's LOCALESIGNATURE) is stored; That code page is used in all later conversions to non-Unicode call…
When the LANGID in the LOWORD of the KLID doesn't match the LANGID you want keyboard under? (2008/05/23)
…loading a specific keyboard when the language it is to be under matches. Having the LANGID in the LOWORD of the keyboard's KLID not match the language the keyboard is under? LoadKeyboardLayout isn't able to help. :-( Though as I mentioned in Cutting …
Cutting the cord, revisited -- and documenting how to get the job done! (2007/12/01)
…out, partially ameliorated by Office 2007 which adds three of them back: Microsoft Pinyin IME 2007 for Simplified Chinese (KLID E0200804) Microsoft Office IME 2007 for Korean (KLID E0200412) Microsoft Office IME 2007 for Japanese (KLID E0200411) Perh…
The UK Extended keyboard -- over-extended? Or weirdly extended? (2007/11/29)
…n answer! Let's look at the United Kingdom Extended keyboard in its place in the registry: You may see it right now -- the KLID value for this keyboard? Its 00000452, and that attached LANGID is the one for cy-GB, aka Welsh (United Kingdom). Regular …
Getting the language (and more!) of an LCID-less keyboard (2007/08/23)
…way back in 2004 in Some Keyboarding Terms that the story begins; in that post I discussed the Keyboard Layout Identifier (KLID) and the fact that a KLID value with an "A" prefix meant an MSKLC-created layout. And I have talked about KLID values a fe…
Cutting the cord while someone else is shoring it up (2007/05/29)
… use the Text Services Framework (TSF) rather than the venerable Input Method Manager (IMM), there was no big set of "fake KLID" values added to the registry to make them easy to load via a call to LoadKeyboardLayout. Which is technically a breaking …
Getting the language of an LCID-less keyboard (2007/05/22)
…for the custom locale that the user chose.This will be true on any machine, whether the custom culture exists or not. (the KLID that will be used in this case is in the form ####0c00, the reasons for which will make another post at some future time s…
Flirting with a strange keyboard, will you remember its language in the morning? (2007/03/26)
…oard layout DLL. Thus the names that are returned by GetKeyNameText are firmly connected to the layout choice based on the KLID (keyboard layout identifier) which does not in any way need to be tied to the user interface language or even the input la…
What's the problem with MapVirtualKey[Ex], on CE and otherwise? (2007/03/25)
…t("user32.dll", CharSet=CharSet.Unicode, ExactSpelling=true)] internal static extern IntPtr LoadKeyboardLayoutW(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] internal static extern bool UnloadKeyboardLayout(IntPtr dwhkl)…
Will the real Unicode character message please stand up? (2007/03/25)
…a Unicode WNDPROC is always sent as UTF-16; WM_CHAR to an ANSI WNDPROC is always sent in the code page associated with the KLID, not the HKL, as discussed in this post. However, the text here around the wParam has some real problems too, though in de…
Double Secret ANSI, part 2 (the brokenest one yet, sorry 'bout that!) (2007/03/20)
… the kernel mode keyboarding code thunks to a function that uses TranslateCharsetInfo and the LANGID that is inside of the KLID (Keyboard Layout Identifier) of the keyboard. It gets the lsCsbDefault piece of the LOCALESIGNATURE and uses it for three …
Double Secret ANSI, part 1 (Somewhere between ANSI and Unicode) (2007/03/08)
…ortunity to express themselves -- using the default system code page of the LANGID that comes out of the keyboard layout's KLID value (not its HKL value!). Now most applications don't really give a fig about any of this, and pop either garbled text o…
The T's are crossed, but not all of the I's are dotted... (2007/03/06)
…e resulting string is then uppercased, though unfortunately the uppercasing is done without using the LCID attached to the KLID and the LCMAP_UPPERCASE | LCMAP_LINGUISTIC_CASING flags. This means that Turkic casing is not done. In the generic casing …
Understanding (and explaining) why English is everywhere (2006/10/14)
…00000423 = %Belarusian% ,866 ,5,,0423:00000423,0409:00000409,0419:00000419 ... and so on.... That HKL pair is actually the KLID, the Keyboard Layout Identifier that I discussed in the post Why are the HKL and KLID of the keyboard different?. You migh…
Fixing a bug in the documentation (2006/08/07)
… properly, like if you use the following code (which also gives the answer to the other question I asked -- about what the KLID value of an MSKLC-generated keyboard such as "A0000409" might lead to: System.Int32 i32; System.Int64 i64; i32 = -26836886…
32 bit vs. 64 bit HKLs? (2006/08/01)
… days later. Does anyone reading this know what is going on here? Or why I was thinking of it more as a bug? Or what other KLID values like the MSKLC-generated ones like "A0000409" might produce in the way of the HKLs on 64-bit in this case? This pos…
Getting the real (localized) name of the keyboard (2006/05/06)
…the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\ Each subkey represents a KLID (Keyboard Layout Identifer) for a specific keyboard layout. Under each of these keys you will see some of the following va…
Getting all you can out of a keyboard layout, Part #9b (2006/04/13)
…Unicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] private static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] private static extern bool UnloadKeyboardLayout(IntPtr hkl); […
Getting all you can out of a keyboard layout, Part #8 (2006/04/10)
…Unicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] private static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] private static extern bool UnloadKeyboardLayout(IntPtr hkl); […
Getting all you can out of a keyboard layout, Part #7 (2006/04/06)
…Unicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] private static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] private static extern bool UnloadKeyboardLayout(IntPtr hkl); […
Getting all you can out of a keyboard layout, Part #5 (2006/03/28)
…nicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] internal static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] internal static extern bool UnloadKeyboardLayout(IntPtr hkl); …
Getting all you can out of a keyboard layout, Part #4 (2006/03/27)
…nicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] internal static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] internal static extern bool UnloadKeyboardLayout(IntPtr hkl); …
Getting all you can out of a keyboard layout, Part #3 (2006/03/24)
…nicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] internal static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] internal static extern bool UnloadKeyboardLayout(IntPtr hkl); …
Getting all you can out of a keyboard layout, Part #2 (2006/03/24)
…nicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] internal static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] internal static extern bool UnloadKeyboardLayout(IntPtr hkl); …
Getting all you can out of a keyboard layout, Part #1 (2006/03/23)
…nicode, EntryPoint="LoadKeyboardLayoutW", ExactSpelling=true)] internal static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags); [DllImport("user32.dll", ExactSpelling=true)] internal static extern bool UnloadKeyboardLayout(IntPtr hkl); …
Limiting the languages of input (2005/04/25)
…on, you can check the current input language, either via a GetKeyboardLayout(NULL) call in Win32 even better (to avoid HKL/KLID differences), use a GetKeyboardLayoutName call, to keep people in Win32 from masking their language intent via an InputLan…
Why are the HKL and KLID of the keyboard different? (2005/04/17)
…umbers, see the similarities, and then start assuming they are the same. To review from my old keyboard terminiology post: KLID -- a keyboard layout identifier. Traditionally pronounced "Kay-El-Eye-Dee" because some people in the USA get very uptight…
Thursday morning wrestling: LCID vs. HKL (2004/12/16)
…on't have it and do need it! A little more information about HKLs -- they are not the same as keyboard layout identifiers (KLIDs). Though both contain a LANGID in the bottom WORD of the low DWORD, the top WORD of the low DWORD contains handle-specifi…
How do I get the @!#$% name of the keyboard? (2004/12/05)
…cale identifier (formerly called the keyboard layout). Only it doesn't. It returns an 8-character string that contains the KLID, which is not really much of a name unless you speak a language that has words like "00030409" in its vocubulary. The rest…
Some keyboarding terms (2004/11/27)
…that is already assigned on the system. Failure on either of these points will cause a layout to not be properly selected. KLID -- a keyboard layout identifier. Traditionally pronounced "Kay-El-Eye-Dee" because some people in the USA get very uptight…
Showing results 1—44.