GetKeyboardLayout function (winuser.h)

Retrieves the active input locale identifier (formerly called the keyboard layout).

Syntax

HKL GetKeyboardLayout(
  [in] DWORD idThread
);

Parameters

[in] idThread

Type: DWORD

The identifier of the thread to query, or 0 for the current thread.

Return value

Type: HKL

The return value is the input locale identifier for the thread. The low word contains a Language Identifier for the input language and the high word contains a device handle to the physical layout of the keyboard.

Remarks

The input locale identifier is a broader concept than a keyboard layout, since it can also encompass a speech-to-text converter, an Input Method Editor (IME), or any other form of input.

Since the keyboard layout can be dynamically changed, applications that cache information about the current keyboard layout should process the WM_INPUTLANGCHANGE message to be informed of changes in the input language.

To get the KLID (keyboard layout ID) of the currently active HKL, call the GetKeyboardLayoutName.

Beginning in Windows 8: The preferred method to retrieve the language associated with the current keyboard layout or input method is a call to Windows.Globalization.Language.CurrentInputMethodLanguageTag. If your app passes language tags from CurrentInputMethodLanguageTag to any National Language Support functions, it must first convert the tags by calling ResolveLocaleName.

Requirements

Requirement Value
Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header winuser.h (include Windows.h)
Library User32.lib
DLL User32.dll

See also

ActivateKeyboardLayout

Conceptual

CreateThread

Keyboard Input

LoadKeyboardLayout

Other Resources

Reference

WM_INPUTLANGCHANGE