Détection de type de clavier (Qwerty ou Dvorak)

Un ami m’a posé cette question et cela a piqué ma curiosité. Je n’ai pas encore trouvé de solution, alors j’espère que quelqu’un saura.

Est-il possible de détecter par programme le type de clavier utilisé par un utilisateur? D’après ce que je comprends du clavier, le signal envoyé à l’ordinateur pour “A” sur un clavier DVORAK est le même que le signal envoyé à l’ordinateur pour un “A” dans un clavier QUERTY. Cependant, j’ai lu des articles sur les moyens de basculer vers / depuis dvorak , ce qui met en évidence les modifications du registre, mais j’espère qu’il existe un paramètre d’ordinateur ou autre chose sur lequel je peux effectuer une requête.

Des idées?

Vous pouvez le faire en appelant la méthode API Win32 GetKeyboardLayoutName (). Les claviers Dvorak ont ​​des noms spécifiques. Par exemple, la mise en page US Dvorak a pour nom 00010409.

Extrait de code:

public class Program { const int KL_NAMELENGTH = 9; [DllImport("user32.dll")] private static extern long GetKeyboardLayoutName( System.Text.SsortingngBuilder pwszKLID); static void Main(ssortingng[] args) { SsortingngBuilder name = new SsortingngBuilder(KL_NAMELENGTH); GetKeyboardLayoutName(name); Console.WriteLine(name); } } 

cela dépend probablement du système d’exploitation. Je suis sûr qu’il existe un paramètre de système de fonctionnement quelque part qui enregistre la nationalité du clavier. (Dvorak est considéré comme une nationalité parce que les claviers français sont différents des claviers américains.)

En outre, juste une note de côté: “A” était un mauvais exemple, car “A” se trouve être la même clé dans dvorak et qwerty … B-)

Vous pourrez peut-être le faire via DirectInput ou quel que soit l’équivalent actuel de DirectX. Je tape sur un clavier Dvorak et environ 50% des jeux achetés détectent mon clavier et reconfigurent les correspondances de touches par défaut pour le prendre en charge (en utilisant, par exemple, aoe au lieu de wasd).

Et oui, comme Brian l’a mentionné, «A» est identique sur les deux claviers.

Pourquoi est-ce important? Dépendre d’une implémentation spéciale d’un clavier n’est pas une bonne idée. Nous utilisons des scanners de codes à barres partout pour émuler les entrées au clavier. Que ferait votre programme avec ces appareils? 🙂

PS: l’entrée de registre mentionnée organise les touches d’un clavier standard dans la structure dvorak.