2012-09-01 14 views
6

Sto scrivendo un programma Linux in C, e ho bisogno di intercettare determinati tratti della tastiera.Come creare un evento tastiera su Linux utilizzando il sottosistema di input

Utilizzando il sottosistema di input (lettura/scrittura/dev/input/eventoX), è possibile ricevere un colpo di tastiera (utilizzando le funzioni di "lettura") o simulare un tratto di tastiera (utilizzando la funzione "scrittura").

Quando si utilizza la funzione "lettura", posso catturare i tratti della tastiera dell'utente, ma questo evento è propagato e non so come consumarlo.

+0

Demo codici: int devfd = open (dispositivo, ...);/* Apri il dispositivo del kernel "/ dev/input/eventX". */ leggi (devfd, ...);/* Leggi un evento della tastiera. */ scrittura (devfd, ...);/* Simula un evento di tastiera. */ – zccoding

+2

Non è necessario commentare la tua stessa domanda. È possibile modificare la domanda per includere ulteriori dettagli e formattare la fonte. Assicurati che la tua fonte sia chiara per coloro che risponderanno. – bytebuster

risposta

5

Per impostazione predefinita, gli eventi di input vengono trasmessi a tutte le applicazioni di ascolto e ai driver. Tuttavia, è possibile che un'applicazione apra il dispositivo tramite l'interfaccia evdev - dai uno sguardo allo EVIOCGRABioctl(). Ciò consentirebbe solo a quella specifica applicazione di ricevere eventi da quel particolare dispositivo.

Il problema di questo approccio è che non si può effettivamente impedire che un evento specifico la propagazione dopo il ricevimento - si può afferrare solo il dispositivo in anticipo, che avrebbe quindi acquisire tutti eventi. Pertanto, se si desidera che gli eventi di input del filtro inseriscano il filtro , è necessario utilizzare una soluzione alternativa.

La soluzione che ho usato nel mio evmapd demone coinvolto afferrando il dispositivo originale e utilizzando il sottosistema uinput di fornire un altro dispositivo con tutte le modifiche che avevo bisogno, tra cui chiavi rimappati e vari altri cambiamenti ...

Problemi correlati