Ihre Cursorposition … in was? Ein X-Fenster? Ein Terminalfenster? vi?
– TJ Crowder
12. März 2010 um 14:47 Uhr
in einem X-Fenster … aber ich muss nicht die Cursorposition bekommen, ich muss sie überall auf dem Bildschirm einstellen
– frx08
12. März 2010 um 14:48 Uhr
(Ich habe Ihre Frage für Sie bearbeitet; Sie wollten das wirklich tun, als Sie auf meinen Kommentar geantwortet haben.) Sie sehen, wie wichtig es ist, spezifisch zu sein. 🙂 Sie haben jetzt drei Antworten, die nichts mit der Frage zu tun haben (sie beziehen sich alle auf das Festlegen der Cursorposition in Terminalfenstern).
– TJ Crowder
12. März 2010 um 14:57 Uhr
danke, aber ich wusste nicht, ob ich mich erkläre, ich muss die Maus programmgesteuert bewegen
– frx08
12. März 2010 um 15:07 Uhr
Im X Window System die Maus Mauszeiger bezieht sich auf das grafische Symbol, während Sie das verschieben möchten Zeiger selbst (was den “Hotspot” sowie auch das Cursor-Symbol verschiebt).
Obwohl Bewegung des Zeigers normal sollte der Kontrolle des Endbenutzers überlassen bleiben, manchmal ist es notwendig, den Zeiger programmgesteuert an eine neue Position zu bewegen.
Um den Mauszeiger an einen beliebigen Punkt in einem Fenster zu bewegen, verwenden Sie XWarpPointer().
danke, aber es funktioniert nicht: Ich habe das 2. Argument von XWarpPointer von NULL auf None geändert, ich bekomme keine Fehler beim Kompilieren, aber der Cursor bewegt sich nicht
– frx08
12. März 2010 um 16:14 Uhr
Es hat auch nicht für mich kompiliert und ich denke, es liegt an fehlenden Bibliotheken. Ich habe versucht, die von @Achernar erwähnten Bibliotheken einzuschließen, aber mein Compiler kann die Verweise auf XOpenDisplay und die anderen Bibliotheksaufrufe immer noch nicht finden. Ich füge sie wie folgt ein (offensichtlich nicht alle in einer Zeile, aber ich habe Probleme, meinen Kommentar zu formatieren): #include <stdio.h> #include <X11/X.h> #include <X11/Xlib.h> #include <X11/Xutil.h> Irgendwelche Ideen, was hier falsch ist?
– Seanny123
22. Juli 2013 um 2:49 Uhr
Es stellt sich heraus, dass Sie beim Kompilieren darauf achten müssen, die X-Bibliothek zu verknüpfen. gcc text.cpp -lX11 -o t
– Seanny123
22. Juli 2013 um 3:31 Uhr
Achernar
Dies ist alt, aber falls jemand anderes auf dieses Problem stößt. Die Antwort von tusbar war richtig, aber der Befehl XFlush(dpy) muss am Ende hinzugefügt werden, um die Position des Cursors zu aktualisieren. Die benötigten Bibliotheken sind: X11/Xh, X11/Xlib.h, X11/Xutil.h.
PS: Sie können diesen Befehl verwenden, um den Code zu erstellen gcc main.c -lX11
Du willst a schreiben X11-Programm das nutzt den Aufruf XWarpPointer Funktion, um den Punkt an eine relative oder globale Position zu verschieben. (Xlib-Programmierhandbuch, Band 1)
Im Allgemeinen ist die Verwendung von Xlib zum Programmieren des X-Window-Systems die grundlegendste und ziemlich einfache Schnittstelle für die grafische Programmierung auf einem Unix- oder Linux-System. Die meisten Anwendungen, die heutzutage entwickelt werden, verwenden eine Bibliothek auf höherer Ebene wie z GTK oder Qt für die Entwicklung ihrer GUI-Anwendungen.
Curses oder NCurses (New Curses) dienen der Programmierung terminalorientierter Schnittstellen, sind also in diesem Fall nicht sinnvoll.
Verwenden Sie Jordan Sissels ausgezeichnetes Dienstprogramm xdotool.
Sie können verwenden XWarpPointer um den Mauszeiger in einem X-Fenster zu bewegen.
XWarpPointer(display, src_w, dest_w, src_x, src_y, src_width, src_height, dest_x,
dest_y)
Display *display;
Window src_w, dest_w;
int src_x, src_y;
unsigned int src_width, src_height;
int dest_x, dest_y;
aib
Alle modernen Endgeräte sollten dies unterstützen ANSI-Escape-Sequenzen. Für etwas Komplizierteres (und Tragbareres) sollten Sie jedoch die Verwendung einer Bibliothek wie z ncurses.
13114000cookie-checkWie setze ich die Mauszeigerposition in C unter Linux?yes
Ihre Cursorposition … in was? Ein X-Fenster? Ein Terminalfenster? vi?
– TJ Crowder
12. März 2010 um 14:47 Uhr
in einem X-Fenster … aber ich muss nicht die Cursorposition bekommen, ich muss sie überall auf dem Bildschirm einstellen
– frx08
12. März 2010 um 14:48 Uhr
(Ich habe Ihre Frage für Sie bearbeitet; Sie wollten das wirklich tun, als Sie auf meinen Kommentar geantwortet haben.) Sie sehen, wie wichtig es ist, spezifisch zu sein. 🙂 Sie haben jetzt drei Antworten, die nichts mit der Frage zu tun haben (sie beziehen sich alle auf das Festlegen der Cursorposition in Terminalfenstern).
– TJ Crowder
12. März 2010 um 14:57 Uhr
danke, aber ich wusste nicht, ob ich mich erkläre, ich muss die Maus programmgesteuert bewegen
– frx08
12. März 2010 um 15:07 Uhr
Im X Window System die Maus Mauszeiger bezieht sich auf das grafische Symbol, während Sie das verschieben möchten Zeiger selbst (was den “Hotspot” sowie auch das Cursor-Symbol verschiebt).
– mctylr
12. März 2010 um 15:28 Uhr