Mauskoordinaten

Gast #5049630
Lesenswert?
• ▲
▼
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
Gast
Lesenswert?
• ▲
▼
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.
Gast
Lesenswert?
• ▲
▼
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.
Gast
Lesenswert?
• ▲
▼
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...
Gast
Lesenswert?
• ▲
▼
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
(Firma: Q3)
Lesenswert?
• ▲
▼
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.
Lesenswert?
• ▲
▼
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.
Gast
Lesenswert?
• ▲
▼
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.