What’s Interception?
A programming interface for intercepting input device communication.
What can I do with that?
With Interception you are able to intercept and transform input data from keyboard and mouse. Other devices are in the works.
Current support is still Windows only (from Windows 2000 to Windows 7), but Mac and Linux support are also in the works.
I can use Windows hooks for that, so, what’s up?
Yes, you can, but... are you able to identify from which device some event is coming when you connect multiple keyboard/mouse? You can’t! With generic user-mode hooks you are able to identify that a keyboard/mouse event has arrived, but not from which keyboard/mouse it’s coming. With Interception on Windows you can! (With Raw Input you also can but you cannot intercept input with it.)
Can you even intercept CTRL-ALT-DELETE with user-mode hooks? No, you can’t!
Does your user-mode hook work when you are playing that old game which uses DirectInput? NO! You can’t BOT it.
The list goes on and the bottom line is: Interception is much more powerful and simple.
Ok, but, how do you achieve this?
The Interception API provides a simple interface of communication with kernel-mode components, and those components are powerful. They intercept data in a early stage, before it reaches the core of OS input processing.
I have a x64 Windows box, I’ve heard that it cannot load kernel-mode components indiscriminately.
Yes, indeed. The Interception core is built upon properly signed drivers, so that’s not a problem!
Ok then, let’s get to work.
First, you must download the Interception core installation tool: install-interception.
This tool must be run from an administrator command line (you must run cmd as administrator). Just run it without arguments to receive instructions.
Second, you must link against the Interception library, which is provided here as a convenient package, or you may build it from sources. Static and dynamic libraries are provided and the x86 version do not depend on the VC10 runtime.
Third, you must include interception.h in your applications.
The following sample shows how to intercept the x key and turn it into y: