GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile che un processo daemon (ovvero in background) cerchi le pressioni dei tasti da una tastiera USB?

Molto probabilmente i dispositivi ricevono un file in 07 denominato 19 dove N sono i vari dispositivi come mouse, tastiera, jack, pulsanti di accensione ecc.

04

dovrebbe darti un suggerimento.

Guarda anche:

13

Dove 22 il valore è il percorso sotto 38 .

Puoi testare ad es.

21

Per implementare usa ioctl e controlla dispositivi + monitor.

MODIFICA 2:

OK. Sto espandendo questa risposta in base al presupposto 42 viene utilizzato.

Un modo potrebbe essere:

  1. All'avvio eseguire il ciclo di tutti i 59 file trovati in 60 . Usa 75 per richiedere bit di evento:

    35

    quindi controlla se 83 -bit è impostato.

  2. IFF impostato quindi controlla le chiavi:

    43

    Per esempio. se i tasti numerici sono interessanti, controlla se i bit per 92 - 101 e 114 a 124 .

  3. Le chiavi IFF trovate quindi avviano il monitoraggio del file di eventi nel thread.

  4. Torna a 1.

In questo modo dovresti monitorare tutti i dispositivi che soddisfano i criteri desiderati. Non puoi controllare solo 138 come ad es. power-button avrà questo bit impostato, ma ovviamente non avrà 142 ecc. impostato.

Ho visto falsi positivi per chiavi esotiche, ma per chiavi normali questo dovrebbe bastare. Non vi è alcun danno diretto nel monitoraggio, ad es. file di eventi per il pulsante di accensione o un jack, ma quelli non emetteranno eventi in questione (ovvero codice errato).

Più in dettaglio di seguito.

MODIFICA 1:

Per quanto riguarda "Spiega l'ultima affermazione..." . Andando oltre in StackOverflow atterra qui... ma:

Un esempio rapido e sporco in C. Dovrai implementare vari codici per verificare di ottenere effettivamente il dispositivo corretto, tradurre il tipo di evento, il codice e il valore. Tipicamente key-down, key-up, key-repeat, key-code, ecc.

Non ho tempo, (ed è troppo qui), di aggiungere il resto.

Dai un'occhiata a 157 , programmi come 168 , codice del kernel ecc. per i codici di mappatura. Per esempio. 178

Comunque:

Esegui come ad esempio:

51

Codice:

64

MODIFICA 2 (continua):

Nota che se guardi 180 hai una lettera all'inizio di ogni riga. Qui 190 significa mappa di bit. Questo è per esempio:

76

Ciascuno di questi bit corrisponde a una proprietà del dispositivo. Che per bit-map significa, 1 indica che è presente una proprietà, come definito in 203 . :

82

Dai un'occhiata a 217 nell'albero dei sorgenti del kernel. Un sacco di buon codice lì. (Ad esempio, le proprietà dei dispositivi sono prodotte da questa funzione.)

Ognuna di queste mappe di proprietà può essere raggiunta da 228 . Ad esempio, se vuoi controllare quali proprietà dei LED sono disponibili, dì:

92

Guarda la definizione di 239 in 241 per come 250 sono definiti.

Per controllare lo stato dei LED, dire:

100

Se il bit 1 in 266 sono 1 allora il blocco numerico è acceso. Se il bit 2 è 1 allora il blocco maiuscole è acceso ecc.

279 ha le varie definizioni.

Note relative al monitoraggio degli eventi:

Lo pseudo-codice per il monitoraggio potrebbe essere qualcosa nella direzione di:

117

Alcuni documenti correlati:

  1. 283 , spec. nota la sezione 5.
  2. 296 , descrizione di vari eventi ecc. Prendere nota di quanto menzionato ad es. 300 su 319
  3. 327 ... leggi il resto se vuoi.

Puoi farlo facilmente facendo riferimento a 333 . Questi appaiono come collegamenti simbolici che puoi dereferenziare usando 345 per determinare il dispositivo a blocchi associato. Questi collegamenti sono comunque creati da 355 che potrebbe non essere presente nel tuo ambiente embedded.

Oppure... Guarda il 365 dopo aver collegato il dispositivo USB. Dovrebbe darti il ​​376 nodo.


Linux
  1. Crea USB avviabile da Linux:il più semplice possibile!

  2. Come ottenere l'ID processo del processo in background?

  3. Creazione di un demone in Linux

  4. È possibile "nascondere" un processo dall'elenco di `ps` o `top` su Linux

  5. Database MySql da chiavetta USB

8 comandi Linux per una gestione efficace dei processi

Come installare RHEL 8 da USB

Cambiare l'ambiente di un processo in esecuzione?

Installa Linux Mint da USB

Comandi per la gestione dei processi in Linux

Processo in background in Linux