Close

Combing the keyboard hook with RAWINPUT

A project log for Cheap Windows Jog/keyboard controller for CNCs

Cheap <$5 usb numpad to use for key macros and CNC job controllers. Primarily I'm using it to extend a remote for jogging around my G0704

charliexcharliex 04/23/2015 at 17:030 Comments

Not Invented Here / Reinventing the Wheel

Rather than do that, there is a project on codeproject talking about exactly this, and all the numerous pitfalls. It uses some of the API's we've already looked at.

Combining Raw Input and keyboard Hook to selectively block input from multiple keyboards

This more or less does what we want, but this method has a number of flaws. We can also look at using the non low level hooks, which requires a dll and hook injection (or access to the source code), look at WH_GETMESSAGE hooks for more information on that, since it combines both sets of information to make that determination.

System Wide Hooking for the WM_CHAR Message

So some solutions, not without their problems and one requiring hooking in into the apps, which may not work on all apps that use RAWINPUT, if we were just doing one app, and one machine this approach would likely work fine.

Roundup so far

So far we've looked at the global hook, which works really well but has the disadvantage of not being able to easily determine where the key came from and there are keys it can't catch, so it is basically a global search and replace. Then we looked at RAWINPUT which does tell us where it came from, but doesn't allow an easy substitution or removal of the messages. And now a project that married them together.

As we can see there are ways of doing this, if you're just looking for a quick working (mostly) solution, there are a number of programs available that use these principles, here are a couple

Keyboard Redirector

hidmacros /LuaMacros

AHK does it as well, if i recall, and uses the same methods, nearly all of these programs use a combination of the methods i've shown.

We've got enough to do this now

So if all you're looking for is a quick way to remap a second keyboard, stop here and grab those, enjoy your extra free time!

So is there a better way ? Yes. I'll cover this next update.

Discussions