Раскладки клавиатуры
Раскладки клавиатуры идентифицируются двумя параметрами: языком и методом ввода. Для данного языка обычно существует метод ввода по умолчанию. Например, для русского языка есть основной метод ввода "ЙЦУКЕН...ЬБЮ.", машинописный "ЙЦУКЕН...ЬБЮЁ", мнемонический "ЯШЕРТЫ...М,./". Для других языков также может поддерживаться несколько методов ввода. Например, для английского языка поддерживается метод ввода "США по Двораку".
Для основного метода ввода нет специального идентификатора, а для дополнительных есть числовые идентификаторы. Понятное человеку название метода ввода не стандартизировано. В разных версиях Windows может быть разный набор поддерживаемых раскладок и отличающиеся названия методов ввода. Список поддерживаемых раскладок для всех языков записан в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts.
Т.к. понятное название пары "язык + метод ввода" не может служить надежным идентификатором, то используются числовые идентификаторы представленные в шестнадцетиричном виде.
XMMMLLLL
- L – идентификатор языка;
- M – идентификатор метода ввода;
- X – служебное поле.
Например, идентификатор английского языка США 409, для русского – 419. Идентификатор основного метода ввода совпадает с идентификатором языка. Таким образом, "04090409" – идентификатор основной раскладки для английского США, а "04190419" – для основной русской раскладки.
Дополнительные методы ввода имеют числовые идентификаторы. Например, "2" – для метода "США по Двораку", "33" – для "Русская (мнемоническая)". Соответствующие полные идентификаторы будут "F0020409" и "F0330419" соответственно.
Для наглядности в модуле FC используется комбинированные идентификаторы, включающие точный шестнадцетиричный идентификатор и понятное для человека название: "XMMMLLLL, язык (метод ввода)". При передаче в функции вторая часть (после запятой) необязательна. Например, "04190419, Russian" или "F0330419, Russian (Russian - Mnemonic)". Для метода ввода, совпадающего по имени с языком, его имя в круглых скобках не добавляется. Например, "Russian" вместо "Russian (Russian)".
Функции ТЕК_РАСКЛ_КЛАВ и СЧИТАТЬ_СПИСОК_РАСКЛ_КЛАВ всегда возвращают составной идентификатор с отделенным запятой понятным человеку названием. Функции УСТ_РАСКЛ_КЛАВ и ИЗМ_ТЕКСТ_РАСКЛ_КЛАВ, принимающие раскладку на входе, поддерживают как составной идентификатор, так и только шестнадцетиричный. Например, вызовы УСТ_РАСКЛ_КЛАВ("04190419, Russian") и УСТ_РАСКЛ_КЛАВ("04190419") эквивалентны.
Переносимыми и независимыми от версии Windows являются только идентификаторы в краткой форме "XMMMLLLL". Если надо указать раскладку в виде строковой константы в коде, используйте краткую форму.