Wednesday, March 18, 2009

Put on hold for a moment

Yea, I will go away for a month in a few days, so this project will be on hold until then. So far I've managed to set up a project and combined libusb and the KernelHotkey Driver and figured out how to handle the raw data from libusb! So, now I get lovely 0 (zero) standing still, increasing or decreasing in value depending on which way and how fast it goes!

More to come...

Tuesday, March 10, 2009

And We Have the Key to the Key Events!

Well, well. Thanks to a guy named Jorick Jester and his wonderful KernelHotKey driver, I've now managed to send keyboard events to games! And everything else for that matter since it's on a super low level. You actually intercept the event just after the key press. And, if you want, you can do whatever you want with the event, before it even reaches anything else...

You start by pressing a key on the keyboard you want to send from. That is, you identify the keyboard first. When that is done, I get, and keep a reference to that keyboard in my application. And then, I can send events as if I pressed on the keyboard using that reference! Pretty nifty! Games are none the wiser!

Usually, games have protection against these kind of things, because of cheaters. But, since this is on such a low level, they can't tell if I pressed a key physically or not. Also, I will naturally not use this to cheat in games. This is for a good cause.

Sunday, March 8, 2009

The Next Step

Phidgets package arrived. While still investigating the "send key events to games" issue, I have been thinking about what the next step would be when it is solved. The image to the left is the Phidget 3 Axis Accelerometer. With this I may use it to control the direction you are looking in the game.

Below you can see what some did with a mouse and a accelerometer. Quite neat and may very well be something I do too.

( Project URL )

Well, this will not work with the treadmill, but since it is a classic I included it here:

Sunday, March 1, 2009

When you are almost there...

I can see the goal line, but someone just moved it further away... The issue now is to make the keyboard events I'm sending reach the games. From what I have read, many games uses DirectX's DirectInput, which reads at a low driver level. Meaning SendInput I'm testing with now may not be enough. I may have to inject/override/hook some functions or some other way put the keyboard events into the keyboard driver buffer...

However, the good news is that I know it's possible. It works for instance in GlovePIE, so it's just a matter of figuring out how, compared to the first major issue I had which had an unknown solution.