IBM Thinkpad laptops use a special "space saver" keyboard design on their laptop models. In this design, certain keys will share the same physical key space as other keys, and will be activated by use of either an Fn or Shift combination. Unfortunately, due to the keys being physically shared, the NumLock keysym is never sent to the OS, and instead "Pointer_EnableKeys" will be detected.

To resolve this issue, you can set the keyboard model to ibm_spacesaver using the following method:

$ setxkbmap -model ibm_spacesaver

If still unsuccessful, you can adjust the keysym values manually:

$ xkbcomp :0

then edit the newly created server-0.xkb and replace the line

key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };

with the following:

key <NMLK> { [ Num_Lock, Num_Lock ] };

then load the file back

$ xkbcomp server-0.xkb :0

If you run xkbcomp :0 again, the server-0.xkb should now be just as you edited it (this is for verification).


Gnome provides some settings for NumLock management as well.

In gconf-editor, un-check


This disables numlock. If you un-check


Gnome remembers the numlock state from the last session.
Without this, numlock is always off when starting.