florian-i

Mausbewegungen erkennen

Hallo.
Ist es jemandem möglich meine Mausbewegungen zu erkennen und sie in Tastendrücke umzuändern?
Also nicht nur in 4 Richtungen sondern etwas präziser damit ich es auch diagonal benutzen kann?
Danke im Voraus
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 595619

Url: https://administrator.de/forum/mausbewegungen-erkennen-595619.html

Ausgedruckt am: 18.05.2025 um 09:05 Uhr

maretz
maretz 13.08.2020 um 06:04:57 Uhr
Goto Top
Naja - man könnte sowas sicher programmieren aber die frage wäre - wofür? Du brauchst ja dann eine Bewegung für jeden Buchstaben - ggf. mit Sonderzeichen. D.h. da wärst du allein im Deutschen schon bei ca. 30, dazu noch nen Space, Punkt, Komma,... Man müsste also jetzt entweder dir sagen das bei 360 Grad alle 10 Grad nen anderes Zeichen kommt (und dabei noch nicht mal Klein-/Gross unterschieden wird!) ODER dir halt die üblichen "komplexen" Bewegungen geben (wie mitm Finger aufm Smartphone) was aber mit der Maus eher schwerer wird...

Aber Programmmässig wäre es jetzt kein sonderliches Problem zu sagen z.B. "Maustaste geklickt" - starte aufzeichnung des Weges - "maustaste wieder geklickt" - stoppe aufzeichnung des Weges... Das macht z.B. PuttyGen (ohne vorher auf nen Mausklick zu warten) um dir einen zufallswert zu erzeugen...
SeaStorm
Lösung SeaStorm 13.08.2020 um 07:56:14 Uhr
Goto Top
hi

grundsätzlich möglich. Ist die Frage wie präzise du das dann nachher brauchst.
Du kannst ja ganz einfach die aktuelle Mausposition abfragen. Da bekommst du eine XY Koordinate.
Frag die position einfach periodisch ab und dann schau wo sich die Maus befindet.
Teile dann den Bildschirm in Raster auf und schau ob sich die Position im Raster einach nur gerade nach oben/unten bzw Links/rechts befindet, dann drückst du nur "nach oben\rechts\usw". Wenn sich die Position auf der entsprechend anderen Achse auch verschoben hat, dann drückst du die zugehörige Taste. Vom Prinzip her nicht so schwer. Auf die Feinheiten kommts dann nachher halt an. Aber dazu ist deine Frage zu generell gestellt
145033
145033 13.08.2020 um 09:39:21 Uhr
Goto Top
Florian-I
Florian-I 13.08.2020 um 14:09:31 Uhr
Goto Top
Hallo
Es muss nicht allzu präzise sein.
Es sollte nur erkennen ob ich meine Maus nach oben/unten/links/rechts und eventuell auch in die Ecken bewege und das in einen Tastendruck umwanden können.
145033
Lösung 145033 13.08.2020, aktualisiert am 14.08.2020 um 09:41:05 Uhr
Goto Top
Kann die oben genannte Anwendung, oder man schreibt es sich schnell selbst, z.B. mit Powershell

Hier im Beispiel wird nur erkannt wenn man die linke Shift-taste gedrückt hält und dann die Geste ausführt.
Gesten: Vertikal nach oben, unten, links, rechts und alle 4 Ecken. Minimale Länge der Gesten und vertikale und horizontale Abweichungen für die Gesten kann mit den Variablen ab Zeile 4 gesteuert werden.
$w = (gcim win32_DesktopMonitor).ScreenWidth -1
$h = (gcim win32_DesktopMonitor).ScreenHeight -1

$minstrokelength_vertical = 100
$maxdeviation_vertical = 30
$minstrokelength_horizontal = 100
$maxdeviation_horizontal = 30

Add-Type -A System.Windows.Forms
Add-Type –MemberDefinition '  
[DllImport("USER32.dll")]public static extern short GetKeyState(int nVirtKey);  
' -name "tool" -namespace W32  


$last = [System.Windows.Forms.Cursor]::Position
while($true){
    $pos = [System.Windows.Forms.Cursor]::Position

    # only trigger when LEFT SHIFT button is pressed
    if ([W32.tool]::GetKeyState(0xA0) -band 0x8000){
        # recognize vertical stroke (downwards)
        if ([math]::Abs($pos.X - $last.X) -le $maxdeviation_vertical -and $pos.Y-$last.Y -ge $minstrokelength_vertical){
            "Down stroke detected"  
        }
        # recognize vertical stroke (upwards)
        if ([math]::Abs($pos.X - $last.X) -le $maxdeviation_vertical -and $last.Y-$pos.Y -ge $minstrokelength_vertical){
            "Up stroke detected"  
        }
        # recognize horizontal stroke (right)
        if ([math]::Abs($pos.Y - $last.Y) -le $maxdeviation_horizontal -and $pos.X-$last.X -ge $minstrokelength_horizontal){
            "Right stroke detected"  
        }
        # recognize horizontal stroke (left)
        if ([math]::Abs($pos.Y - $last.Y) -le $maxdeviation_horizontal -and $last.X-$pos.X -ge $minstrokelength_horizontal){
            "Left stroke detected"  
        }

        # corner detection
        switch($pos){
            (New-Object System.Drawing.Point 0,0) {"top left corner"}  
            (New-Object System.Drawing.Point $w,0) {"top right corner"}  
            (New-Object System.Drawing.Point 0,$h) {"bottom left corner"}  
            (New-Object System.Drawing.Point $w,$h) {"bottom right corner"}  
        }    
    }
    $last = $pos
    sleep 1
}
Florian-I
Florian-I 14.08.2020 um 01:08:53 Uhr
Goto Top
Vielen Dank @145033, das hilft mir schon einnmal sehr
Ist es mir dadurch auch möglich, zum bsp wenn ich nach links meine Maus ziehe, eine Taste automatisch drücken zu lassen solange ich meine Maus auch weiterhin bewege?
145033
145033 14.08.2020 aktualisiert um 09:43:59 Uhr
Goto Top
Ja, SendKeys ist dein Freund
(new-object -com wscript.shell).SendKeys("{ENTER}")  
https://docs.microsoft.com/de-de/office/vba/language/reference/user-inte ...