MSKLC: Как связать страну с настраиваемой раскладкой клавиатуры
Я сделал нестандартную раскладку клавиатуры с помощью MSKLC. Мне показалось, что я внимательно следовал инструкциям и выбрал подходящие значения дляLOCALENAME
а также LOCALID
параметры.
Однако во всплывающем окне переключения клавиатуры, которое отображается при нажатии Win+Space или на панели задач, страна, связанная с моим настраиваемым макетом, не отображается.
Как создать макет, чтобы Windows знала, с какой страной он должен быть связан?
2 ответа
Из некоторых экспериментов, которые я провел с моей настраиваемой клавиатурой, вам нужно изменить реестр.
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts\0000040c
изменение
"Layout File"="KBDFR.dll"
к
"Layout File"="YourDll.dll"
а затем установите
"Layout Display Name"="@%SystemRoot%\system32\YourDll.dll,-1000"
Теперь, если вы перезагрузитесь, вы должны увидеть и тип клавиатуры, и правильную первую строку. В качестве дополнительного бонуса удаленный рабочий стол не будет по умолчанию использовать английскую клавиатуру, а будет просто использовать "базовую" французскую клавиатуру.
Эти короткие сокращенные названия раскладок клавиатуры, кажется, встроены в исходный код языковой панели Windows. Они есть только у макетов, поставляемых с Windows.
Сокращенные названия языков тоже кажутся перепиленными. Если я запрашиваю LOCALE_SISO639LANGNAME2 из
LOCALENAME
а затем в верхнем регистре - это все равно приводит к поздней строке.
RUS
например, не
РУС
для русского.
Некоторые азиатские IME отображаются в виде изображений на этой панели.
PS: в Windows XP они просто использовали LOCALE_SABBREVLANGNAME — см.
InatCreateIconBySize
в
NT/windows/advcore/ctf/uim/internat.cpp
в просочившемся исходном коде Windows. :)