hi,
wurde leider schon wieder von Google enttäuscht, aus dem Grund richte
ich meine Frage an euch:
Mein PC, sowie auch andere, werden mithilfe einer Maus bedient. Meistens
läuft diese über USB.
Sprich, die Maus sendet Informationen an dem PC, wo er den Cursor
positionieren soll.
Meine Frage ist nun, wo werden diese Informationen gespeichert bzw.
bearbeitet? Werden die Informationen der Maus direkt über den Prozessor
oder andere Hardware-Bridgets abgearbeitet? Hat der normale User, falls
diese Informationen auf dem PC gespeichert werden, überhaupt Zugriff
darauf?
Diese Frage stellt sich mir weil man mit diversen Programmen wie z.B.
Autoit die Position des Zeigers verändern kann. Mich Interessiert es
nun, ob dass auch ohne extra Programm funktioniert.
Danke.
mfg
Umbrecht
Umbrecht schrieb:> Sprich, die Maus sendet Informationen an dem PC, wo er den Cursor> positionieren soll.
nein, sie sagt nur die Richtung in die er sich bewegen soll
> Diese Frage stellt sich mir weil man mit diversen Programmen wie z.B.> Autoit die Position des Zeigers verändern kann. Mich Interessiert es> nun, ob dass auch ohne extra Programm funktioniert.
Autoit ist ein normales Programm wie jedes andere auch. Jedes Programm
kann damit auch den Zeiger ändern, wenn es denn will.
Unter Linux kann man ziemlich leicht die rohdaten der Maus auslesen. Das
sind Geschwindigkeiten in X und Y. Was der pc dann damit anstellt ist
eine ganz andere Sache. Und natürlich kann man z.b. mit .NET Kram den
Cursor platzieren wo man möchte.
hi,
Peter II schrieb:> nein, sie sagt nur die Richtung in die er sich bewegen soll
mit welchem Tool funktioniert dies dann? Macht das der Systemtreiber von
Windows?
Thorsten Legat schrieb:> Und natürlich kann man z.b. mit .NET Kram den> Cursor platzieren wo man möchte.
Linux oder Windows?
mfg
Umbrecht
Umbrecht schrieb:> mit welchem Tool funktioniert dies dann? Macht das der Systemtreiber von> Windows?
das wird wohl Windows selber machen, der Treiber reicht es an Windows
durch. Bei Touchpad ist es anders, das liefert absolute Koordinaten.
Umbrecht schrieb:> Meine Frage ist nun, wo werden diese Informationen gespeichert bzw.> bearbeitet? Werden die Informationen der Maus direkt über den Prozessor> oder andere Hardware-Bridgets abgearbeitet? Hat der normale User, falls> diese Informationen auf dem PC gespeichert werden, überhaupt Zugriff> darauf?
Wie sooft liefert die Windows-API schon von Hause aus die passenden
Funktionen um sie in dein eigenes Programm einzubauen:
https://msdn.microsoft.com/de-de/library/system.windows.forms.control.mousemove(v=vs.110).aspx
Supermodern ist es natürlich zuvor solche zugriffe erstmal durch zig
GByte an Framworks zu abstrahieren...
Irgendwer schrieb:> Wie sooft liefert die Windows-API schon von Hause aus die passenden> Funktionen
Zitat aus dem Link:
"So ändern Sie das Steuerelement Farbe oder ein Rechteck ausgelöst, um
das Steuerelement gezeichnet werden."
Damit ist ja alles klar...
Aber prinzipiell richtig, es ist z.B. nicht unüblich, den Mauszeiger bei
Öffnen eines Dialogs auf dem Ok-Button zu positionieren, und dazu
braucht man nichts ausser Windows selbst, kein Framework. Aber dann wird
das Programm so schlank dass man damit keinen Eindruck mehr machen kann.
Georg
Die Maus ist ein relativ arbeitendes "Zeigegerät". Die Maus selber
liefert Daten in der Form der Distanz (pos. u. neg.) und Richtung (x u.
y) um die der Mauspfeil (vom System erzeugt) seit der letzten Abfrage
bewegt werden soll. Deshalb kann man sie z.B. bei zu kleinem Mauspad
auch hochheben und versetzt wieder ablegen, ohne dass sich der Mauspfeil
auf dem Bildschirm bewegt.
Demzufolge kann man aus der Maus/Maustreiber nur die relativen
Bewegungs-Daten und aus dem System (per API) die absolute Position des
Mauspfeiles auslesen.
Mit entsprechenden Tools bzw. den API-Aufrufen kann man zwar "seitwärts"
Daten einspielen und damit den Mauspfeil verschieben, (leider) nicht die
Maus selber :-)
Touchscreens und die meisten Grafik-Tabletts sind dagegen absolut
arbeitende Zeigegeräte. Da entspricht die Position des Mauspfeiles auf
dem Bildschirm immer der (skalierten) Position von Stift oder Finger auf
der aktiven Fläche ...
Eine Ausnahme sind hier spezielle Trackpads, da kann man den Finger z.B.
am Rand hochnehmen und ein Stück zurück wieder aufsetzen, ohne dass der
Pfeil zu dieser Poistion springt.
Unter Linux nutzt X die device files in /dev/input/ für Maus und
Tastatur. Immer wenn neue eingaben gemacht werden sieht es für
Programme die aus diesen Dateien lesen so aus, als ob neue Daten (die
Mausverschiebung, etc.) in die Datei geschrieben worden wären (zumindest
bei den mäusen, touchscreens, pens und mousepads, bei Tastaturen bin ich
mir nicht sicher, die stellen eventuell einfach nur den momentanen
Zustand der Tasten bereit).
Man kann dann jede Eingabe als Eingabeevent interpretieren, das je nach
Eingabegerät, etc. verschiedene Daten enthält. Mäuse haben dann X und Y
verschiebung, und im falle einiger dieser Knopfmause wie stark man auf
den Knopf drückt. Bei 3D mausen gibts auch einfach noch ne dritte
Koordinate. Bei Touchscreens sind die Koordinaten absolut, sowie meist
auch bei Touchpads. Touchpads emulieren mehrere Knöpfe häufig nur, indem
sie schauen wo beim Klick der Finger war. Brauchbare Stifte und
Touchscreens haben noch eine Druckangabe, wobei bei letzteren diese
nicht von allen Treibern exportiert wird. etc.
Wenn man in einer X session ist kann man sich diese input events mit
xinput ansehen.
X, Wayland, etc. sind Programme die dafür da sind Fenster und Texte
anzuzeigen, auf einer sehr primitiven Ebene. Bei X11 kann man mehrere
Mauszeiger verschiedenen Eingabegeräten zuordnen, leider sind viele DEs
nicht darauf eingerichtet. Beim erstellen eines Fensters, Setzen oder
Auslesen einer Zeigerposition unter X11 komuniziert das Program mit
hilfe der x library über einen socket mit dem X server. Dieser wiederum
weiss die Position aller Zeiger, und weiss von Eingaben von den x input
treibern, die einfach die daten aus /dev/input/XXX decodieren.
Unter Windows kommunizierst du beim Setzen der Zeigerposizion über ne
library über die Winapi vermutlich mit dem Kernel, aber Windows ist ne
blackbox, wer weiss wo die info da wohl schlussentlich abgelegt ist.
Daniel A. schrieb:> aber Windows ist ne> blackbox, wer weiss wo die info da wohl schlussentlich abgelegt ist.
Das ist ja auch ein ganz falscher Ansatz, nach dem Speicherort für
Systemvariable zu suchen (vielleicht muss man das unter Linux), dafür
gibt es API-Funktionen, und die funktionieren schon seit WfW3.11 ganz
unabhängig davon, wo was intern gespeichert ist.
Georg