AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte JoyToAny - Alles mit dem Joystick

JoyToAny - Alles mit dem Joystick

Ein Thema von Hybrid666 · begonnen am 10. Feb 2009 · letzter Beitrag vom 28. Feb 2012
Antwort Antwort
Seite 2 von 4     12 34   
Hybrid666
Registriert seit: 15. Jul 2006
Servus,

vielleicht erinnern sich einige an JoyMedia, welches ich vor sehr langer Zeit mal in Freeware veröffentlicht hab. Das Programm war verbuggt und hatte eine schlechte Joystick API. Nun hab ich mich mit einem kommolitonen zusammengesetzt und wir haben das Programm komplett von scratch neu geschrieben und es JoyToAny getauft.

Es hat weitaus weniger Bugs, erkennt alle Joysticks die Windows auch erkennt (nicht wie in JoyMedia, welches einige Joystick einfach mal nicht erkannt hat). Die Plugins funktionieren nun ohne Sharemem (also wird die borlandmm.dll nicht mehr gebraucht).

Und die beste änderung: Es ist opensource.

Hier mal eine kleine (unvollständige) featurelist:
  • Verbesserte Joystickerkennung
  • Erweiterbar durch Plugins
  • Winamp.dll zur steuerung von Winamp
  • Nemp.dll zum steuern von Nemp, einem von Gausi entwickelten, sehr guten Player
  • iTunes.dll hat zwar wenig funktionen, aber zum steuern reicht es
  • keyboard.dll mit der man Tastaturshortcuts auf das Gamepad oder den Joystick legen kann
  • mouse.dll welche die maus komplett über den Joystick steuerbar macht
  • wincontrol.dll (in die noch einige funktionen kommen werden) kann momentan die windows masterlautstärke ändern

Momentan ist auch eine API in arbeit (und ca 90% fertig), welche es ermöglicht, JoyToAny zu erweitern.

Den sourcecode findet ihr auf http://joytoany.sf.net/ und auf der website http://www.joytoany.tk/ findet ihr eine Dokumentation zum schreiben einiger Plugins (und bald auch zum nutzen der API).

Download gibt es ebenfalls auf der JoyToAny.tk homepage, aber für die faulen gibt es hier auch einen direkten link:
http://jayyeff.kilu.de/joytoany/downloads/jta05.rar

Selbstgeschriebene Plugins könnt ihr über das Uploadformular auf http://www.joytoany.tk hochladen, wir werden es uns dann ansehen und auf der seite veröffentlichen.

Ich hoffe das die version den usern hier nun mehr zusagt als JoyMedia. Viel Spaß damit!

MfG Hybrid666 & JayEff

P.S.: Hier noch das Changelog:
Zitat:
0.1 Beta
- ADDED: Joysticks get found via WinAPI (buggy)
- ADDED: Pluginsupport
- ADDED: Function mapping

0.2 Beta
- ADDED: Setup dialog
- ADDED: Info dialog
- ADDED: Axissetup
- ADDED: iTunes Plugin
- ADDED: playsoung Plugin
- ADDED: User can change the polling time
- ADDED: Chosen Joystick gets saved in ini file and selected on every new start
- ADDED: Startmode setting
- ADDED: Start in Tray function (buggy)
- BUGFIX: Deadzones got read wrong
- BUGFIX: CPU usage was too big
- BUGFIX: RAM usage was too big
- CHANGED: mouse.dll has now more parameters

0.3 Beta RC1
- ADDED: Deadzones now seperatly settable
- ADDED: getreaddeadzone for the plugins
- ADDED: More settings in the Setup dialog

0.4
- ADDED: Reload Plugin button (so the program doesnt need a restart after adding plugins anymore)
- ADDED: Languagesupport
- BUGFIX: TrayIcon bug
- BUGFIX: Program reacts on no joystick connected
- BUGFIX: Some minor bugs
- BUGFIX: DeadZones bug

0.5
- ADDED: Recallibrate Button (if joystick is messing around)
- BUGFIX: Configure messed some Axes up
- BUGFIX: Bug in the Languages
 
Hybrid666

 
Delphi 7 Personal
 
#11
  Alt 17. Feb 2009, 02:37
ja das SF spinnt hab ich auch gesehen, geh einfach auf www.sourceforge.net und gib in der suche joytoany ein, dann scheint alles zu gehen.

@mikescher: Das sollte eigentlich behoben sein, aber versuch einfach mal die deadzones anzuheben, falls es als slider definiert ist, definier es um als achse!

Und das mim keyboard ist klar, da muss was anderes reingeschrieben werden, es gibt da eine Funktion setkey oder so (sorry, das hat jayeff geschrieben, kenn mich da net 100% aus) und damit kannste dann die editbox editieren, einfach das setkey auf nen anderen button legen, den button gedrückt halten während du eine taste auf der tastatur drückst, dann wird der parameter korrekt gesetzt, geht auch mit kombinationen.
Zitat:
EDIT: Also die mouse.dll funktioniert und ist echt krass (ich glaub ich werf meine maus weg Laughing )
--> danke
Zitat:
EDIT²: Was mir auch grad auffällt selbst mit deutscher Language File sind die Funktionsinformationen auf Englisch.
--> ja, da ichs für sinnlos halte das jedes einzelne plugin ne languagefile braucht

Zitat:
EDIT³: Ach ja und noch was : Mit der Mouse.dll kann man das Programm (JoyToAny) nicht selbst beenden (ist igendwo verständlich aber auch ein wenig verwirrend Very Happy )Dieser Edit wurde allein mit dem Joystick gemacht Very Happy
--> ich kann mir selbst auch nicht erklären wieso, aber das einzige was bei mir damit nicht geht ist das minimieren

MfG
  Mit Zitat antworten Zitat
JayEff
 
#12
  Alt 17. Feb 2009, 02:49
Zitat von Hybrid666:
Und das mim keyboard ist klar, da muss was anderes reingeschrieben werden, es gibt da eine Funktion setkey oder so (sorry, das hat jayeff geschrieben, kenn mich da net 100% aus)
*einklink*
Also das funktioniert folgendermaßen:
in dem Moment, in dem die Funktion GetKey aufgerufen wird, werden alle gedrückten Tasten in einer für PressKey lesbaren weise ins Parameterfeld von JoyToAny geschrieben.
Man führt also folgende Schritte aus:

1. GetKey auf einen Button legen (Button "A" )
2. JoyToAny auf Active stellen
3. Einen Button in der Liste auswählen, der den Tastendruck durchführen soll, PressKey in der DropDown Liste auswählen
4. beliebige Tasten auf der Tastatur gedrückt halten und nun Button "A" drücken.

Im Parameterfeld sollte nun eine mit + getrennte folge von Buttons stehen Ein Klick auf "Set funktion to Control" beendet das Ganze.

Man sollte dazu sagen: Während man beliebige Tasten auf der Tastatur drückt, sollte das Edit Feld nicht den fokus haben. Wenn man Alt+F4 drücken will, sollte JoyToAny nicht den fokus haben
Schritt 4 kann auch in umgekehrter Reihenfolge durchgeführt werden, aber Button "A" muss losgelassen werden, bevor die Tasten auf der Tastatur losgelassen werden, sonst wird das Parameterfeld mit den Tasten die grad gedrückt werden, überschrieben, also mit garnix
  Mit Zitat antworten Zitat
Hybrid666

 
Delphi 7 Personal
 
#13
  Alt 17. Feb 2009, 02:56
was ich noch anfügen wollte:

Wenn ihr lust habt plugins zu schreiben (WIR SIND SEHR DANKBAR DAFÜR!) oder codeverbesserungen zu machen (auch dafür sind wir dankbar) dann gibbet hier ma eine vorab version von meinem plugin tutorial als PDF im anhang!

MfG

P.S.: Hier ein funktionierender SF link: http://sourceforge.net/projects/joytoany/
Angehängte Dateien
Dateityp: pdf plugintutorial_182.pdf (124,0 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
angos

 
Delphi 11 Alexandria
 
#14
  Alt 17. Feb 2009, 20:22
Herrliches Tool

Danke dafür

habs hier zuhaus auf meinem vista64 home premium problemlos ans laufen gebracht. das einzige was ich irgendwie nicht hin bekomme, ist das zuweisen von tasten über das keyboard plugin

[Edit] Wunschliste:
- Mausrad sollte im Mouseplugin konfigurierbar sein
- Mausgeschwindigkeit durch gedrückthalten einer Taste änderbar

Gruß
Ansgar
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

 
Delphi 5 Standard
 
#15
  Alt 18. Feb 2009, 02:46
Ich bau grad die Mouse.dll neu auf und hab ewig gesucht, warum da dauernd AVs kommen...
Muß das sein, wenn ich eine Funktion MouseMove nenne, das das Programm dann nach einem mousemove Export sucht?


Wenn man auf Funktion koppeln klickt, aber keine auswählt und dann im aktiven Modus diese betätigen will:
Fehlermeldung
---------------------------
JoyToAny
---------------------------
Access violation at address 00000000. Read of address 00000000.
---------------------------
OK
---------------------------



Edit:

So, hier das Ergebnis des komplett neu aufgebautem PlugIns zum betrachten, ich hoffe, es ist keiner abergläubisch, es sind 13 (mehr oder weniger brauchbare) Funktionen implementiert

Um diese Zeit bin ich zu bequem, die Funktionen aufzulisten, also hier ein Auszug
Delphi-Quellcode:
  Commands:Array[0..12] of String=('LeftClick', 'RightClick', 'LeftDoubleClick', 'SlowMouse', 'SpeedMouse', 'CenterCursor', 'SaveCursorPos', 'RestoreCursorPos', 'SetCursorPos', // Buttons
'MouseVertical', 'MouseHorizontal', 'MouseWheel', // Axis
'MouseMove'); // POV
Angehängte Dateien
Dateityp: zip sunmouse7_112.zip (26,7 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Micha88
 
#16
  Alt 18. Feb 2009, 11:49
Eine andere Frage, nur zum Verständnis:

Was heißt .. von scratch neu geschrieben ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#17
  Alt 18. Feb 2009, 12:01
ich würde mal sowas vermuten > scratch,
auch wenn ich mal denk, das nicht gerade dieser scratch gemeint ist

also "scratch" hatte mal was geschrieben und die haben es "nachgebaut"
  Mit Zitat antworten Zitat
JayEff
 
#18
  Alt 18. Feb 2009, 12:21
"von scratch" heißt "von grund auf", "scratch" im sinne von "skizze", also nochmal ganz von Anfang anfangen

Danke vielmals für das neue Mouse Plugin! Echt klasse, das engagement. Sobald ich mit Lernen auf die Info Prüfung fertig bin, werd ich's testen und bei uns auf die Seite packen
  Mit Zitat antworten Zitat
Hybrid666

 
Delphi 7 Personal
 
#19
  Alt 18. Feb 2009, 14:21
Zitat von Sunlight7:
Ich bau grad die Mouse.dll neu auf und hab ewig gesucht, warum da dauernd AVs kommen...
Muß das sein, wenn ich eine Funktion MouseMove nenne, das das Programm dann nach einem mousemove Export sucht?


Wenn man auf Funktion koppeln klickt, aber keine auswählt und dann im aktiven Modus diese betätigen will:
Fehlermeldung
---------------------------
JoyToAny
---------------------------
Access violation at address 00000000. Read of address 00000000.
---------------------------
OK
---------------------------



Edit:

So, hier das Ergebnis des komplett neu aufgebautem PlugIns zum betrachten, ich hoffe, es ist keiner abergläubisch, es sind 13 (mehr oder weniger brauchbare) Funktionen implementiert

Um diese Zeit bin ich zu bequem, die Funktionen aufzulisten, also hier ein Auszug
Delphi-Quellcode:
  Commands:Array[0..12] of String=('LeftClick', 'RightClick', 'LeftDoubleClick', 'SlowMouse', 'SpeedMouse', 'CenterCursor', 'SaveCursorPos', 'RestoreCursorPos', 'SetCursorPos', // Buttons
'MouseVertical', 'MouseHorizontal', 'MouseWheel', // Axis
'MouseMove'); // POV
Also, im tutorial steht das drin, aber ich weiß net obs so ganz verständlich ist:

Alle Funktionsnamen und die exports müssen KOMPLETT lowercase sein, in getbuttonfunc usw (also im returnwert) könnt ihr groß und kleinschreibung machen wie ihr wollt (das zeigt joytoany dann auch so an) da der returnwert beim aufruf nacher sowieso zu lower konvertiert wird.

Also einfach alle funktionsnamen und exports kleinchreiben im code!

MfG

P.S.: Von Scratch iss son ausdruck, es ist komplett neu geschrieben, ich hatte davor ja JOyMedia hier in Freeware veröffentlicht und anstatt das zu verbessern und alles bugs rauszumachen, haben JayEff und ich lieber nochmal neu angefangen, JoyMedia ist von der struktur her, naja, sehr bescheiden. in joytoany haben wir z.B. das sharemem problem,welches joymedia hatte auf die reihe bekommen usw.

P.P.S:
Ein neues Plugin ist verfügbar, joytoany.dll. Momentan leider nur als source auf dem SVN server der sourceforge seite. Wenn man mehrer Profile in JoyToAny hat kann man damit per tastendruck die Profile wechseln. Und bald ist die 1.0 von joytoany fertig! viele viele neue funktionen und viel viel weniger bugs
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

 
Delphi 5 Standard
 
#20
  Alt 18. Feb 2009, 15:27
Ich hatte das so aufgefasst, das nur die fixen Exoprte klein zu schreiben sind, denn Sinn, das PlugIn eigene Funktionen auf kleinschreibung getrimmt werden verstehe ich nicht.

Zitat von Tutorial:
Im Returnwert muss kann man die Prozedurnamen der
Übersichtlichkeit halber groß schreiben, ...
Muß man, oder kann man?

Zitat von Tutorial:
Was ihr des weiteren beachten solltet ist das export am
Ende jedes Prozedural, welches angibt, das diese Funktion von außen aufrufbar sein soll (alle nicht
exportierten Funktionen und Prozeduren sind dann DLL intern und können von außen nicht
aufgerufen werden).
Export kann man angeben, muß aber nicht, da sowieso über die Exports Klausel am Ende exportiert wird.


Im Tutorial wird oft GetParamValue verwendet, aber nicht erklärt, wo das herkommt

Wunschliste:
- Leerzeichen in der getbuttonfunc etc. erlauben, sieht für den Anwender in der ComboBox dann schöner aus, kannste ja im Programm rausfiltern.
- Eine Versionsangabe ins PlugIn übergeben, bzw. dessen Version abfragen. Hilft Dir später bei PlugIn erweiterungen
- Eine ID für die ausgewählte Sprache, so kann man die Infos m PlugIn mehrsprachig gestallten, ersparrt eineextra .lng Datei
- Verwende im Tut Konstanten für State, das machts für Anfänger leichter lesbar, zb ButtonDown=0; ButtonPressed=1; ButtonUp=2;
- Einen Init Aufruf des PlugIns, in dem dann gleich Version und Sprch ID etc. übergeben werden.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 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