我被一位朋友问过这个问题,它引起了我的好奇心,我一直无法找到解决方案,所以我希望有人知道。
有没有办法以编程方式检测用户使用的键盘类型?我对键盘的理解是,在DVORAK键盘上发送到计算机的'A'信号与发送到计算机上用于QUERTY键盘中'A'的信号相同。但是,我已经阅读了switch to/from dvorak的方法,突出了注册表调整,但我希望有一个机器设置或其他一些我可以查询。
有什么想法吗?
答案 0 :(得分:3)
可能取决于操作系统。我确信某处有一个操作系统设置可以记录键盘的国籍。 (德沃夏克被认为是国籍,因为法国键盘不同于美国键盘不同于......)
另外,只是旁注:'A'是一个不好的例子,因为'A'恰好是dvorak和qwerty中的相同键... B - )
答案 1 :(得分:3)
您可以通过DirectInput或任何当前的DirectX等效项来实现。我在Dvorak键盘上键入,我购买的游戏中约有50%检测到我的键盘并重新配置默认键映射以支持它(例如,使用aoe而不是wasd)
是的,正如Brian所说,'A'在两个键盘上都是一样的。
答案 2 :(得分:3)
您可以通过调用GetKeyboardLayoutName()Win32 API方法来完成此操作。 Dvorak键盘有特定的名称。例如,美国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);
}
}
答案 3 :(得分:1)
为什么重要?根据键盘的一些特殊实现,根本不是一个好主意。我们在模拟键盘输入的地方使用条形码扫描仪。你的程序会对这些设备做些什么? :)
PS:提到的注册表项将常规键盘的键排列为dvorak布局。