键盘类型(Qwerty或Dvorak)检测

Dre*_*hie 5 c#

我被朋友问了这个问题,它激起了我的好奇心,但我还是找不到解决办法,所以我希望有人知道.

有没有办法以编程方式检测用户使用的键盘类型?我对键盘的理解是,在DVORAK键盘上发送到计算机的'A'信号与发送到计算机上用于QUERTY键盘中'A'的信号相同.但是,我已经阅读了关于切换到/从dvorak的方法,突出显示注册表调整,但我希望有一个机器设置或其他一些我可以查询.

有任何想法吗?

Mag*_*son 4

您可以通过调用 GetKeyboardLayoutName() Win32 API 方法来完成此操作。德沃夏克键盘有特定的名称。例如,US 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);

    }
  }
Run Code Online (Sandbox Code Playgroud)