【问题标题】:Change input locale (keyboard -- left shift+ alt + 1) key sequence PROGRAMMATICALLY以编程方式更改输入区域设置(键盘 -- 左移 + alt + 1)键序列
【发布时间】:2010-07-08 17:13:57
【问题描述】:

在 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);

如果您能提供帮助,请告诉我。谢谢!

亚伦

【问题讨论】:

    标签: c++ layout input keyboard locale


    【解决方案1】:

    默认情况下,所有程序都使用 C 本地(因为我想我们都使用 C 方言进行编程)

    您可以为流注入适当的本地。
    请记住,您必须在打开/使用流之前对其进行灌输。在打开/使用流后对其进行灌输的尝试将被静默忽略。

    这意味着对于 std::cin 和 std::cout 你应该在 main() 启动时立即执行它以避免它们被使用的可能性。

    在创建语言环境对象时,如果您指定空字符串,它将从环境中获取本地名称(即环境变量之一)。

    见:
    http://www.cplusplus.com/reference/iostream/ios_base/imbue/

    【讨论】:

    • 也许我不清楚。我说的是更改全局用户设置,例如当前键盘布局,就好像它们在控制面板中进行了更改一样。不过,感谢您的信息!
    猜你喜欢
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多