DirectInput is one good way, that I use, but the proper VB method to allow yourself to have more control without relying on DirectX would be this

http://www.vbforums.com/attachment.p...chmentid=36571

And there's also the GetAsyncKeyState API

http://www.mentalis.org/apilist/GetAsyncKeyState.shtml

Learn how these work, before jumping into DirectInput.