2013-07-19 152 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」

如果它是德沃夏克(美國,美國),則返回「美國 - 德沃夏克」