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. :)

Другие вопросы по тегам