Para algunas cosas de las que comentas (teclado, por ejemplo) sí puedes encontrar en a API de windows funciones que te den el estado en cada momento;
GetKeyboardState,
GetKeyState,... (revisa la API).
Para temas más relacionados con el Hardware, yo creo que la mejor forma (la más estandard) es utilizar
WMI. Hay una serie de clases directamente relacionadas con el
Hardware de la máquina.
También puedes echarle un vistazo a la librería GLibWMI que puedes encontrar en
mi página o en
Sourceforge, que te provee de algunos componentes para acceder a algunas de estas clases hardware (discos, BIOS, impresoras,...)