Domanda

Potresti aver sentito parlare di PawSense , un'utilità solo per Windows che impedisce l'inserimento di sequenze di tasti quando crede che ci sia un gatto o un altro animale sulla tastiera che digita input senza senso come "zlxkkkkkkkk;" Sembra un progetto divertente da realizzare nel mio tempo libero, ma mi chiedevo alcuni dettagli su come implementarlo.

Penso di poter fare parte del riconoscimento dei pattern, sia con l'euristica hardcoded sia usando un qualche tipo di algoritmo di riconoscimento dei pattern (a cui sono stato esposto in precedenza e con cui mi sento a mio agio). La mia domanda riguarda il lato di programmazione dei sistemi delle cose e la logica di come bloccare l'input.

Dovresti fare in modo che l'applicazione osservi l'input e presenti una sfida se rilevi la digitazione di un gatto. Manterresti un buffer delle sequenze di tasti recenti e le lasceresti passare solo se si trattasse di una digitazione non cat? O se si verificasse la digitazione di un gatto, lasceresti passare solo un piccolo numero prima di bloccare l'input? Quale sarebbe la logica reale che vorresti usare?

Per quanto riguarda la meccanica effettiva del blocco dell'input, diciamo, in C #, ci sono altre domande su questo sito. La mia domanda, per ribadire, è quale logica useresti per rilevare e bloccare la tipizzazione dei gatti.

È stato utile?

Soluzione

Aspetterei fino a quando penso che ci sia un gatto sulla tastiera, quindi bloccare l'input, poiché un buffer può essere problematico.

Ad esempio, se sto scrivendo e cambiando velocemente Windows, digitando, come determinereste dove dovrebbero essere le battute dei tasti?

Mantenerlo semplice come deve essere.

Altri suggerimenti

Devi esaminare l'introduzione di un hook WIN32 per tutto il sistema . Questo articolo MSDN copre le basi di questo (attenzione specifica entrambe le applicazioni o ganci a livello di filo e ganci a livello di sistema).

Una volta che lo capisci, dovrai catturare diversi messaggi relativi alla tastiera, WM_KEYUP di sicuro, anche qualche altro messaggio WM_KEYxxxx, a seconda delle tue esigenze).

Dovrai quindi introdurre la logica che decide se le sequenze di tasti sono valide o incomprensibili e passare i messaggi (in modo che possano eventualmente passare all'applicazione che ha lo stato attivo) o ignorarli.

Senza sapere nulla di questo, inizierei basandomi su quanto a lungo vengono premuti i tasti e non su quali tasti vengono effettivamente premuti, pensando che un animale non sta per premere semplicemente un tasto e rilasciarlo molto rapidamente, poi un altro , ecc. ma è più probabile che si fermi su un set di chiavi.

Quindi, se puoi semplicemente cronometrare i tasti, penso che potrebbe funzionare.

Pensare a caricare. Vorrei iniziare con qualcosa di simile al seguente:

  1. Attendi l'assenza di attività dell'utente per circa 2 minuti.
  2. Avvia la tua app
  3. Ascolta le hit della tastiera
  4. Abbina le chiavi digitate se esiste nel dizionario
  5. Blocca la tastiera dopo le sei o le sette.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top