Post by Tobias ClarenPost by AndreasNaja, unterbringen lassen sich die paar Bauteile sicher in einer Röhre, nur
vermutlich nicht auf der Originalplatine des Joypads. Und wenn du mehrere
Stabtasten verwenden wolltest, wäre es sowieso günstiger nicht in jeden
einen eigenen Kontroller einzubauen.
Ja, wenn ich ein Gamepad verwenden würde mit Sicherheit.
Habe ich dran vorbeigedacht. Für jeden Taster eine Klinkenbuchse in das
Gamepad einbauen.
Dann müssen alle eine Tastatur für schriftliche Lösungen nutzen.
Da wäre der nächste Punkt mit Tastatur (an der dann je ein Buzzer hängt) für
jeden komfortabler.
Verstehe ich nicht so ganz. Was hat der Buzzer mit der Tastatur bzw. der
Schnittstelle, an der er angeschlossen ist, zu tun? Was sollte einen also
davon abhalten, auch hier mehrere Tastaturen zu verwenden. Eigentlich würde
mir diese Version sogar besser gefallen. So kann man ein Gamepad mit n
Buchsen versehen und fertig. Am besten würde man die Gamepad-Platine in ein
anderes Gehäuse packen, damit man die Buchsen auch schön reinbekommt und es
nicht so doof aussieht. (Und jeder Spieler könnte seine normale Tastatur
mitbringen...) Andernfalls müsstest du ja alle Tastaturen anbohren und dran
rum basteln.
Post by Tobias ClarenPost by AndreasAuch ist es möglich die Messages abzufangen, bevor sie eine Anwendung
erreichen und bei Bedarf einen anderen KeyKode weiterzuleiten, so dass beim
Programm eine andere Taste ankommt als wirklich gedrückt wurde. (s.
SetWindowsHookEx, gibt aber auf fertige Programme für so was)
(...)
"SetWindowsHookEx"? Ist das was in der Registry?
"fertige Programme"? Ist da eines bekannt?
Für den Fall, dass du es noch nicht in Google nachgesehen hast ;-)
Es hat nichts mit der Registry zu tun. SetWindowsHookEx ist eine Funktion
der Windows-API.
Sich das näher anzusehen wäre also nur interessant, wenn man selbst was
programmieren wollte - wird vermutlich nicht bei der Suche nach einem
fertigen Programm helfen (wobei es sicher auch noch andere Möglichkeiten
gibt, die Tastenbelegung zu vertauschen). Mit SetWindowsHookEx (und dem was
sonst dazugehört) kannst du die Nachrichten von Windows mithören bzw.
verändern. Und die Tastatureingaben (u.a.) werden eben über Messags an die
einzelnen Anwendungen weitergegeben.
Post by Tobias ClarenPost by AndreasAber du hättest dann auch das Problem, dass wenn einer seine Lösung eingeben
will, ein anderer auf seiner Tastatur auch was eingeben kann - und schon
stimmt die Lösung des anderen nicht mehr.
Ja, das stimmt.
Aber das fiele wohl auf bzw. dafür muss man schon "betrügerische Energie"
haben :-D .
Ach, das kann doch ganz versehentlich mal passieren ;-)
Aber unter Win-XP könntest du das (denke ich mal) mit einem "normalen"
Programm umgehen - wenn du denn doch mal Lust haben solltest, etwas
Programmieren zu lernen.
Mit "normal" meine ich hier eine Anwendung, also keinen Treiber. (Letzteres
wäre natürlich auch möglich, aber auch nicht gerade einfacher.)
Prinzipiell würden mir da (normales Programm) zwei Versionen einfallen:
1.) (diverse Win-Versionen) Die Tastaturen werden so angeschlossen, dass sie
Windows nicht als Tastatur erkennt und man die Daten selbst auslesen muss.
Bei ner Seriellen Maus ist das einfach, ob es einfach / wie es überhaupt bei
USB-HIDs (Human Interface Device) geht, weiß ich nicht. (Ja, und dann
natürlich noch ne Version mit PS2 Tastaturen und nem eigenen
Mikrocontroller...)
2.) (Win-XP) Die Tastatureingaben kommen über Messages beim Zielprogramm an,
man kann WM_INPUT Messages "abonnieren", über die man erfährt, von welchem
Device die Eingabe stammt (die Message bekommt ein Programm aber
offensichtlich nur, wenn es den Eingabefokus hat) ~> Man muss das
Zielprogramm um die entsprechende Funktionalität erweitern, also dafür
sorgen, dass der neue, selbstgeschriebene Code vom Zielprogramm aufgerufen
wird, nachdem man ihn in dessen Speicherbereich verfrachtet hat. Dieser Code
würde also einmal die WM_INPUT Messages "abonnieren", diese Messages dann
auch verarbeiten und zusätzlich Tastatureingabe-Messages abfangen. Das
könnte man nun wieder mit SetWindowsHookEx machen.
Ziel: Der eigene Programmteil bekommt alle Tastatureingaben und kann dessen
Herkunft unterscheiden. Nach dem Drücken eines Buzzers (eventuell müsste man
diese Auswertung auch noch integrieren) leitet der Programmteil nur noch die
Eingaben der zugehörigen Tastatur weiter, nicht aber die der anderen.
Jo, dürfte machbar sein. Ob es eine "elegantere" Version gibt, weiß ich
nicht.
Post by Tobias ClarenPost by AndreasPost by Tobias ClarenWenn man bei den Tastauren auch die Belegung der Tasten frei belegen
könnte,
Post by Tobias Clarenkönnte man den Buzzerknopf je nach Anwendung frei auf die Tasten legen.
Gibt
Post by Tobias Clarenes Software um das zu machen?
Ja, gibt solche Programme.
Und nein, ich kenne jetzt gerade keinen Namen oder Link zu einem.
Also nicht :) .
Ne, ich hatte vor längerem mal so ein Programm verwendet, daher weiß ich,
dass es das auch fertig gibt, hab es aber schon lange nicht mehr im Einsatz.
Man dürfte da aber sicher was finden:
[Such]
KeyMapper: http://www.dev2k.de/page.php?9
[Such: Gamepad Tastatureingabe emulieren (gamepad emulate keystrokes)]
Pinnacle Game Profiler 2.6
http://www.itlocation.com/en/software/prd65272,,.htm
(^ Ja, da ist wirklich ,,. im Link)
NeTo Game Profiler FX http://www.tucows.com/preview/376714
(Getestet hab ich keines von denen)
Post by Tobias ClarenPost by AndreasWenn dein PC nen Gameport hat, kannst du auch ganz einfach bis zu vier
Tasten anschließen. Du musst dann nur noch die Analogeingänge auf 5V legen
und schon kannst du den Standardtreiber für analoge Joysticks verwenden.
Programme die dann eine beliebige Tastatureingabe simulieren gibt es auch
(kenne jetzt aber auch keine Namen).
(Noch mehr Tasten wären auch möglich, nur ob man dann ein fertiges Programm
findet, das die Eingaben entsprechend interpretiert, weiß ich nicht)
http://www.epanorama.net/documents/joystick/pc_joystick.html
Ich wüsste nicht, dass es PCs ohne Gameport gibt.....
Zumindest als Pins auf dem MB. Evtl. nur wenn Sound onboard ist.
Oder auf der Soundkarte.
(z.B. Laptops)
Naja, dann würde ich wohl die Schalter direkt am Gameport anschließen
(alleine schon aus dem Grund, dass ich noch nen passenden Stecker rumliegen
habe und mir andernfalls ein Gamepad kaufen müsste).
Du solltest nur darauf achten, dass du die 5V nicht (versehentlich) direkt
auf GND legst. Das ist nämlich keine Datenleitung mit nem großen Widerstand
davor sondern auch als Versorgunsspannung gedacht. Bei einem Kurzschluss
könnte da also was kaput gehen.
(Bin nur gerade am Überlegen, ob die zeitliche Auflösung hier schlechter als
bei Tastatur oder USB-Gamepad ist, und ob die der Tastatur besser als die
der übrigen ist. Der Gameport muss ja von der CPU abgefragt werden. Dabei
bekommt man den Status aller Tasten. Die Abfrage der anderen Devices
übernimmt ein eigener Mikrocontroller (der die Eingaben nacheinander
übertragen könnte, oder aber auch wieder als gesamtstatus in "größeren"
Intervallen). Abgesehen davon spielt es aber auch eine Rolle, wie das
Programm, welches die Eingabe auswertet, die Daten erhält. Also ob auch hier
in gewissen Zeitabständen (die dann nicht regelmäßig wären) der Gesamtstatus
abgefragt wird, oder ob jede Änderung für sich ein Ereignis auslöst. - Aber
ich glaube, in den paar Fälle, in denen wirklich mal mehere innehralb
weniger Millisekunden auf ihre Tasten drücken, kann man auch damit leben,
dass ein bestimmter Taster bevorzugt wird. Andernfalls müsstest du zumindest
das Auswertungsprogramm selbst schreiben um feststellen zu können, dass es
mehrere Eingaben gab, die zeitlich nicht auseinander gehalten werden können
und die Frage damit übersprungen werden muss. Dafür müsstest du dann aber
ein Eingabedevice nehmen, von dem du weißt, dass in jedem Intervall der
Gesamtstatus übertragen wird, da andernfalls die konkrete Reihenfolge ja nur
durch die verwendete Übertragungsart entstanden sein könnte. - Ich glaube,
ich mache mir da viel zu viel Gedanken ;-) Aber zumindest wenn es um größere
Preisgelder gehen würde, sollte man so was berücksichtigen [Ende des
unnötigen Abschnitts])
Andreas.