不同语言之间的密钥转换

时间:2015-12-27 14:46:03

标签: c# .net vb.net

如何在不同语言之间获取键盘键?例如。 quwerty键盘上的(A)键等于另一个键盘上的(某些字母)。我怎样才能得到那把钥匙。

1 个答案:

答案 0 :(得分:1)

你的问题并不完全清楚。当你说"另一个键盘"你的意思是与QWERTY键盘不同的硬件吗?如果不同的硬件上有一个带有特定标签的键(' A'),则该键位于与QWERTY键盘上具有相同标签(' A')的键不同的位置(在第三行的最左边)。在这种情况下,我会将您的问题视为"哪个键位于不同键盘上第三行最左侧的哪一个?"

如果这是问题,则可以通过查询"键盘布局"的窗口(GetKeyboardLayout或.NET等效项,如果有的话)来确定答案。您返回输入区域设置ID。可以使用此table将输入区域设置ID转换为区域设置。

使用区域设置,您可以查找键盘布局here的图示。从下拉列表中选择一个区域设置。

编辑12/29/15

要以编程方式执行此操作:一种方法是对您感兴趣的键盘布局的图形图进行编码。键盘生成"扫描代码"。因此,在美国键盘布局上,扫描码31对应于A键。通过这种方式,您可以为美国布局的所有可能扫描代码构建一个表。然后对法语加拿大语,然后是法语瑞士语等进行相同的操作。然后,您可以在美国键盘布局上翻译A,将代码31扫描到其他键盘布局上映射到的任何内容。

这是基于以下假设:扫描码在键盘上保持不变,只是键上的标签发生变化。我确信这个假设有限。例如,如果你谷歌"中文键盘"看一下图像,你会看到一些键盘比传统的美式键盘(有大约100个键)有更多的键。

但是,我建议的表格很可能已经在Windows中可用。在输入堆栈的某处,Windows必须将扫描代码转换为字符。我建议使用Google搜索有关Windows键盘布局和API的更多信息,这些信息涉及"输入区域设置"。