Languages, Locales, and Keyboard Layouts
A
language is a natural language, such as English, French, and Japanese. A
sublanguange is a variant of a natural language that is spoken in a specific geographical
region, such as the English sublanguages spoken in Great Britain and the United
States. Win32-based applications use values, called
locales, to uniquely identify languages and sublanguages. Applications typically use
locales to set the language in which input and output is processed. Setting the
locale for the keyboard, for example, affects the character values generated
by the keyboard. Setting the locale for the display or printer affects the
glyphs displayed or printed. Applications set the locale for a keyboard by loading
and using keyboard layouts. They set the locale for a display or printer by
selecting a font that supports the given locale.
A keyboard layout not only specifies the physical position of the keys on the
keyboard but also determines the character values generated by pressing those
keys. Each layout has an associated locale which identifies the current input
language and determines which character values are generated by which keys and
key combinations.
Every keyboard layout has a corresponding handle that identifies the layout
and language. The low word of the handle is a language identifier. The high word
is a device handle, specifying the physical layout, or is zero, indicating a
default physical layout. The user can associate any input language with a given
physical layout. For example, an English-speaking user who very occasionally
works in French can set the input language of the keyboard to French without
changing the physical layout of the keyboard. This means the user can enter text in
French using the familiar English layout.
Applications are generally not expected to manipulate input languages
directly. Instead, the user sets up language and layout combinations, then switches
among them. When the user clicks into text marked with a different language, the
application calls the
ActivateKeyboardLayout function to activate the user's default layout for that language. If the user
edits text in a language which is not in the active list, the application can
call the
LoadKeyboardLayout function with the language to get a layout based on that language.
The
ActivateKeyboardLayout function sets the input language for the current task. The
hkl parameter can be either the handle of the keyboard layout or a zero-extended
language identifier. Keyboard layout handles can be obtained from the
LoadKeyboardLayout or
GetKeyboardLayoutList function. The HKL_NEXT and HKL_PREV values can also be used to select the
next or previous keyboard. For some operating systems, the KLF_UNLOADPREVIOUS
value has no meaning and is ignored.
The
GetKeyboardLayoutName function retrieves the name of the active keyboard layout for the calling
thread. If an application creates the active layout using the
LoadKeyboardLayout function,
GetKeyboardLayoutName retrieves the same string used to create the layout. Otherwise, the string is
the primary language identifier corresponding to the locale of the active
layout. This means the function may not necessarily differentiate among different
layouts with the same primary language, so cannot return specific information
about the input language. The
GetKeyboardLayout function, however, can be used to determine the input language.
The
LoadKeyboardLayout function loads a keyboard layout and makes the layout available to the user.
Applications can make the layout immediately active for the current thread by
using the KLF_ACTIVATE value. An application can use the KLF_REORDER value to
reorder the layouts without also specifying the KLF_ACTIVATE value. Applications
should always use the KLF_SUBSTITUTE_OK value when loading keyboard layouts to
ensure that the user's preference, if any, is selected. For some operating
systems, the KLF_UNLOADPREVIOUS value is ignored.
For multilingual support, the
LoadKeyboardLayout function provides the KLF_REPLACELANG and KLF_NOTELLSHELL flags. The
KLF_REPLACELANG flag directs the function to replace an existing keyboard layout
without changing the language. Attempting to replace an existing layout using the
same language identifier but without specifying KLF_REPLACELANG is an error. The
KLF_NOTELLSHELL flag prevents the function from notifying the shell when a
keyboard layout is added or replaced. This is useful for applications that add
multiple layouts in a consecutive series of calls. This flag should be used in all
but the last call.
The
UnloadKeyboardLayout function is restricted in that it cannot unload the system default input
language. This ensures that the user always has one layout available for enter text
using the same character set as used by the shell and file system.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database