Seite 1 von 1

Tastenabfrage systemweit (ohne WinAPI)

Verfasst: 07.08.2013 18:46
von Joel
Hey,

um mein Programm immer aufrufen zu können würde ich gerne Tastendrücke systemweit abfragen. Also auch wenn der User in einem anderen Programm zu Werke ist.

Das ganze sollte auch unter Linux funktionieren, also nicht die WindowsAPI benutzen...

Re: Tastenabfrage systemweit (ohne WinAPI)

Verfasst: 07.08.2013 19:49
von Bisonte
Da wirst du wohl ohne API kein Glück haben.

Du willst dem Betriebssystem sagen, dass auf eine bestimmte Taste reagiert werden soll...
da kommst du ohne das Betriebssystem zu nutzen nicht drumrum, sowas wirds auch unter Linux und Mac geben...

Also ohne API (wie auch immer das unter Linux oder Mac genannt wird) sehe ich da kein Land...

Re: Tastenabfrage systemweit (ohne WinAPI)

Verfasst: 07.08.2013 19:54
von ts-soft
Bisonte hat geschrieben:Also ohne API (wie auch immer das unter Linux oder Mac genannt wird) sehe ich da kein Land...
Das wird überall API (Application Programming Interface) genannt. API ist kein Begriff der mit Windows verheiratet ist :mrgreen:

Re: Tastenabfrage systemweit (ohne WinAPI)

Verfasst: 07.08.2013 20:03
von Joel
ts-soft hat geschrieben:
Bisonte hat geschrieben:Also ohne API (wie auch immer das unter Linux oder Mac genannt wird) sehe ich da kein Land...
Das wird überall API (Application Programming Interface) genannt. API ist kein Begriff der mit Windows verheiratet ist :mrgreen:
:mrgreen:
Bisonte hat geschrieben:Da wirst du wohl ohne API kein Glück haben.

Du willst dem Betriebssystem sagen, dass auf eine bestimmte Taste reagiert werden soll...
da kommst du ohne das Betriebssystem zu nutzen nicht drumrum, sowas wirds auch unter Linux und Mac geben...

Also ohne API (wie auch immer das unter Linux oder Mac genannt wird) sehe ich da kein Land...
Hm Okay. Oder ich mache eine von diesen schicken Abfragen, ob es sich um Windows oder Linux handelt. Und dann suche ich mir einfach 2 API-Befehle die das gleiche machen. Kennt ihr einen Linux Befehl, der so ähnlich wie

Code: Alles auswählen

GetAsyncKeyState_(n)
ist?

Re: Tastenabfrage systemweit (ohne WinAPI)

Verfasst: 08.08.2013 12:37
von Shardik
Joel hat geschrieben: Kennt ihr einen Linux Befehl, der so ähnlich wie

Code: Alles auswählen

GetAsyncKeyState_(n)
ist?
So einfach ist dies in Linux leider nicht, denn in Linux gibt es ja im Gegensatz zu Windows eine Vielzahl verschiedener Desktop-Manager wie Gnome, KDE, Unity, LXDE, Enlightenment usw., die man für eine unter allen Linux-Distributionen lauffähige Lösung berücksichtigen müßte.

Aber zum Glück haben zur Zeit alle Linux-Distros noch XWindow als Unterbau (Wayland und Mir sind in Entwicklung und werden bald ebenfalls in verschiedenen Distros auftauchen, dann scheidet die XWindow-Lösung als alleinige Lösung auch aus), sodass über XWindow eine systemweite HotKey-Lösung möglich ist. Ein Beispiel dazu habe ich bereits früher einmal im englischen Forum gezeigt. Das Beispiel richtet die systemweite HotKey-Tastenkombination <Strg> + <Shift> + <K> ein. Bei Drücken dieser Tastenkombination erfolgt eine Meldung und die HotKey-Tastenkombination wird wieder entfernt. Ich habe das Beispiel noch einmal aktuell auf verschiedenen Linux-Distros getestet und gemerkt, dass es nur auf etwa der Hälfte der Distros lief, bis ich merkte, dass manchmal die NumLock-Taste aktiviert war und dann die HotKey-Kombination nicht funktionierte, weil ja die NumLock-Taste auch "gedrückt" war... :lol:
Also dran denken: vor dem Test sollte die NumLock-Taste ausgeschaltet sein!

Für MacOS X habe ich im englischen Forum ebenfalls bereits demonstriert, wie man eine systemweite HotKey-Tastenkombination einrichtet (lauffähig mit Carbon-Framework und Cocoa-Framework, 32 und 64 Bit, ASCII- und Unicode-Modus).