2010-03-27 17 views
8

La ragione per cui sto chiedendo è che sto pensando di costruire un interruttore a pedale per agire come tasti di controllo e di spostamento - ben due interruttori, uno per ogni piede.È possibile impostare a livello di programmazione lo stato del turno e i tasti di controllo?

Sto pianificando di utilizzare lo Arduino per questo e di scrivere una piccola applicazione C# per rilevare quando è stato premuto l'interruttore per impostare lo stato di spostamento o controllo. Preferirei non dover scrivere un driver per tastiera per l'Arduino come vorrei fare anche altre cose.

+0

+1 Ottima idea, ancora più utile se le allocazioni dei tasti/pedale fossero programmabili per aiutare se qualcuno avesse limitato l'uso di una mano o per il gioco! – amelvin

+0

... o emacs sindrome di pinky – spender

risposta

9

Sì, è possibile, ma è necessario inoltrare la chiamata a Win32. Dai un'occhiata alla chiamata keydb_event. chiave

keybd_event(0x10, 0, 2, 0); 

di spegnerlo di nuovo (es:

[DllImport("user32.dll", SetLastError = true)] 
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

È quindi possibile chiamare:

keybd_event(0x10, 0, 0, 0); 

per accendere il tasto shift, e (cioè tasto.). su).

Il primo argomento è il valore esadecimale del tasto da premere:

  • 0x10 = spostamento
  • 0x11 = ctrl
  • 0x12 = alt

Ho appena provato questo in una semplice applicazione C# utilizzando una casella di controllo per rappresentare il tasto Maiusc. Dopo averlo controllato, ha "tenuto premuto" il tasto Maiusc per qualsiasi applicazione che ho usato.

+0

Grazie a voi è esattamente quello che stavo cercando! –

0

Se si è interessati solo a controllare l'applicazione in primo piano, la soluzione più semplice è inviare i messaggi WM_KEYDOWN e WM_KEYUP all'applicazione attiva per la stampa e il rilascio del pedale.

potrei essere scambiato (teste e più saggio, mi sento libero di correggermi se sono!), Ma credo che per creare un evento keypress reale a livello di sistema - per esempio per creare Windows creare i messaggi keydown/keyup e lavorare correttamente anche se si modificano le applicazioni mentre il pedale viene tenuto premuto - è necessario scrivere un driver di input.

Problemi correlati