c++ - 以编程方式更改输入区域设置(键盘 - 左 shift+ alt + 1)键序列

标签 c++ layout input keyboard locale

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

加载 dvorak 键盘。这将其设置为默认值:

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

此外,我可以更改所述对话框的顶部

"Switch between Input Languages"

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

如果你能帮上忙,请告诉我。谢谢!

亚伦

最佳答案

默认所有程序都使用 C local(因为我想我们都使用 C 方言编程)

您可以为流注入(inject)适当的本地信息。
请记住,您必须在打开/使用流之前灌输它。在打开/使用流后尝试注入(inject)流将被静默忽略。

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

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

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

关于c++ - 以编程方式更改输入区域设置(键盘 - 左 shift+ alt + 1)键序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206229/

相关文章:

c++ - SDL_GL_CreateContext() 不工作

c++ - glVertex3f 和 glVertex2fx 显示不同的结果

android - 如何让一个 TextView 显示在另一个 TextView 下方?安卓

performance - StatelessWidget 与返回 Widgets 的函数在性能方面的对比

python - 如何在从 cmd 提示符打开时将变量输入到 python 脚本中?

c - 如何在不阻塞的情况下捕获 unix 控制台应用程序中的单个击键?

c++ - 随机打乱链表

c++ - 使用 find() 将一行拆分为标记

Android:Vertical LinearLayout - 两个 ImageView ,我希望底部的缩放为顶部的宽度

javascript - Angular - 在一页上获取输入并使用同一 Controller 在第二页上显示值