Thanks for all the suggestions!
To answer some of your questions:
Yes, I upgrade the kernel regularly and it hasn't fixed it yet, but here's hoping
No, it's a laptop, so I never use the numlock function.
To ask another:
Where does the kernel keep keymapping information? Like the kernel equivalent of xmod map, or does such a thing exist? From jonr's comment it sounds like there might be a customizeable keymap file floating around somwhere...