PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Tastatur- und Mauseingaben an DirectInput übergeben


Mars007
2011-09-13, 22:19:03
Ich habe ein Programm geschrieben, das es erlaubt mit einigen Mausklicks (und/oder Sprachbefehl),
die Kinect so zu konfigurieren, dass aus Standortdaten, Posen oder Wörtern Tastatur- oder Mausereignisse werden.
Damit das Programm universal einsetzbar ist, habe ich die simulierten Tastenaktionen low-level programmiert.
In Windows funktioniert das recht gut. Unter Gothic 3 funktioniert die Tastatur, nicht aber die Maus.
In Oblivion ist es genau anders herum: Maus OK, Tastatur tot.

Muss ich die Tasten per Direct Input / Direct X dem Spiel mitteilen?
Was ich möchte sind globale Tastatur- und Mausevents. Wie setze ich sowas am einfachsten um?

MartinB
2011-09-14, 16:01:29
Das wuerde mich auch sehr interessieren. Aber anscheinend bekommt man das nur mit einem eigenen Treiber fuer ein HID-Eingabegeraet hin

Mars007
2011-09-14, 16:14:20
Hey, super Idee. Das muss ich gleich im Google suchen.

Ansonsten habe ich noch das hier gefunden:
http://stackoverflow.com/questions/3644881/simulating-keyboard-with-sendinput-api-in-directinput-applications

Mal sehen ob es mit dieser ODER-Verknüpfung funktioniert...

MartinB
2011-09-15, 02:57:35
Ich nehme an du versuchst grade FAAST mit dem WindowsSDK umzusetzen? Sehr gut :)

Wie ich im anderen Thread schon angesprochen hatte, wuerde ich aber lieber eine Loesung mittels einen virtuellen Gamepads vorziehen. Das duerfte auch universeller sein. Ein solches virtuelles Gamepad haette dann mehere Dutzend Buttons und Achsen die man dann beliebig konfigurieren kann und von jedem Programm unterstuezt werden welches Joystick eingaben beherscht.

Mars007
2011-09-15, 17:17:10
Meine Umsetzung hat zwar Ähnlichkeiten mit FAAST, aber ich habe es total nach meinen Vorstellungen umgesetzt.
Das heißt: GUI, Spracherkennung, Hand=Maus usw.
Tasten können mit Cooldown-Timern versehen werden, einmaig aufgerufen werden und und und...

Die Joystick-Sache hätte auch ihren Reiz. Aber weder kenne ich mich damit aus,
noch möchte ich mein (eigentlich fertiges) Programm ändern. Es fehlen nur noch gobal funktionierende Tastenevents.

Mars007
2011-09-15, 18:29:21
Nachdem ich mich über verschiedene Möglichkeiten Input zu simuilieren beschäftigt habe,
werde ich mich übers Wochenende mit Autohotkey beschäftigen. Folgendes gilt es zu überprüfen:

Why do Hotstrings, Send, and Click have no effect in certain games?

Some games use DirectInput exclusively. As a side-effect, they might ignore all simulated keystrokes and mouse clicks. To work around this, try one of the following (or a combination):
•Use SendPlay via: 1) the SendPlay command; 2) using SendMode Play; and/or 3) the hotstring option SP.
•Increase SetKeyDelay. For example:
SetKeyDelay, 0, 50
SetKeyDelay, 0, 50, Play
•Try ControlSend, which might work in cases where the other Send modes fail.


und


Threatpost:

They talk A LOT about installing a driver os something, but at the last page I found a command that really worked for me:

SetKeyDelay,300
Send {Blind}{z DownTemp}
Send {Blind}{z Up}

Me nor the author of this answer know why it works...

MartinB
2011-09-16, 12:14:11
Klingt ja schonmal sehr gut.

Meld dich wenn du einen Betatester brauchst ;).

Mars007
2011-09-18, 14:45:17
Betatester kann ich gut gebrauchen.
Möglicherweise sogar sehr bald, denn ich konnte gerade einige Fehler beheben:
Die Maus agiert jetzt mit relativen Koordinaten (früher absolut).
Die Tasten werden jetzt länger gehalten, womit DirectInput und Co. sie zuverlässig erkennen.

Stay tuned

Mars007
2011-10-03, 20:56:49
Damit ihr seht, warum ich das 3dcenter mit Fragen zugeschüttet habe,
hier eine Demonstration meiner Kinect-alpha-Software "Pose2Key".

http://www.youtube.com/watch?v=GyqMlfIUJMM (http://www.youtube.com/watch?v=i7SCdFFElMA)

Kleiner Tipp: In 720p kann man auch die Schrift lesen.
(die ersten 2 Minuten sind Softwareerklärung, dann geht´s ins Spiel)

MartinB
2011-10-04, 14:20:53
Sieht gut aus. Hab mich schon gefragt was der aktuelle Stand ist. :)

Wie gesagt, meld dich falls du Beta Tester brauchst.

Mars007
2011-10-04, 18:36:45
Momentan ist alles noch quick-and-dirty. Ich muss mal die ganzen SDK-installer,
DLLs usw. zusammen suchen, bevor jemand anderes das nutzen kann.

Vielleicht komme ich morgen dazu.