2015-06-21 9 views
5

Mi interessa scrivere un programma per linux che leggerà TUTTE le sequenze di tasti, lo elaborerà e POI uscirà nel resto dei processi in esecuzione. In sostanza, TUTTI gli input da tastiera devono essere inseriti in questo programma e solo in questo programma ... Quindi il programma fungerà da tastiera per il resto del computer. Fondamentalmente voglio fare qualcosa come il testo predittivo sui dispositivi Android, quindi il mio programma fungerà da filtro.Come intercettare l'input da tastiera al livello più basso in linux?

Quello che sto chiedendo è fondamentalmente come dirigere tutti gli eventi della tastiera sul mio programma. Mentre non sto cercando il codice, mi piacerebbe sapere quale parte del sistema di programmazione/linux linux devo imparare per essere in grado di completare questo compito? questo, perché sto facendo questo nel tentativo di imparare meglio Linux.

+4

1. Ottenere il codice sorgente del kernel di Linux. 2. Modifica il driver della tastiera per fare ciò che vuoi. – Steve

+0

Ciò significherebbe che dovrei modificare il kernel di Linux e quindi doverlo reinstallare? Ok, nessun problema ... ma c'è un modo per farlo nello spazio utente, quindi il programma potrebbe essere condiviso con gli utenti e installato facilmente? – FutureSci

+1

'Livello più basso'! =' Userspace'. ... I kernel confezionati non sono così difficili da installare. – deviantfan

risposta

1

Si consiglia di non modificare i driver di tastiera dal momento che questo richiederà di avere una soluzione per ogni produttore di tastiera. (E ci sono un sacco di questi ..)

Invece si dovrebbe patchare una funzione kernel che è chiamato da tutti i driver prima di passare l'input più in alto nello stack.

Per cominciare, si potrebbe correggere input_event che di solito è chiamato da tutti i driver di ingresso see documentation here (non solo da tastiera, ma anche mouse e altri dispositivi)

In ogni caso sarà necessario il codice di scansione di ingresso "decodificare" dove potresti trovare utile la documentazione this.

Per ulteriori informazioni sull'aggiornamento del kernel, leggere here e here.

Problemi correlati