Was du vor hast ist nur sehr sehr umständlich möglich.
DirectX verwendet DirectInput zum Ermitteln von "Raw-Inputs". Diese laufen gar nicht erst über die Message-Queue und versprechen daher eine geringere Latenz. Meine Lösung für ein ähnliches Problem war damals eine
Dll in den Zielprozess zu injizieren und die entsprechenden DirectInput Interfaces zu hooken. Wäre allerdings höchst spezifisch und müsste spezialisiert für jede einzelne
DirectX Version implementiert werden, da sich die Schnittstelle meistens geändert hat.