Ya comme une méprise, le principe même d'un OS c'est d'abstraire et de contrôler les accès. Donc exit le bas niveau. Ensuite un driver dans un OS monolithique est forcément exécuté dans l'espace du noyau (sinon soit ce n'est pas un driver, soit ce n'est pas un OS monolithique). Enfin il n'y aucune raison de s'emmerder à écrire un driver en asm, le C c'est pas fait pour les chiens.
Je ne me souviens plus des détails, mais il est possible d'insérer une sorte de filtre au milieu de la chaine des bidules en charge de gérer les entrées (souris, clavier etc...) sur w2k et xp. Et je suppose que c'est autrement plus chiant sur Vista. Insertion, détournement des flux et hop.
Sinon, autre possibilité (plus simple), en restant dans l'espace utilisateur et vu que la cible connue (machin lié à directx), il suffit de parasiter ces dlls (par exemple par injection dans le process qui les utilise etc...).
Google ftw. Et bon courage.