2009-05-15 13 views
5

Mi è stata posta questa domanda da un amico, ed ha suscitato la mia curiosità e non sono ancora riuscito a trovare una soluzione, quindi spero che qualcuno lo saprà.Rilevazione tipo tastiera (Qwerty o Dvorak)

C'è un modo per rilevare in modo programmatico quale tipo di tastiera sta usando un utente? La mia comprensione della tastiera è che il segnale inviato al computer per "A" su una tastiera DVORAK è lo stesso del segnale inviato al computer per una "A" in una tastiera QUERTY. Tuttavia, ho letto su modi per switch to/from dvorak, che evidenziare tweaking del Registro di sistema, ma spero che ci sia un settaggio della macchina o qualche altra cosa che posso interrogare.

Qualche idea?

+0

Per curiosità, c'è un motivo per cui ci si vuole sapere? Non riesco a pensare a un altro che come una statistica casuale. –

+1

@Nathan: Non sono l'interrogante, ma per un gioco puoi mappare WASD alle chiavi di movimento. Funziona alla grande in QWERTY, non così eccezionale in Dvorak. – Powerlord

+1

Sto cercando di scrivere un programma per un tablet PC e di mostrare una tastiera virtuale per l'input rapido in modo che le persone non debbano aprire la scatola. Sto cercando di abbinare la tastiera al PC, e il mio amico ha notato che potrei dover considerare DVORAK vs QWERTY. Grazie a tutti per le risposte. –

risposta

3

È possibile effettuare questa operazione chiamando il metodo API Win32 GetKeyboardLayoutName(). Le tastiere Dvorak hanno nomi specifici. Ad esempio, il layout di Stati Uniti Dvorak ha un nome di 00010409.

Codice frammento:

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

Grazie per la risposta. Penso che sarò in grado di gestire le tastiere straniere se mai comincerò a pensare di espandere l'internazionalizzazione della mia app. –

1

Perché importa? A seconda di alcune implementazioni speciali di una tastiera non è affatto una buona idea. Utilizziamo gli scanner di codici a barre ovunque che emulano gli input da tastiera. Cosa farà il tuo programma con questi dispositivi? :)

PS: la voce di registro citata dispone le chiavi di una tastiera normale nel layout di dvorak.

+2

Come hai capito che voleva dipendere dal layout dei tasti? Sembra più che voglia supportare i layout di tasti alternativi. Vedi la risposta di Aric per molti buoni motivi per cui qualcuno lo farebbe. – dss539

3

che probabilmente dipende dal sistema operativo. Sono sicuro che c'è un settaggio di operatingsystem da qualche parte che registra la nazionalità della tastiera. (Dvorak è considerato una nazionalità perché le tastiere francesi sono diverse dalle tastiere americane sono diverse da ...)

Inoltre, solo una nota a margine: "A" era un cattivo esempio, poiché "A" sembra essere la stessa chiave in dvorak e qwerty ... B-)

+0

Quindi non ci sono versioni dipendenti dalla lingua di una tastiera dvorak? Solo curioso .. – VVS

+0

Non che io sappia. Domanda interessante però. –

3

Potrebbe essere possibile farlo tramite DirectInput o qualunque sia l'equivalente di DirectX corrente. Scrivo su una tastiera Dvorak e circa il 50% dei giochi che ho acquistato rilevano la mia tastiera e riconfigura i keymappings predefiniti per supportarla (usando, ad esempio invece di wasd, per esempio)

E sì, come Brian ha menzionato, ' A 'è lo stesso su entrambe le tastiere.

+1

Un altro commento: le tastiere su Windows sono distinte su base processo per processo. È possibile avere una finestra impostata su QWERTY e un'altra impostata su una tastiera araba - in effetti, in tredici anni di utilizzo di un Dvorak, non ho ancora trovato il modo di modificare globalmente il layout della tastiera. –

+0

Aric: SÌ! un fatto che trovo incredibilmente fastidioso! –

+0

Trovo questo fatto particolarmente utile. Faccio la maggior parte del mio lavoro intensivo a bassa tastiera (navigazione in rete, giochi) su QWERTY mentre chatto su Dvorak. – CookieOfFortune