There are plenty of legitimate reasons to capture keyboard data. I'm working on a project right now that is a perfect example. I'm working on a point of sale application that uses a barcode scanner that communicates to the OS as a USB keyboard device.

One way to capture keyboard data is to use the Windows API to set a global or application specific keyboard hook. There is nothing hacker-like about this. The API methods required are...