This is the sort of problem that is notoriously hard to track down:
1. Did you install/replace/delete any HW/SW just prior?
2. Did you make any config changes, especially to xorg.conf?
3. Any system updates? If so, do you remember which they were?
4. Scroll through your logs, especially dmesg, xorg.0.log and syslog. Does anything look out of the ordinary? We are looking especially for messages like: "key xxxx undefined" where xxxx is a hexadecimal number. If your logs are as lengthy as mine and are making you go cross-eyed, try:
...and similarly for the other logs.
dmesg | grep -e undefined -e key
Also, post output of: