So my keyboard and mouse suddenly stopped working, and I really didn’t know why. What followed was many frustrating hours spent to try and “safe” my machine from a new fresh Windows 7 install, because it would take just too much time to do a fresh install of everything that I currently have on the laptop.
However, the keyboard did work while I was trying to access the BIOS, but as soon as Windows started loading the keyboard and touchpad stopped working. The system booted to the Windows logon screen and I wasn’t able to do anything. Or at least, then I decided to confront the problem. 🙂
Note: First create a backup of your registry or create a System Restore point before you proceed!
Further symptoms manifested themselves by showing that there were some driver problems in the Device Manager. The following devices seemed to have problems:
- HID Keyboard Device
- Standard PS/2 Keyboard
- PS/2 Compatible Mouse
The error codes varied and so it is really dependent of your system configuration, but is should be at least one of the following:
- This device cannot start. (Code 10)
- This device is not working properly because Windows cannot load the drivers required for this device. (Code 31)
- Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39)
- Windows cannot access this hardware because its service key information in the registry is missing or recorded incorrectly. (Code 40)
Fix it automatically in Windows Vista/7
You can fix the problem automatically by downloading and running the following registry file:
DOWNLOAD REGISTRY FIX
Now just restart Windows and the problem should be solved.
If the problem is still present and/or you want to fix it manually, then follow the instructions in the section Fix it manually.
Fix it manually
You should access the registry by clicking on Run and then typing
Now find the following key:
You should now see a key UpperFilters which should contain at least one entry “kbdclass”. If you have the same problem as I do, then you there are more entries there which you should delete. So now after editing, your UpperFilters key should only contain “kbdclass” (without quotes). Restart Windows, and the problem should be fixed. 🙂
If you only have the entry “kbdclass” as value and/or are still experiencing the same problem, then you should search for the word “kbdclass” (without quotes) and replace every UpperFilters key with kbdclass and other values to only kbdclass.
Below you’ll find further information and alternative scenarios on how to fix certain sub-problems.
Problems with logging into Windows
To fix the problem you should be able to access the Registry in some way and change the registry keys. I managed to get into windows by using a separate USB-mouse and accessing the On-Screen Keyboard by which I could login and do the necessary registry changes. You can do this by
- Clicking on the Ease of Access button at the bottom-left corner of the login screen
- Checking the “Type without the keyboard” and clicking OK
- Clicking on: Ctrl+AltGr+Del
- Logging in
Fixing other similar problems
The problem in my situation was that there was also a keyboard driver installed from VMware. The VMware Keyboard Driver had an additional entry “vmkbd” in the UpperFilters key, but as I discovered the driver file that was needed (C:\Windows\system32\drivers\VMkbd.sys) was missing which in effect caused all the problems.
The folder with GUID
represents the class Keyboard that is defined by the Windows operating system. It is used to install devices or other drivers. If you have another but similar problem, then you could try to analyze the filters under the GUIDs as listed below (see  for a complete list).
||Hard drive controllers
||Some USB devices
||IEEE 1394 host controller
||Cameras and scanners
||Mice and pointing devices
||Audio and video devices
||Serial and parallel ports
||SCSI and RAID controllers
||System buses, bridges, etc.
||USB host controllers and hubs
The next step is to adjust the UpperFilters like the problem where the CD or DVD drive is missing or not recognized by other programs .