2013-07-19 150 views
4

我目前正在学习我的QWERTY键盘上的DVORAK布局,这意味着当我想要使用键盘快捷键,如Ctrl + C,在DVORAK中最终成为Ctrl + J时,当我不得不用两只手敲击各种命令时,便利性会丢失。 Windows似乎没有办法更改快捷方式,并且在切换回QWERTY时,autohotkey脚本不起作用,但它们会毁掉QWERTY的快捷功能,直到退出脚本。Vb.net获取键盘布局

所以我想要做的是让我自己的程序,将检测您的布局和发送正确的键,但首先我需要检测用户正在使用哪个键盘布局,我似乎无法弄清楚如何。

有没有一种方法可以轻松确定某人正在使用哪种键盘布局?

+2

你见过这个API函数的http:/ /msdn.microsoft.com/en-us/library/windows/desktop/ms646296(v=vs.85).aspx?下面是在VB.NET中使用它的一个例子:http://www.pinvoke.net/default.aspx/user32.getkeyboardlayout虽然我不确定这是否适用于检测DVORAK与QWERTY。 –

+0

这看起来有点过头了,我不太确定参数应该是什么,或者如何处理从VB函数返回的字符串。如果你知道,你能解释它是如何工作的吗? 编辑:我可以得到我的输入语言使用:InputLanguage.CurrentInputLanguage() 但是,这并没有提示键盘布局是什么。 – Postman

+0

我真的不知道。当您从DVORAK切换到QWERTY时,GetKeyboardLayout功能的返回值是否会改变?如果是这样,高字,低字或两者有什么变化? –

回答

2

我偶然发现幸运的是正确答案,

InputLanguage.CurrentInputLanguage.LayoutName 

返回一个字符串。

如果您的格式是普通的旧QWERTY英文,则返回“US”

如果它是德沃夏克(美国,美国),则返回“美国 - 德沃夏克”