我的一个朋友问了我这个问题,它激起了我的好奇心,但我还无法找到解决方案,所以我希望有人会知道。
有没有办法通过编程检测用户正在使用哪种类型的键盘?我对键盘的理解是,在DVORAK键盘上发送给计算机的A信号与在QUERTY键盘上发送给计算机的A信号是相同的。然而,我读过一些关于switch to/from dvorak的方法,其中突出了注册表调整,但我希望有一个机器设置或其他一些我可以查询的东西。
有什么想法吗?
发布于 2009-05-15 16:45:07
您可以通过调用GetKeyboardLayoutName() Win32 API方法来完成此操作。Dvorak键盘有特定的名称。例如,U.S. Dvorak布局的名称为00010409。
代码片段:
public class Program
{
const int KL_NAMELENGTH = 9;
[DllImport("user32.dll")]
private static extern long GetKeyboardLayoutName(
System.Text.StringBuilder pwszKLID);
static void Main(string[] args)
{
StringBuilder name = new StringBuilder(KL_NAMELENGTH);
GetKeyboardLayoutName(name);
Console.WriteLine(name);
}
}发布于 2009-05-15 16:20:11
这可能取决于操作系统。我肯定在某个地方有一个操作系统设置,用来记录键盘的国籍。(德沃夏克被认为是一个国籍,因为法国键盘不同于美国键盘不同于……)
另外,顺便说一句:'A‘是一个不好的例子,因为'A’恰好在dvorak和qwerty中是相同的关键字……B-)
发布于 2009-05-15 16:27:38
您可以通过DirectInput或任何当前的DirectX等效项来完成此操作。我在Dvorak键盘上打字,我购买的游戏中大约有50%会检测到我的键盘,并重新配置默认的键映射以支持它(例如,使用aoe而不是wasd )
是的,正如Brian提到的,“A”在两个键盘上是相同的。
https://stackoverflow.com/questions/869609
复制相似问题