Domanda

Ho un sistema dove ho più tastiere e davvero bisogno di sapere che tastiera il tasto corsa è venuta da.Per spiegare il set up:

  1. Ho un normale PC e tastiera USB
  2. Ho un monitor esterno VGA schermo con un po ' di hard-chiavi
  3. I tasti sono mappati come standard USB tastiera, l'invio di un numero limitato di codici (F1, F2, Ritorno, + e -)

Ho un hook di basso livello (in C#, ma in realtà chiamando su Win32 funzionalità), che è in grado di trattare l'ingresso, anche se la mia domanda non è a fuoco.

Il problema è che quando si utilizza la tastiera normale, alcuni mappate in chiave-codici raccolto mediante l'applicazione viene guidato su schermo esterno.Uno dei principali macchine da stampa inviati da schermo esterno e utilizzato per la conferma è VK_RETURN.A meno che non sono in grado di identificare il "dispositivo" e filtro su di esso, l'utente potrebbe essere l'esecuzione di azioni e di conferma sullo schermo di un loro nemmeno guardando.

Come faccio a sapere che tastiera è stato responsabile per la chiave-premere?

È stato utile?

Soluzione

Sì, io trovo corretto, il mio male, di imparare qualcosa di nuovo ogni giorno.

Ecco il mio tentativo di fare per essa :) :

  • Registrare i dispositivi che si desidera utilizzare per il raw input (la tastiera) con ::RegisterRawInputDevices().

  • È possibile ottenere questi dispositivi di GetRawInputDeviceList()

  • Dopo aver registrato il vostro dispositivo, sarà iniziare a WM_INPUT messaggi.

  • LParam del WM_INPUT messaggio contiene un RAWKEYBOARD struttura che è possibile utilizzare per determinare la tastiera, in cui l'input è venuto da, più virtuale codice e il tipo di messaggio (WM_KEYDOWN, WM_KEYUP, ...)

  • Così si può impostare una bandiera di cui l'ultimo messaggio è venuto da e poi la spedizione per regolare l'input da tastiera gestori.

Altri suggerimenti

Nessun modo per fare questo.Windows abstract questo lavoro per voi.Come accennato, è necessario scrivere/modificare un driver di periferica.

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