Изменить язык ввода (клавиатура - сдвиг влево + alt + 1) последовательность клавиш ПРОГРАММНО - PullRequest
1 голос
/ 08 июля 2010

В XP, если вы переходите к

control panel -> regional and language Options -> Languages Tab -> Details -> 

Если у вас более одной используемой клавиатуры, нажмите Key Settings.Это те настройки, которые я бы хотел изменить.Я хотел бы настроить его так, чтобы клавиатура DVORAK была Left Alt + Shift + 1.Я могу использовать C ++, C # или что угодно.Я уже знаю, как загрузить клавиатуру:

HKL dvorakhkl = LoadKeyboardLayout(TEXT("00010409"), 0);

, которая загружает клавиатуру дворака.Это устанавливает его по умолчанию:

SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, (PVOID)&dvorakhkl, 0);

Также я могу изменить верхнюю часть указанного диалогового окна

«Переключение между языками ввода»

UINT val = 1;//"1" = ALT+SHIFT, "2" = CTRL+SHIFT, and "3" = none.
System.ParametersInfo(SPI_SETLANGTOGGLE, 0, 0, val);

Дайте мне знать, если вы можете помочь.Спасибо!

Аарон

1 Ответ

0 голосов
/ 08 июля 2010

По умолчанию все программы используют локальный язык C (я полагаю, что мы все программируем на диалектах C)

Вы можете наполнить потоки соответствующим локальным.
Просто помните, что вы должны наполнить поток перед открытием/используй это.Попытка наполнить поток после того, как он был открыт / использован, будет игнорироваться.

Это означает, что для std :: cin и std :: cout вы, вероятно, должны сделать это сразу при запуске в main (), чтобыизбегайте возможности их использования.

При создании объекта локали, если вы укажете пустой стринг, он выберет имя локального из среды (т. е. одну из переменных среды).

См .:
http://www.cplusplus.com/reference/iostream/ios_base/imbue/

...