Wie Sie wissen, welches Fenster den Fokus hat und wie es zu ändern?
Ich würde gerne wissen, wie kann ich Frage X11 die Fenster den Fokus hat. Und wenn Sie aus irgendeinem Grund meine eigene Anwendung (das kann sichtbar oder nicht), bekam den Fokus möchte ich in der Lage sein zu lassen, die ehemaligen windows-um wieder den Fokus.
Zum Beispiel, meine Anwendung ausgeführt wird, mit vielen anderen (z.B. firefox, gvim, nautilus,...)
Angenommen, dass auf den ersten firefox den Fokus hat und der Benutzer klickte auf meine app, die nun den Fokus hat. Ich möchte, dass meine Bewerbung setzen Sie den Fokus auf firefox wieder.
Wer weiß, wie dies zu erreichen? Bücher Empfehlungen wäre sehr nett.
Vielen Dank.
InformationsquelleAutor Marcio Andrey Oliveira | 2009-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie diese XQueryTree zu finden, die gerade aktiv ist, oder top-most-Fensters.
Hier ist eine Funktion, wenn da eine Anzeige, es werden die aktuellen Fenster den Fokus:
http://tronche.com/gui/x/xlib/window-information/XQueryTree.html
Fand ich die Quelle:
http://examples.oreilly.com/networksa/tools/xsnoop.c
Glück
Es kann gut sein lohnt sich, das xprop.c-Quell-Datei des xprop-Paket betreffend, welche Funktionen in libx11 es verwendet, um zu erhalten, die Informationen 🙂
Ich sah xprop.c ans xsnoop.c. Ich denke, dass ich in der Lage zu passen, dass der code für die Verwendung mit XSetInputFocus und Holen Sie sich die Verhalten, die ich möchte. Beste Grüße.
Cool, willkommen zu SO
InformationsquelleAutor Aiden Bell
Werfen Sie einen Blick auf die
_NET_ACTIVE_WINDOW
Wert der root-Fenster, in dem festgelegt ist, das die meisten modernen Fenster-Manager:Kann dieser Wert natürlich erhalten Sie immer mit der Xlib-Bibliothek ruft.
InformationsquelleAutor Marten
Möchten Sie wahrscheinlich die
XGetInputFocus
nennen.In diesem snippet
focused
wird das Fenster mit dem aktuellen Eingabefokus bekommen Tastatur-Ereignisse und die Maustaste drückt.Dies funktioniert auch, wenn der Fenster-manager nicht die
_NET_ACTIVE_WINDOW
Eigenschaft auf das root-Fenster, wie angegeben durch EWMH. Einige Fenstermanager wie dwm und meine 9wm, nicht festlegen.XSetInputFocus
tun können, zum Beispiel:XSetInputFocus(display, window_to_focus, RevertToNone, CurrentTime);
InformationsquelleAutor Neale Pickett
Empfehle ich eine Anwendung namens XDoTool. Es unterstützt eine ganze Menge von Abfragen, Steuerelemente und sogar die Haken.
Befehle wie
behave
akzeptieren Sie einen Rückruf, welcher gebaut werden kann, wiegetmouselocation
oder externe wieexec notify-send 'focused window'
,exec zsh myscript.zsh
usw., aber Sie es verwenden möchten.Bearbeiten - Sie können den Fokus mit
xdotool windowfocus [options] [window]
wie inxdotool search --class firefox windowfocus
. In meinem Fall wird dieser Fehler verursacht, weil Firefox zeigt sich als ein paar Dutzend 'windows', aber alle haben die gleiche PID; es Werke gegeben, die richtige ID. Hoffentlich, dass ist ein Anfang.Edit 2 - die 'Fenster-ID' ist die dezimale Darstellung der window-Zeiger, z.B. von xprop:
InformationsquelleAutor John P