![]() |
JoyToAny - Alles mit dem Joystick
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:
Momentan ist auch eine API in arbeit (und ca 90% fertig), welche es ermöglicht, JoyToAny zu erweitern. Den sourcecode findet ihr auf ![]() ![]() Download gibt es ebenfalls auf der JoyToAny.tk homepage, aber für die faulen gibt es hier auch einen direkten link: ![]() Selbstgeschriebene Plugins könnt ihr über das Uploadformular auf ![]() 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:
|
Re: JoyToAny - Alles mit dem Joystick
Neue Version online.
Finds echt schade das es kein Feedback gibt, steckt einiges an arbeit drin. MfG |
Re: JoyToAny - Alles mit dem Joystick
Ich denke einfach mal, viele Leute haben keinen Joystick (mehr) ... so geht es zumindest mir - sorry :/
|
Re: JoyToAny - Alles mit dem Joystick
mit 'nem Gamepad geht das auch?
|
Re: JoyToAny - Alles mit dem Joystick
In Unit1 sind einige Unschönheiten.
Selbstgeschriebene Methoden sollten nicht mit den automatisch von der IDE generierten Methoden vermischt werden:
Delphi-Quellcode:
Und dann hast du noch eine ganze Ladung von globaler Variablen.
TForm1 = class(TForm)
Timer1: TTimer; .... // alles hier wird autom. generiert // Finger weg private { Private-Deklarationen } // HIER kommen eigene Variable und Methoden rein // zuerst die Variablen, dann die Methoden und zum Schluss evtl. noch Properties public { Public-Deklarationen } // falls nötig auch im Bereich public end; Diese Variablen gehören in den private-Abschnitt von TForm1. (zumindest so viele wie möglich) |
Re: JoyToAny - Alles mit dem Joystick
Zitat:
|
Re: JoyToAny - Alles mit dem Joystick
Zitat:
Ich habs nur mit der Mouse.dll versucht, da wär ne möglichkeit, die Mouse mit zusätzlichem Knopfdruck auf dem Gmaepad (die haben ja reichlich davon :mrgreen: ) schneller undlangsamer=präziser steuern zu können. Ein paar Labels haben in der Deutschen Version zu wenig Platz Übrigens ist "Quit" und "Leftclick performs a Leftclick", etc. nicht Deutsch :tongue: Weiter so, das wird noch was :cyclops: Edit: Fehlermeldung --------------------------- Application Error --------------------------- Exception EConvertError in module wincontrol.dll at 00007A16. --------------------------- OK --------------------------- Was soll man eigentlich in das Parameterfeld eintragen? :gruebel: Edit²: Wenn man in der RadioGroupBox den Modus ändert wird er im Menü nicht verändert, andersum aber schon :roteyes: |
Re: JoyToAny - Alles mit dem Joystick
Hui, gibt ja doch ein Feedback.
Also zuerst mal zur Frage obs mit GamePads auch geht, die schon gesagt, JA, es geht mit allem was windows unter GameController erkennt. Zu den unschönheiten von sx2008 ich habs mir zu herzen genommen, aufräumarbeiten sind im gange. danke! Zum Fehler von Sunlight7: Geh ich richtig in der annahme das du Windows Vista nutzt? Bei vielen macht die wincontrol da zicken. der Parameter ist optional, kommt drauf an bei welcher funktion du gefragt hast, aber bei Volume solltest du -vol WERT angeben, um joytoany zu sagen um wieviel du die lautstärke hoch oder runtersetzten möchtest. Und das das nicht deutsch ist weiß ich auch ;) nur find ichs schwachsinn das jede DLL eine languagefile haben sollte ;) MfG btw: neue version in arbeit, mit vielen neuen funktionen. |
Re: JoyToAny - Alles mit dem Joystick
Öhm ne, ich mach um Vista nen großen Bogen und hab XP mit SP2.
Ich hätt Gestern lust gehabt, etwas in der Mouse.dll rumzupfuschen, aber auf der oben angegebenen Projektseite von SouceForge hagelts nur Fehlermeldungen. |
Re: JoyToAny - Alles mit dem Joystick
Also ich fand die Idee von dem Progg genial (auch schon von den älteren Versionen :mrgreen: ).
Als ich dann aber dem Button1 eine Funktion zuweisen wollte eröffnete sich das erste Probleme er erkannte dauernd eine (für mich nicht sichtbare darum vermutlich minimale) Bewegung der R-Achse => Ich konnte Button 1 gar nicht anklicken da er immer wieder zu Achse R springt. Nach einer Weile (und viel Klebeband) habe ich es dann geschafft dass die R-Achse endlich ruhig hält. Als ich jetzt aber die Funktion PressKey in der Keboard.dll mit dem Parameter H setze und Button 1 drückte kam eine sehr "schöne" Fehlermeldung: Zitat:
MfG Mikescher __________________________________________________ __________________________ EDIT: Also die mouse.dll funktioniert und ist echt krass :coder: :mrgreen: (ich glaub ich werf meine maus weg :lol: ) __________________________________________________ __________________________ EDIT²: Was mir auch grad auffällt selbst mit deutscher Language File sind die Funktionsinformationen auf Englisch. __________________________________________________ __________________________ EDIT³: Ach ja und noch was :mrgreen: : Mit der Mouse.dll kann man das Programm (JoyToAny) nicht selbst beenden (ist igendwo verständlich aber auch ein wenig verwirrend :-D )Dieser Edit wurde allein mit dem Joystick gemacht :-D |
Re: JoyToAny - Alles mit dem Joystick
ja das SF spinnt hab ich auch gesehen, geh einfach auf
![]() @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:
Zitat:
Zitat:
MfG |
Re: JoyToAny - Alles mit dem Joystick
Zitat:
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 :mrgreen: 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 :) |
Re: JoyToAny - Alles mit dem Joystick
Liste der Anhänge anzeigen (Anzahl: 1)
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: ![]() |
Re: JoyToAny - Alles mit dem Joystick
Herrliches Tool :)
Danke dafür :thumb: 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 |
Re: JoyToAny - Alles mit dem Joystick
Liste der Anhänge anzeigen (Anzahl: 1)
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? :roll: 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 :mrgreen: Um diese Zeit bin ich zu bequem, die Funktionen aufzulisten, also hier ein Auszug :mrgreen:
Delphi-Quellcode:
Commands:Array[0..12] of String=('LeftClick', 'RightClick', 'LeftDoubleClick', 'SlowMouse', 'SpeedMouse', 'CenterCursor', 'SaveCursorPos', 'RestoreCursorPos', 'SetCursorPos', // Buttons
'MouseVertical', 'MouseHorizontal', 'MouseWheel', // Axis 'MouseMove'); // POV |
Re: JoyToAny - Alles mit dem Joystick
Eine andere Frage, nur zum Verständnis:
Was heißt .. von scratch neu geschrieben ? |
Re: JoyToAny - Alles mit dem Joystick
ich würde mal sowas vermuten > scratch,
auch wenn ich mal denk, das nicht gerade dieser scratch gemeint ist :roll: also "scratch" hatte mal was geschrieben und die haben es "nachgebaut" |
Re: JoyToAny - Alles mit dem Joystick
"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 :D |
Re: JoyToAny - Alles mit dem Joystick
Zitat:
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 ;) |
Re: JoyToAny - Alles mit dem Joystick
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:
Zitat:
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. |
Re: JoyToAny - Alles mit dem Joystick
kann man, sorry ;)
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
danke für die vorschläge! und wenn du nix dagegen hast werd ich im nächsten release dein mouseplugin mitliefern ;) wenn du willst kann ich auch den source (mit copyright natürlich) ins SVN repo laden! Werd ich in der 1.0 beachten (was den release allerdings ein klein wenig rauszögern wird ;)) |
Re: JoyToAny - Alles mit dem Joystick
Liste der Anhänge anzeigen (Anzahl: 2)
Solange ihr auf die neue Version wartet, hier noch 2 mehr oder weniger nützliche plugins:
JoyToAny.dll - Damit kann man diverse dinge in joytoany ändern (zum beispiel per joyticks zwischen den profile wechseln) foobar2000.dll - Damit kann man foobar2000 steuern Und hier noch was euch in der 1.0 erwartet: - Ein neuer zuweisungsbutton, welcher einen command für alle Profile setzt (nützlich für die SwitchProfile funktionen) - Leicht geänderte und verbesserte API (praktisch falls man JTA erweitern will oder per plugins steuern) - Einige Bugs wurden entfernt - Die Versionszahl hat sich geändert - Leerzeichen in den Prozedurnamen der Plugins werden unterstützt - Neue und überarbeitete Plugins - Und beim rest: lasst euch überraschen ;) MfG |
Re: JoyToAny - Alles mit dem Joystick
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich war jetzt mit nem
![]() Ich als Minimalistix hab das PlugIn nochmal optimiert und auf 18.5 KB zusammgestutzt :mrgreen: Das Ergebnis kann im Anhang bewundert werden. Von mir gibts keinen Open Source mehr, da ich die Copy & Paste Mendalität nicht weiter unterstüze, aber da ich das für JoyToAny gemacht hab und damit Ihr das in Euren PlugIns verwenden könnt is der Source mit dabei und Du darfst ihn veröffentlichen ;) U.a. hab ich die endlos lange GetParamValue Funktion optimiert, bei der es jetzt egal is, ob wer "-posx123-posy245" oder "-posx123 -posy245" eingibt. Übrigens sind Dinge wie "If BoolischeWert=True then" absolut Tabu ;) Viel freude damit ;) MfG, Sun PS: Sobald das Update draußen ist zum Testen werd ich das mit den Leerzeichen Updaten, ich hab da ja was von "-> DONE" gelesen :-D |
Re: JoyToAny - Alles mit dem Joystick
Vielen dank!
Den source MUSST du uns nicht geben ;) wir hätten dein plugin auch binär auf die jta seite gesetzt. Ja, das mit den leerzeichen funzt soweit, und auch vieles andere. MfG |
Re: JoyToAny - Alles mit dem Joystick
Ihr sollt ja daraus lernen und die anderen PlugIns danach selber optimieren :mrgreen:
|
Re: JoyToAny - Alles mit dem Joystick
du regst dich im source permanent über die groß und kleinschreibung auf. das dient einfach nur der problemvermeidung. lieber was einheitliches definieren als nacher von jedem 2. gesagt bekommen das der scheiss nicht funktioniert. ;). Frag mich aber auch warum DLL Aufrufe Case Sensitive sind...
|
Re: JoyToAny - Alles mit dem Joystick
Ich reg mich nur 2 mal auf ;)
Das Exporte Case sensetiv sind ist C++ Standard. Ich halte das für einen Fehler im Designkonzept, dem Programmierer zu zwingen alles klein zu schreiben, wobei es ein einfaches wäre mit ein paar Zeilen Code das Problem zu umgehen. Mach Deinem Namen alle Ehre und mach es hybrid :mrgreen: Beispiel:
Delphi-Quellcode:
Und schon kann jeder Programmierer in seiner üblichen schreibweise ungehindert Quelltext verfassen, es gibt ein kürzeres Tutorial und eine Fehlerquelle weniger ;)
function GetProcAddressCase(const hModule:HMODULE; const lpProcName:String):TFarProc;
begin // 1. Versuch mit originalem Namen Result:=GetProcAddress(hModule, PChar(lpProcName)); If Result<>nil then Exit; // 2. Versuch mit kleingeschriebenem Namen Result:=GetProcAddress(hModule, PChar(LowerCase(lpProcName))); If Result<>nil then Exit; // 3. Versuch mit FESTSTELLTASTEN Namen Result:=GetProcAddress(hModule, PChar(UpperCase(lpProcName))); If Result<>nil then Exit; // Den Programmierer über den Fehler informieren, Exportfunktion nicht vorhanden oder falsch feschrieben. // Ich gehe mal davon aus, das der Programmierer sein PlugIn testet und auf diese Meldung reagiert. ShowMessage(Format('Leider wurde der Export %s nicht gefunden, etc. pp', [lpProcName])); end; |
Re: JoyToAny - Alles mit dem Joystick
ne also für nen fehler halt ichs nicht, sondern einfach für ne klare aussage wies zu sein hat.
|
AW: JoyToAny - Alles mit dem Joystick
Liste der Anhänge anzeigen (Anzahl: 1)
Version: 0.5 schreibt eine fehlerhafte standard.prf.
(Nicht vorhandene Funktion in einer DLL: [info] exists=1 [POV] function= param= plugin=itunes.dll ) Folge: Absturz - Programm kann nur mit dem Taskmanager gekillt werden. Version: 0.6 liest die fehlerhafte Preference-Datei. Folge: Absturz - Programm kann nur mit dem Taskmanager gekillt werden. Die Extension "prf" ist schlecht gewählt, denn sie ist mit Outlook verknüpft. Aber glücklicherweise gibt es den Sourcecode - Vielen Dank dafür!!! |
AW: JoyToAny - Alles mit dem Joystick
hallo,
weiß ja nicht ob der Thread noch aktiv ist.... Aber ich komm damit überhaupt nicht klar... ich habe den Gamepad von der Playstation 2 dran und möchte auf einen Button das Enter legen, geht das? Aber ich kriege immer nur eine Fehlermeldung. Hat einer damit schon erfahrungen gemacht? Mfg wizoHulk |
AW: JoyToAny - Alles mit dem Joystick
Zitat:
Und bei was kommt diese? (also was genau machst du und wo) Schonmal versucht die entsprechende DLL zu debuggen? Nja, aktiv ist relativ ... Hybrid666 war zwar seit 3 Monaten nicht mehr online, aber das ist noch nicht besorgniserregend, abgesehn davon daß der Quellcode ja zur Verfügung steht. |
AW: JoyToAny - Alles mit dem Joystick
Moinsen,
sorry für die späte Antwort. Auf seite 2 glaube ich ist von JayEff ne anleitung, wies geht. Ich hab mich von delphi komplett zurückgezogen und das Projekt ist von meiner Seite her komplett auf Eis. Mich regt mein damaliger Programmierstil auf und außerdem programmiere ich fast nurnoch in C, C++ und Assembler. Dazu kommt noch, das ich eine sehr stark verbesserte version des Programms hatte (1.1), leider ist aber kurz vor dem SVN sync meine HDD abgeraucht und viel viel arbeit war grob gesagt im Anus ;). Falls jemand das Projekt übernehmen möchte, kann er das gerne tun, einfach mir ne Mail schreiben an Hybrid87@gmail.com Gruß Nidhoegger (früher Hybrid666) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz