2015-06-21 4 views
5

Ich bin daran interessiert, ein Programm für Linux zu schreiben, das ALLE Tastenanschläge liest, verarbeitet und dann an den Rest der laufenden Prozesse ausgibt. Im Wesentlichen müssen ALLE Tastatureingaben in dieses Programm und dieses Programm allein gehen ... Dann wird das Programm als Tastatur für den Rest des Computers fungieren. Ich möchte im Grunde so etwas wie prädiktiven Text auf Android-Geräten machen, also wird mein Programm als Filter fungieren.Wie abzufangen Tastatureingabe auf der niedrigsten Ebene in Linux?

Was ich frage, ist im Grunde, wie alle Tastaturereignisse zu meinem Programm geleitet werden. Während ich nicht nach Code suche, würde ich gerne wissen, welchen Teil von Linux-Programmierung/Linux-System muss ich lernen, um diese Aufgabe abzuschließen? Dies, weil ich das mache, um Linux besser zu lernen.

+4

1. Besorgen Sie sich den Quellcode des Linux-Kernels. 2. Ändern Sie den Tastaturtreiber, um das zu tun, was Sie wollen. – Steve

+0

Das würde bedeuten, dass ich den Linux-Kernel ändern und dann neu installieren müsste? Ok, kein Problem ... aber gibt es eine Möglichkeit, dies im Benutzerbereich zu tun, so dass das Programm mit Benutzern geteilt und leicht installiert werden könnte? – FutureSci

+1

'Niedrigster Level'! =' Userspace'. ... Verpackte Kernel sind nicht so schwer zu installieren. – deviantfan

Antwort

1

Sie sollten nicht Tastaturtreiber ändern, da dies erfordert, dass Sie eine Lösung für jede Tastatur Hersteller haben. (Und es gibt eine Menge von diesem ganz ..)

Stattdessen sollten Sie eine Kernel-Funktion Patch, das ist von allen Treibern aufgerufen, bevor die Eingabe weiter nach oben auf den Stapel übertragen wird.

mit zu starten, Sie Patch konnten input_event die in der Regel von all Eingangstreiber see documentation here (nicht nur Tastatur, sondern auch Maus und andere Geräte)

In jedem Fall, dass Sie „decode“ Scan-Code des Eingangs haben werden aufgerufen wo finden Sie this Dokumentation nützlich.

Weitere Informationen zum Kernel-Patching finden Sie unter here und here.