PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [CPP] Auf tastendruck warten?



delmonico
03-07-2003, 14:44
Hi!
Ich mache derzeit meine ersten C++-Erfahrungen und möchte gerne ein Programm schreiben, dass auf Druck einer Taste/Tastenkombination eine bestimmte Aktion ausführt, zum Beispiel einen sound spielen... Leider kenne ich nur die funktion "cin" aber diese ist völlig ungeeignet, da sie ein abschliessendes "Enter" erfordert und auch nur funktioniert wenn das Programm in einer shell und im Vordergrund ist... Es müsste eher im Systray sitzen oder so (wobei es aber doch bestimmt probleme mit unterschiedlichen WMs gäbe oder?).
Danke für jede hilfe.

greets, delmonico

anda_skoa
03-07-2003, 15:12
Eine GUI Application ist ohnehin Eventbasiert, also gibt es dort auch Key Events.

Welches Toolkit benutzt du/möchtest du benutzen?

Für C++ werd ich mal Qt empfehlen :D

Systemtray ist zum Teil abhängig vom WM.
Es gibt für Notifications eine übergreifende Spezifikation, aber das beinhaltet eben nur Statusanzeigen, etc.

Der Dockbereich, wo man auch klicken kann, wird dann von den Panel zur Verfügung gestellt.
Bei Kicker ist das auch der Systemtray, beim GNOME Panel weiß ich's nicht.

Allerdings bekommt eine gedockte Application praktisch nur die Events auf ihrme Dockicon, also Mouse Events.

KeyEvents bekommt nur die Application mit dem Keyboard Focus.

Ciao,
_

delmonico
03-07-2003, 15:43
Danke das hilft schonmal sehr, werd mich dann mal in QT einarbeiten... Aber folgendes macht mich noch unsicher:
"KeyEvents bekommt nur die Application mit dem Keyboard Focus."

Können den Keyboard Focus denn mehrere Apps haben? Weil meine müsste ihn dann ja immer haben, damit sie auch funktioniert wenn ich in einem ganz anderen Programm arbeite oder?

mfg, del

Malte
03-07-2003, 16:00
Nein, mehrere Programme können schlecht gleichzeitig den Fokus haben -- dann bräuchtest du schon zwei Mäuse, und das macht sich schlecht in den Hardware-Anforderungen :-]

anda_skoa
03-07-2003, 19:58
Wahrscheinlich kann man sich irgendwie in die X11 Event queue oder ähnliches "einschalten".

In KDE gehen ja die globalen Keys auch immer.

Wie das im Detail geht, entzieht sich allerdings meiner Kenntnis.

Eventuell gibt es in in KDE sogar einfachere Methoden, bestimmte Keysequences global zu registrieren.

Ciao,
_