Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Gesture - Mausgestenerkennung (https://www.delphipraxis.net/17703-gesture-mausgestenerkennung.html)

OrallY 8. Mär 2004 18:37


Gesture - Mausgestenerkennung
 
Hi Community,

ich will nun eine Pre-Alpha-Version meines aktuellen Projektes vorstellen. Das auf den Namen "Gesture" hörende Programm erkennt Mausgesten, die vom Benutzer festgelegt werden, um dann verschiedene Aktionen auszuführen. Bei dem Programm sind keine Gesten vorgegeben sondern der Benutzer muss erst eine Referenzgeste zeichnen, um sie benutzen zu können.
Das Zeichnen findet bei gedrückter rechter Maustaste direkt auf dem Desktop statt. Auf die Optionen des Programms kann über ein selbstentwickeltes Ringmenü (was leider noch nicht ganz ausgereift ist) zugegriffen werden.

Wie man Gesture bedient ist in der Readme zu lesen:

Zitat:

Zitat von Readme.txt
[...]
Wenn das Programm gestartet wurde, nisstet es sich im Systray ein. Ab jetzt kann man bei gedrückter rechter Maustaste überall auf dem Bildschirm malen. Hast du eine Geste gemalt, die du speichern willst, drückst du nachdem du die rechte Maustaste losgelassen hast die mittlere Maustaste. Es öffnet sich ein Ringmenü und du musst "aktuelle Geste speichern" mit der linken Maustaste auswählen (bei nochmaligem Drücken der mittleren wird das Ringemenü ohne Änderungen geschlossen).
Wenn du jetzt die Geste nochmal zeichnest und sie erkannt wird, ploppt eine Dialogbox auf, wo die Nummer der erkannten Geste steht. Bei Nichterkennung ist die Nummer -1.
Um Gesture zu beenden einfach die entsprechende Option im Ringemenü auswählen oder über das Traypopupmenü.
[...]

http://mokasin.de/projects/Gesture/Gesture.zip (27KB)
Voraussetzungen: Windows NT, 2k, XP (da LowLevelMouseHook), eine Maus würde sich auch anbieten :mrgreen:

Bitte ausführlich die Mausgestenerkennungsengine testen. Natürlich bieten sich einfache, leicht zu wiederholende Gesten an :wink:.

Wie schon gesagt, ist noch eine Alpha, würd mich über konstruktive Kritik, Verbesserungsvorschläge und sonstiges Feedback freuen.

Sanchez 8. Mär 2004 18:47

Re: Gesture - Mausgestenerkennung
 
Hallo,

Bei mir musste gleich nach 3-4 gespeicherten Gesten das Programm beendet werden. Mehr Stand dort auch nicht. Vor dem Ende hab ich letzte Geste Anzeigen gesagt, wobei den keine Geste gezeichnet wurde.

Außerdem ist mir aufgefallen, dass er mir nur einen kleinen Teil der Geste aufmalt, wenn ich die letzte Anzeigen will. Meine Gesten waren meistens Linien über 1/4 Desktop mit nem Knick drinne, oder ein Halbkreis.

OS: WinXP pro SP1

Die Gesten lassen sich noch keinen Aktionen zuordnen, oder?

grüße, daniel

fkerber 8. Mär 2004 18:57

Re: Gesture - Mausgestenerkennung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!

Was machen Leute ohne mittlere Maustaste?

Das Programm ist nach dem Löschen aller Gesten und dem Klick auf Beenden im Ringmenü ziemlich unsanft abgeschmiert.

Ungut fand ich die Anzeige der letzten Geste, weil:

a) wie ist unvollständig (siehe Anhang, gezeichnet wurde die rote (also von mir) angezeigt wurde nur noch das weiße
b) das weiße geht erst weg, wenn ich ein anderes Fenster drüberziehe, damit der Desktop neu gezeichnet wird.


Ciao fkerber

H4ndy 8. Mär 2004 19:36

Re: Gesture - Mausgestenerkennung
 
An sich funzt das Programm schon gut,
muss mich aber den Vorreitern anschliessen,
dass "letzte Geste zeichnen" nur ca. einen
10cm langen Teil zeichnet, welcher nicht wieder
gelöscht wird.

Sonst aber schon irgendwie lustig damit rumzuspielen =)
Wurdest bestimmt von Black&White inspiriert ^^

OrallY 8. Mär 2004 20:05

Re: Gesture - Mausgestenerkennung
 
Danke erst mal für die Antworten.

Ja, stimmt, das "letzte Geste zeigen Feature" hatte ich noch nicht fertig implemenitiert. Ein weiterer Eintrag in der Todo-List.

@Sanchez Wenn ich dich richtig verstanden habe, dann ist das Prog abgekackt, nachdem du "letze Geste zeigen" aufgerufen hast?

Zitat:

Zitat von Sanchez
Die Gesten lassen sich noch keinen Aktionen zuordnen, oder?

Ja, das ist korreckt. Ich wollte ersteinmal die Erkennungsengine fertig machen. Ich hab vor das Programm Plugingfähig zu machen, sodass praktisch eine x-beliebige Anzahl an Aktionen ausgeführt werden können. Denkbar sind z.B.: Programmspezifische Funktionen über simulierte Hotkeys, Browser öffnen, Datei suchen, aktives Programm schließen, usw. Ich werden auf jedenfall Aktionen selbst vorgeben, aber werde jedem über Plugins eine Erweiterung ermöglichen.

Auch ein Ziel bei dem Programm war, es möglichst klein zu halten. Momentan ist die ungepackte EXE 39KB (UPX) groß womit ich sehr zufrieden bin. Ok, mag vielleicht sinnlos klingen, bei der Größe UPX zu benutzen, aber es kommt auf jeden KB ;).

@H4ndy Jupp, stimmt genau ;). Fand das ungemein praktisch und dachte mir, hey, warum nicht auch für den Desktop :).
Hab einige Zeit gebraucht, bis ich die die Erkennung designed habe. Zum einen wollte ich dem Benutzer ermöglichen, dem Programm Gesten "beizubringen" und zum anderen wollte ich die Daten von Gespeicherten Gesten klein halten. Bis ich ein System gefunden hatte, welches eine solche Dynamik zuließ, hat das schon ne Weile gedauert.
Jetzt ist nur die Frage, wie es mit der Erkennung aussieht, wenn ich nicht selbst Gesten zeichne.


Wie findet ihr denn die Idee mit dem Kreismenü? Ich dachte mir, dass es die Bedienung schneller und interessanter macht.

Nico1 8. Mär 2004 20:08

Re: Gesture - Mausgestenerkennung
 
ARGH WIE HAST DU DAS GEMACHT???

ich such nach dem Code nach nem halben jahr (auch hier schon gefragt :D ) .... könntest du mir das Prinzip erklären bittebittebitte

Michael Leyhe 8. Mär 2004 20:09

Re: Gesture - Mausgestenerkennung
 
HI

Diese Alphaversoin ist ein schönes spiel wenn man langeweile hat :-D

Gibt es irgendeine Begrenzung von Wegen der Länhge der zurückgelegten Strecke? Der zeigt nicht alles an was ich ihm gesagt habe :cry:

Da kann man viel raus machen :thuimb:

OrallY 8. Mär 2004 20:18

Re: Gesture - Mausgestenerkennung
 
Ja, man kann nicht ewig lange Gesten zeichnen. Da die Punkte in einem Statischen Array gespeichert werden, muss diese Grenze sein. Wenn du allerdings auf "letzte Geste zeigen" anspielst, da sagte ich ja schon, dass ich vergessen hab, das benutzungstauglich zu machen.

@Nico1 Kann dir gerne erklären, wie ich das gemacht habe. Allerdings nicht mehr heute :wink:. Das Konzept hat mich auch einige Zeit gekostet.
Wenn interesse besteht, kann ich das fertige Programm auch OpenSource machen (wobei ich vor meinem Programmdesign warnen will, was sicherlich einige Optimierungen nötig hätte :wink:).

Phoenix 8. Mär 2004 20:36

Re: Gesture - Mausgestenerkennung
 
Das wäre klasse.

@Nico: Der Browser Mozilla Firefox (ehemals Firebird, davor Phoenix) kann genauso wie Mozilla selber auch um Mausgesten erweitert werden.

Einige dieser Mausgesten PlugIns sind bereits Opensource, von daher kannst Du auch da nachgucken.

Nico1 8. Mär 2004 20:48

Re: Gesture - Mausgestenerkennung
 
THX ;)

Plague 8. Mär 2004 21:36

Re: Gesture - Mausgestenerkennung
 
Hi,

also die Idee gefällt mir wirklich super gut!
Wenn du deinem Programm noch eine gewisse Toleranz gibst, könnte es
1. klappen
2. erfolgreich werden

Viel Glück ;)
Thomas

OrallY 9. Mär 2004 14:31

Re: Gesture - Mausgestenerkennung
 
Ich habe jetzt ein kleines Problem bei der Erkennung gelöst. Ein paar unterschiedliche Gesten wurden falsch erkannt, z.B. S und I oder eine breite Ellipse und ein Kreis.

http://mokasin.de/projects/Gesture/Gesture.zip (28KB)

Ich hab mir überlegt, ne Scriptsprache für die Aktionen zu nutzen, kennt jemand eine mächtige Scriptsprache, die ich benutzen könnte?

Wie funktionierts mit der Erkennung?

//Das oben beschriebene Problem scheint noch nicht ganz gelöst worden zu sein.

OrallY 9. Mär 2004 16:15

Re: Gesture - Mausgestenerkennung
 
Problem gelöst.

zecke 9. Mär 2004 16:42

Re: Gesture - Mausgestenerkennung
 
respect die idee ist sehr sehr nais und wenns funktioniert wie es soll - verdammt gut =)

ich zeichne eine geste und sobald ich die rechte maustaste wieder loslasse kommt schon diese meldung :/ fehlermeldung.

also laut readme soll man erst mit der rechten zeichnen und dann loslassen. dann halt mittlere taste (was ja nicht jeder hat aber ich schon ;)) aber dazu komme ich ja nicht eben wegen der meldung.


idee = :thuimb:
wenn funktioniert = :thuimb:
noch bisschen :gruebel: dann programm :cyclops:+:thuimb:


^^ mfg :hi:


ps: OS=WinXP prof

fkerber 9. Mär 2004 16:50

Re: Gesture - Mausgestenerkennung
 
Hi!

Soweit ich das verstanden habe ist das keine Fehlermeldung. Er sagt dir nur, dass er diese Geste noch nicht kennt. Wenn du jetzt mit der mittleren Maustaste klickst und die Geste speicherst dann wird in dem Feld, wenn du die Geste das nächste Mal zeichnest die Nummer stehen, unter der die Geste gespeichert ist.

Ciao fkerber

zecke 9. Mär 2004 16:58

Re: Gesture - Mausgestenerkennung
 
:oops: ok das möge richtig sein, allerdings drücke ich alle ehm moment *zähle* alle sieben tasten der maus, aber nirgends erscheint eine menu mit speichern etc. von daher merke ich vom programm erstmal so nur diese meldung (maus=mx700)

fkerber 9. Mär 2004 17:03

Re: Gesture - Mausgestenerkennung
 
Hi!

Bei der Taste, die die Funktion der mittleren Taste ausführt sollte eigentlich ein Ringmenü erscheinen mit "Speichern", "Beenden" und ich glaube "letzte anschauen".

Also bei mir ging das fehlerfrei.


Ciao fkerber

OrallY 9. Mär 2004 17:44

Re: Gesture - Mausgestenerkennung
 
Wie fkerber sagte, dass ist keine Fehlermeldung. Später wird die Dialogbox natürlich ersetzt ;).

OrallY 9. Mär 2004 18:10

Re: Gesture - Mausgestenerkennung
 
Erkennung weiter verbessert. Das eine Geste als eine andere erkannt wird, dürfte ausgemerzt sein.

http://mokasin.de/projects/Gesture/Gesture.zip (28KB)

zecke 9. Mär 2004 19:11

Re: Gesture - Mausgestenerkennung
 
ja das es kein fehler ist is nun klar, aber trotzdem erscheint bei allen tasten meienr maus kein menu

mfg

moritz 9. Mär 2004 19:22

Re: Gesture - Mausgestenerkennung
 
Zitat:

Zitat von OrallY
@Nico1 Kann dir gerne erklären, wie ich das gemacht habe. Allerdings nicht mehr heute :wink:. Das Konzept hat mich auch einige Zeit gekostet.
Wenn interesse besteht, kann ich das fertige Programm auch OpenSource machen (wobei ich vor meinem Programmdesign warnen will, was sicherlich einige Optimierungen nötig hätte :wink:).

Hm... Stimmt :cyclops:
Und viele viele Zeichnungen.... :roll:

Meine Meinung zu dem Programm kennst du ja :thuimb:

Gruß,

Aenogym 10. Mär 2004 14:31

Re: Gesture - Mausgestenerkennung
 
Also da steckt echt potenzial drin!
:thuimb:

Und das mit der OpenSource-Idee wäre nicht schlecht :wink: , ich mach nämlich grad ein Prog, in dem sich so eine Mausgestenerkennung sehr gut machen würde!

(Ich hab sowas auch schonmal versucht, nach der 7. Woche hab ich aber aufgegeben...)

Aenogym

OrallY 10. Mär 2004 16:26

Re: Gesture - Mausgestenerkennung
 
So, noch ein Update. Erkennungsengine etwas umgeschrieben.
Sonstige Änderungen:
  • Ringmenü aus dem Systraymenü aufraufbar
  • im Ringmenü neuer Eintrag um Bildschirm zu säubern, falls noch "Gestenrückstände" zu sehen sein sollten
http://mokasin.de/projects/Gesture/Gesture.zip (28KB)

braingrenade 10. Mär 2004 17:02

Re: Gesture - Mausgestenerkennung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Klasse Teil !

Bei mir funzt alles optimal , die gesten erkennt er auch zuverlässig,
aber wenn ich das ringmenu öffne und auf beenden klicke gibt's nen Feheler (siehe Anhang)

Aber Das Programm hat echt ein riesen Potential , weiter so !

moritz 10. Mär 2004 17:24

Re: Gesture - Mausgestenerkennung
 
Tach,

dieser Fehler tritt bei mir auch auf. Und: Du solltest die Gestengröße beschränken, weil irgendwann hat das ja keinen Sinn mehr :)
Ich hab mal 30 Sekunden gemalt, und dann ist mir das Programm abgestürzt. Also wie gesagt, beschränk das mal etwas.

Gruß

fkerber 10. Mär 2004 17:32

Re: Gesture - Mausgestenerkennung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!

Bei mir kommt beim Beenden ebenfalls ein Fehler (s. Anhang)

Das mit dem Abstürzen nach 30 sek zeichnen ist bei mir nicht aufgetreten. Nach einiger Zeit hat er einfach nicht mehr weitergezeichnet und die Geste als "unbekannt" gemeldet, also alles normal.


Ciao fkerber

OrallY 10. Mär 2004 19:44

Re: Gesture - Mausgestenerkennung
 
Fehler bei Beenden über Ringmenü behoben und Erkennsengine etwas verändert.
Außerdem Länge der Geste noch weiter begrenzt.

http://mokasin.de/projects/Gesture/Gesture.zip (28KB)

fkerber 10. Mär 2004 19:50

Re: Gesture - Mausgestenerkennung
 
Hi!

Konnte keinen Fehler finden :thuimb:

Was ich vermisse: "Zeige letzte Geste"

Hast du das bewusst rausgenommen?


Ciao fkerber

OrallY 11. Mär 2004 17:00

Re: Gesture - Mausgestenerkennung
 
So, noch ein Update!

http://mokasin.de/projects/Gesture/Gesture.zip (ca. 28KB)

Bug, beim schnellen Zeichnen von zu langen Gesten behoben.

Außerdem noch ein bisschen an der Engine rumgefummelt. Worauf ich hinaus wollte, kann hier: http://www.delphi-forum.de/viewtopic.php?t=22947 nachgelesen werden. Peter Lustig wies mich auf ein Problem hin, was ich versuche einzuschränken.
Das Problem war, dass ein schmahles S als ein Strich von Oben nach Unten und umgekehrt erkannt wurde. Ich habe das ein wenig eingrenzen können, bis zu einem gewissen Grad. Wenn das S zu schmahl wird, ist es einem Strich zu ähnlich um es im Rahmen der Erkennungstoleranz aus der Welt zu schaffen. Doch da weitere Probleme dieser Art nicht bekannt sind, denke ich, dass dieses Problem keine hohe Priorität hat.
Allgemein rate ich, dass man nicht zwei sehr ähnliche Gesten nicht gleichzeitig verwenden sollte.

Falls die aktuelle Erkennungstoleranz Probleme macht, bitte melden.

Zitat:

Zitat von fkerber
Was ich vermisse: "Zeige letzte Geste"
Hast du das bewusst rausgenommen?

Ja, da ich diese Funktion erst richtig implementieren muss. Ich überleg mir noch, wie genau ich das mache.

M-O-D 11. Mär 2004 17:21

Re: Gesture - Mausgestenerkennung
 
Hallo,

erstmal keine schlechte Idee, aber auch ich hab da ein kleines problem mit der mittleren Maustaste.

1. Ich hab ne programierbare Maus und bekomme das Menü "Geste speichern" nie zu Gesicht da auf der mittleren Maustaste eine andere Funktion als normaler weiße liegt
2. so schnell wie die Fehlermeldung "Geste nicht erkannt" aufpoppt kann ich teilweiße garnich reagieren(liegts an mir :gruebel: ). Nach loslassen der rechten Taste verschwindet die Geste teilweise so schnell, da ich garnicht mehr drücken kann!

Mehr kann ich leider nich sagen....

:hi:

OrallY 11. Mär 2004 17:35

Re: Gesture - Mausgestenerkennung
 
Zitat:

Zitat von M-O-D
Hallo,

erstmal keine schlechte Idee, aber auch ich hab da ein kleines problem mit der mittleren Maustaste.

1. Ich hab ne programierbare Maus und bekomme das Menü "Geste speichern" nie zu Gesicht da auf der mittleren Maustaste eine andere Funktion als normaler weiße liegt

Du kannst das Ringmenü auch über das Kontextmenü des TrayIcons aufrufen.

Zitat:

Zitat von M-O-D
2. so schnell wie die Fehlermeldung "Geste nicht erkannt" aufpoppt kann ich teilweiße garnich reagieren(liegts an mir :gruebel: ). Nach loslassen der rechten Taste verschwindet die Geste teilweise so schnell, da ich garnicht mehr drücken kann!

Mehr kann ich leider nich sagen....

:hi:

Ich verstehe nicht, was du damit sagen willst. Es ist normal, dass sobald du die rechte Maustaste loslässt, die Geste wieder vom Bildschirm verschwindet. Die Geste ist noch so lange im Speicher, bis eine neue gezeichnet wird. Das heißt, wenn du eine Geste zeichnest und dann die rechte Maustaste losgelassen hast, kannst du in Ruhe das Ringmenü aufrufen und die entsprechene Auswahl treffen.
Wie schon gesagt, ist im fertigen geplanten Programm die Taste für den Aufruf des Ringmenüs frei wählbar.

OrallY 24. Mai 2004 16:01

Re: Gesture - Mausgestenerkennung
 
Aufgrund eines Crashs und einigen dummen Zufällen habe ich all meine Daten verloren. Dazu gehören auch die Quelldateien von Gesture. Aus diesem Grund ist es mir nicht mehr möglich es weiter zu entwickeln.

Wen dies jetzt traurig stimmt (man kann ja mal hoffen :mrgreen:), dem soll gesagt sein, dass ich Gesture nocheinmal neu schreiben werde. Außerdem wird Gesture OpenSource. Vielleicht findet sich ja jemand, der es sich mal zur Brust nimmt und im Alleingang oder mit mir zusammen das ein oder andere verbessert, dies ist jedenfalls meine Hoffnung.

Doch bis dahin dauert es noch eine Weile, Gesture "Reloaded" muss ja ersteinmal geschrieben werden. :)


Ich belasse die alte Version noch eine Weile auf meinem Server. Wer also noch interesse hat, kann es sich unter dem schon bekannten Link downloaden.
(http://mokasin.de/projects/Gesture/Gesture.zip).


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz