Hi,
das ist ja ein bunter Strauß
MarcelB schrieb:
... Tastenabfrage und das Abspielen und Sounds ist ja schnell erledigt...
... das Programm automatisch startet und auch anschließend auf meine Tastendrücke reagiert.
... im Autostart bekommt schließlich nie den Fokus.
Du gehst von einer Session mit grafischer Benutzeroberfläche aus. Du möchtest, dass nach dem Login deine Applikation gestartet wird und auch den Fokus erhält?
D.h. du musst eine Anwendung schreiben, die ein Fenster öffnet und - im Falle des Fokus - die Tastendrücke anzeigt, bzw. auswertet und was damit macht. Das ist normales Geschäft. Allerdings arbeitet man bei Programmierung grafischer Oberflächen über den X-Server, der direkte (und auch Treiber-abhängige) Schnittstellen zur Hardware aus Sicht des Anwenderprogrammes vermeidet. Ich vermute du suchst da nach Möglichkeiten, das Keyboard anzuzapfen ? → und findest deshalb zu diesem Thema sozusagen nix (weil man es nämlich nicht so macht).
Da bei Linux und anderen UNIX-Derivaten das Betriebssystem und die Oberfläche getrennte paar Schuhe sind (im Gegensatz zu Windoof), ist die Regel, wie der Fokus vergeben wird, dem Window-Manager überlassen (KDE, Gnome .... bei manchen kann man die Regeln auch einstellen - z.B. fvwm)
MarcelB schrieb:
Ich könnte zwar einfach mir den Inhalt von /dev/tty1 abfragen und dort die Tasten auslesen, das ist allerdings relativ träge.
Wieso träge, was hast du gemacht?
MarcelB schrieb:
Zudem wurde auch nicht jede Taste erkannt.
/dev/tty ist eine Terminal-Schnittstelle, da gibt es einen Treiber dazwischen, der ist entsprechend ausgelegt und reagiert auf Steuerzeichen. Du müsstest die Schnittstelle im "Raw-Mode" auslesen.
Aber mit der tty-Geschichte arbeitest du ja sozusgaen an der grafischen Oberfläche vorbei!
Wenn du eine bestimmte Programmiersprache und Entwicklungsumgebung verwendest, gibt es da div. Objekte zur Erstellung von grafischen Elementen, um eine Benutzeroberfläche zu bauen. Diese sind so, dass sie mit dem X-Server kommunizieren. Mit den Mitteln der Sprache bzw. zugehöriger Libraries können auch die Eingabeereignisse entgegengenommen werden (Events durch Maus oder Tastatur oder oder oder).
Hier ein simples Beispiel in der Sprache tcl/tk
Damit kannst du dir die Tastendrücke anzeigen lassen:
#! /bin/bash
# nur ein Kommentar, zwingend mit Backslash am Ende \
exec wish "$0" "$@"
set keysym "Press any key"
pack [label .l -textvariable keysym -padx 2m -pady 1m]
bind . <Key> {
set keysym "You pressed %K (number %N, code %k)"
}
Hier wird einfach ein "Label" - eine Fläche, die Text anzeigt - eingeblendet. Angezeigt und automatisch aktualisiert wird der Inhalt der variablen namens 'keysym'.
Mit dem Bind wird eine Reaktion auch Tastendruck ( Event-Art '<Key>' ) definiert. Innerhalb des 'bind' wird %K durch den Namen des Keys und %k durch den Keycode ersetzt.