2009-05-15 32 views
5

Me hizo esta pregunta un amigo, y me despertó curiosidad, y todavía no he podido encontrar una solución, así que espero que alguien lo sepa.Detección del tipo de teclado (Qwerty o Dvorak)

¿Hay alguna forma de detectar programáticamente qué tipo de teclado está utilizando un usuario? Mi comprensión del teclado es que la señal enviada a la computadora para 'A' en un teclado DVORAK es la misma que la señal enviada a la computadora para una 'A' en un teclado QUERTY. Sin embargo, he leído sobre formas de switch to/from dvorak, que resaltan los ajustes del registro, pero espero que haya una configuración de máquina o alguna otra cosa que pueda consultar.

¿Alguna idea?

+0

Por curiosidad, ¿hay una razón por qué te gustaría saber? No puedo pensar en otra cosa que no sea una estadística aleatoria. –

+1

@Nathan: No soy el autor de la pregunta, pero para un juego puedes asignar WASD a las teclas de movimiento. Funciona muy bien en QWERTY, no tan bueno en Dvorak. – Powerlord

+1

Estoy buscando escribir un programa para una tableta y mostrar un teclado virtual para una entrada rápida para que las personas no tengan que desplegar la caja. Estoy tratando de hacer coincidir el teclado con la PC, y mi amigo notó que debería considerar DVORAK vs QWERTY. Gracias a todos por las respuestas. –

Respuesta

3

Puede hacerlo llamando al método GetKeyboardLayoutName() Win32 API. Los teclados Dvorak tienen nombres específicos. Por ejemplo, la disposición de EE.UU. Dvorak tiene un nombre de fragmento 00010409.

Código:

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); 

    } 
    } 
+0

Gracias por la respuesta. Creo que podré manejar teclados foráneos si alguna vez empiezo a pensar en expandirme hacia la internacionalización de mi aplicación. –

1

¿Por qué sería importante? Dependiendo de alguna implementación especial de un teclado no es una buena idea en absoluto. Usamos escáneres de códigos de barras en todo el lugar que emulan las entradas de teclado. ¿Qué haría tu programa con estos dispositivos? :)

PD: la entrada de registro mencionada organiza las teclas de un teclado normal en el diseño de dvorak.

+2

¿Cómo llegaste a la suposición de que quería depender del diseño de las teclas? Suena más como si quisiera soportar diseños de teclas alternativos. Vea la respuesta de Aric por muchas buenas razones por las cuales alguien haría esto. – dss539

3

que probablemente dependa del sistema operativo. Estoy seguro de que hay un sistema operativo en algún lugar que registra la nacionalidad del teclado. (Dvorak se considera una nacionalidad porque los teclados franceses son diferentes de los teclados de EE. UU. Son diferentes de ...)

Además, solo una nota al margen: 'A' fue un mal ejemplo, ya que 'A' es la misma clave en dvorak y qwerty ... B-)

+0

¿De modo que no hay versiones dependientes del idioma de un teclado dvorak? Solo curiosidad ... – VVS

+0

No es que yo sepa. Pregunta interesante sin embargo. –

3

Es posible que pueda hacerlo a través de DirectInput, o cualquiera que sea el equivalente de DirectX actual. Escribo en un teclado Dvorak, y aproximadamente el 50% de los juegos que compro detectan mi teclado y reconfiguran los keymappings predeterminados para admitirlo (usando, por ejemplo, en lugar de wasd, por ejemplo)

Y sí, como mencionó Brian, ' A 'es lo mismo en ambos teclados.

+1

Otro comentario: los teclados en Windows son distintos proceso por proceso. Puede tener una ventana configurada para QWERTY y otra para un teclado árabe; de ​​hecho, en trece años de escribir en un Dvorak, todavía tengo que encontrar la manera de cambiar globalmente el diseño del teclado. –

+0

Aric: ¡SÍ! ¡un hecho que me resulta increíblemente molesto! –

+0

Encuentro ese hecho particularmente útil. Hago la mayor parte de mi trabajo intensivo de teclado bajo (navegación en la red, juegos) en QWERTY mientras chateo en Dvorak. – CookieOfFortune

Cuestiones relacionadas