Aufnahme der Tastenanschläge in GNU/Linux in C
Wenn ich mich mit einer Anwendung arbeiten, und ich drücken Sie die Taste der Tastatur, wie kann ich erfassen, dass die wichtigsten (oder string), einschließlich der Quell-Anwendung-name, in C, unter der GNU/LINUX-userland verwenden, ohne dass X11 🙂
Dank.
InformationsquelleAutor der Frage | 2009-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ohne X11 dieses problem ist viel schwieriger.
Für die Tastenkombination können Sie code verwenden, ähnlich wie diese, aber Sie haben zu gehen, wie ein argument, das Gerät, das Sie Lesen (Tastatur, in der Regel /dev/input/event0 )
Credits gehen nicht an mich, dieser code stammt aus der Ventriloctrl hack zu bekommen Tastatureingaben.
http://public.callutheran.edu/~abarker/ventriloctrl-0.4.tar.gz
Hoffe ich bin eine Hilfe.
InformationsquelleAutor der Antwort aemus
Können Sie Lesen Daten aus einer der Dateien in /dev/input. Die eine hängt von Ihrem system. Es könnte sein, /dev/input/event0 oder /dev/input/by-path/platform-i8042-serio-0-event-kbd oder etwas anderes. Das format angegeben ist, in den kernel-header-input.h. Es ist
Können Sie laufen
und geben etwas zu sehen, was passiert.
Als um herauszufinden, welche Anwendung den erhaltenen key-event, ich bin mir nicht sicher. Sie könnten versuchen, die Kontrolle, die man beim Lesen von der Haupt-tty.
InformationsquelleAutor der Antwort Kim Stebel
Eine Möglichkeit: finden und werfen Sie einen Blick auf die Quelle für 'sudosh', das 'sudo shell' (oder eine seiner Ersatz da, dass hat sich nicht geändert in eine Weile, Google ist dein Freund).
Es Kasinos mit pseudo-ttys und Strecken, die alle input-und output-auch durch Aufnahme der Informationen in die Datei.
Ob das genau genug für dich ist, ist vielleicht eher umstritten; es würde melden Sie alle Tastenanschläge in allen Anwendungen. Ich bin mir auch nicht sicher, wie es funktioniert mit X11 - wenn er funktioniert mit X11.
InformationsquelleAutor der Antwort Jonathan Leffler
Für ein ziemlich gutes Beispiel, haben Sie einen Blick auf showkey's code.
Insbesondere hier ist die main-loop. Alle es tut, ist das terminal, es zu kopieren, schalten Sie den kopierten raw-Modus, und bis ein 'quit' oder 'interrupt' Tastenkombination angegeben ist, nur druckt, was der Schlüssel gegeben wurde, um das terminal.
InformationsquelleAutor der Antwort djhaskin987