Raw Input: Maus-Anzahl und Info über HIDs

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
NytroX
Establishment
Beiträge: 367
Registriert: 03.10.2003, 12:47

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von NytroX »

Hi,

auch auf die Gefahr hin, dass ihr mich gleich köpfen werdet, aber hast du das schonmal mit SFML (oder SDL) versucht?
AFAIK haben die ne ganz gute Schnittstelle, die sowohl Maus+Tastatur als auch Joypads unterstützt.
Und das ist in den Code schon "reingefriemelt", evtl. kannst du dir damit zumindest einen Teil erleichtern.

Ich meine irgendwo mal gelesen zu haben, dass die 2. Maus meist ein Remote-Device ist, das für die Remote-Desktop-Verbindungen usw. da ist (auch wenns nicht benutzt wird).
Das ganze bekommst du raus, indem du mit GetRawInputDeviceInfo den RIDI_DEVICENAME anfragst, dann bekommst du in den Daten einen String, und wenn der "root" enthält, dann ist es das remote device... :shock:
Ist glaube ich aber nicht immer lowercase.
Also quasi total intuitiv... (einfach nicht fragen...)
Gilt für Tastatur + Maus.

Ob das mit dem PS/2 plug+play hinhaut, ist abhängig vom Mainboard und der Maus.
Bei einem Kumpel von mir gehts, bei mir nicht.
Und wenn man eine USB-Maus hat und einen USB zu PS/2 Adapter, gehts auf jeden Fall auch nicht.

Als ich sowas mal programmiert habe, kam ich mit einem Mix aus Raw-Input und anderen Libs am besten klar.
Nachteil an RawInput ist, dass du Tastatur und Maus im LowLevel capturest, und manche PersonalFirewalls dann Alarm geben. (z.B. meine :P)
Benutzeravatar
Schrompf
Moderator
Beiträge: 4878
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von Schrompf »

Danke :-) All Deine Informationen hier hatte ich im Laufe der letzten Woche mühsam zusammengetragen :-) Die RemoteDesktop-Eingabegeräte habe ich jetzt anhand des "RDP"-Namensteils herausgefiltert. Ansonsten gibt es nach meinem Wissen keine Methode, wie man mit nur einer API alles abdeckt... mal in den Code schauen, wie SDL und Konsorten das machen. Nach meinem Wissen versagen die genauso an einem der Ansprüche, die ich habe, wie jede Einzel-API auch.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von BeRsErKeR »

Prinzipiell solltest du aber vielleicht wirklich mal größere Engines usw angucken. Ich kann mir nämlich nicht vorstellen, dass davon keine eine vernünftige Input-API mitbringt. Du wirst ja nicht der erste sein, der auf die Probleme gestoßen ist. Ein Blick lohnt sich allemal auch wenn du nur ein paar Tricks oder andere Herangehensweisen finden solltest. Und wenn du Glück hast findest du ja etwas, was deinen Ansprüchen recht nah kommt und du kannst dein Werkzeug zum Räderbauen im Keller lassen. ;)
Ohne Input kein Output.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4878
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von Schrompf »

Dazu ist es jetzt schon ein bisschen spät... ich habe OIS inzwischen verwurstet bis zur Unkenntlichkeit. Ein Hoch auf "vernünftige" OpenSource-Lizensen, dass ich das überhaupt darf. Andere Engines anzuschauen wäre eine kluge Aktion, wenn ich nicht jetzt schon fertig wäre. Jetzt läuft alles - und ich will nicht noch mehr Zeit und Energie in dieses Problem stecken. Und ich möchte zu bedenken geben, dass meine Anforderungen auch recht spezielle sind - die meisten werden sich nicht um mehrere Mäuse/Tastaturen scheren, oder benutzen für GamePads einfach XInput und scheren sich einen Dreck um alternative Pads/Joysticks. Die einzigen mit ähnlich rigiden Anforderungen, die ich kenne, sind Frostbyte mit Trine und Artverwandten.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4878
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von Schrompf »

Abschließende Anmerkungen, da das Thema für mich jetzt durch ist: nachdem ich noch einige Fehler am Gesamtsystem behoben hatte, war nur noch das Problem der Geister-Geräte übrig. Nicht nur RemoteDektop-Anwendungen haben eigene Mäuse und Tastaturen angemeldet, sondern so mancher Laptop hatte auch noch weitere seltsame Geräte gemeldet. Eine weitere Geistermaus stellte sich als Touchpad heraus, das aber mit 16 Tasten gemeldet wurde, obwohl es nur zwei hat. Und auf einem Laptop gab es noch eine weitere Geistertastatur, die ich auch mit Hilfe des Laptopbesitzers partout nicht zuordnen konnte.

Ich habe das Problem jetzt mit einem kleinen garstigen Trick gelöst: die erste Maus, die Eingabe-Ereignisse liefert, wird im Array nach vorn sortiert und ist damit ab sofort die primäre Maus. Selbes Spiel auch für die Tastaturen. Nach der Umsortierung muss ich nur noch alle Action Mappings neu zuordnen und schon läuft das Spiel. Das Ganze passiert absolut transparent, wie als wäre nie was gewesen. Ich bin sehr beruhigt, dass das dann doch alles recht stressfrei abgelaufen ist.

Code ist auf Wunsch verfügbar. Ich möchte aber keine offizielle OpenSource-Bibliothek draus machen, weil ich nicht die Zeit habe, die dann auch angemessen zu pflegen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von BeRsErKeR »

Schrompf hat geschrieben:Eine weitere Geistermaus stellte sich als Touchpad heraus, das aber mit 16 Tasten gemeldet wurde, obwohl es nur zwei hat. Und auf einem Laptop gab es noch eine weitere Geistertastatur, die ich auch mit Hilfe des Laptopbesitzers partout nicht zuordnen konnte.
Das nenn ich mal ein Touchpad. ;) Was mir zu der Geistermaus einfällt: Ich könnte mir vorstellen, dass sowas vielleicht von virtuellen Maschinen genutzt wird.
Ohne Input kein Output.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von Artificial Mind »

Schrompf hat geschrieben:Code ist auf Wunsch verfügbar. Ich möchte aber keine offizielle OpenSource-Bibliothek draus machen, weil ich nicht die Zeit habe, die dann auch angemessen zu pflegen.
Mich würde das schon interessieren, kannst du nicht ein von Anfang an totes Projekt auf sourceforge oder so anfangen, damit es einmal einen opensource Code-Stand gibt? Wenn du von Anfang an nicht die Hoffnung entstehen lässt, dass das von dir gepflegt wird, sollte das ja keinen Aufwand darstellen, oder?
Benutzeravatar
Schrompf
Moderator
Beiträge: 4878
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von Schrompf »

Ab Start als totes Projekt - das ist eine Idee. Teile des Codes sind allerdings noch auf Deutsch. Und wenn ich damit anfange, dort aufzuräumen, will ich sicher auch noch einige der bisweilen absurd dummen OIS-Strukturen aufräumen. Und es gibt dann noch den miserablen Quergriff aus dem Eingabesystem raus, um an die Windows Messages für RawInput ranzukommen. Da fällt mir noch nichts ein, wie man das sauber auf das Eingabeprojekt begrenzen kann.

Ich werde es mir überlegen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Raw Input: Maus-Anzahl und Info über HIDs

Beitrag von Artificial Mind »

Sieh es doch einfach als strukturiertes Pastebin-Paste an ;)
Antworten