Domanda

C'è un modo per programmazione scoprire che tipo di tastiera di un computer ha (vale a dire dove si trovano le chiavi, e quali chiavi aggiuntive sono presenti in cui i paesi)?

Un piccolo errore è accettabile, se la tastiera è molto non-standard, ma in generale, il punto è di costruire una tastiera sullo schermo come un'applicazione in grado di disegnare dinamicamente il layout della tastiera sullo schermo, con elevata precisione.

È stato utile?

Soluzione

Non v'è alcun meccanismo attraverso il quale una tastiera può dire di Windows quanto il suo aspetto di layout fisico come. Facile vedere con la versione Windows di una tastiera su schermo, osk.exe. Sembra di essere in grado di indovinare il fattore di forma della macchina (computer portatile vs desktop), ma sul mio portatile che non corrisponde al layout della tastiera.

Usa il layout osk.exe come modello in modo che nessuno possa lamentarsi che il vostro non corrisponde bene.

Altri suggerimenti

quando collegato a un computer, invia le tastiere "codici di scansione" per il sistema operativo. Su Windows, codici di scansione vengono poi convertiti in tasti virtuali (hardware mappatura indipendente dalla tastiera) poi a personaggi reali.

MapVirtualKeyEx() di l'API di Windows consente di tradurre tra i codici di scansione, tasti virtuali e personaggi. dovrebbe anche essere in grado di dirvi se una chiave è non-esistente.

GetKeyboardLayout() che vi suggerisce quale keybaord è attivo in qualsiasi punto nel tempo (layout di tastiera può essere diverso per diverse applicazioni in esecuzione), che dovrebbe permettere di costruire una mappa abbastanza precisa della tastiera.

in ogni caso, hanno uno sguardo alla keyboard input section of the MSDN

Vorrei aggiungere che tutte le tastiere hanno quasi lo stesso layout. anche se non c'è modo di sapere dove si trova fisicamente un tasto, si può intuire dal codice di scansione e le conoscenze di base delle proprie tastiere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top