How to have num lock enabled by default on log on screen?

Solution 1:

Before logon, Windows will ignore the BIOS numlock setting for security reasons. In addition, Windows does not use the registry setting for num lock until after login. If you need numlock on before that, see How to Set the NUM LOCK State at Logon in Windows XP (Article is about Windows XP, but works for Windows 7, as well - I assume it is the same for Windows 8).

To do this, put in numlock.vbs:

set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{NUMLOCK}"

Then set it to run for the logon screen using Group Policy. You just copy numlock.vbs into the Group Policy folder. The default path for a local logon script is %SystemRoot%\System32\GroupPolicy\User Computer\Scripts\Logon.

To get the script to run (quoted from http://support.microsoft.com):

  1. Click Start, click Run, type mmc, and then click OK to start Microsoft Management Console (MMC).
  2. On the Console menu, click Add/Remove Snap-in.
  3. Click Add, click Group Policy, and then click Add.
  4. Click the appropriate Group Policy Object. The default selection is the local computer, but you can click Browse and select a different Group Policy Object.
  5. Click Finish, click Close, and then click OK.
  6. In the Group Policy Management snap-in, locate the User Configuration\Windows Settings\Scripts (Logon/Logoff) folder. (You can substitute the Computer Configuration folder for the User Configuration folder.)
  7. Double-click the Logon script object, click Add, click Browse, and then click the Numlock.vbs script.
  8. Click Open, and then click OK.
  9. Click OK, and then close the Group Policy Management console.

You can set the num lock default in the registry, but it only applies after logging on.

This involves setting InitialKeyboardIndicators to 2 in [HKEY_USERS.DEFAULT\Control Panel\Keyboard].

enter image description here

NB: Setting InitialKeyboardIndicators will not work on Windows 8 if you are signed in with a Microsoft Account. It only works with a local account.

Sources:

  • http://www.wikihow.com/Change-the-Default-Numlock-State
  • http://michaelcrump.net/turn-numlock-on-automatically-on-boot-in-windows-8.
  • http://support.microsoft.com/default.aspx?scid=kb;en-us;314879

Solution 2:

I have a 100% working answer.

  • Hit the Windows key + R to open Run.
  • Type in regedit.exe, click Ok.
  • Go to HKEY_USERS on the left hand side then DEFAULT then Control Pannel then Keyboard.
  • Right click "InitialKeyboardIndicators" and click Modify and change the value to 2147483650.
  • Then on your screen, mouse over to the bottom right hand corner to open the Search bar on the right hand side of the screen, (your Windows 8 side bar), and click Search.
  • Search for "Control Panel", go to the Control Panel.
  • Click Power Options. On the left hand side, click Choose what the power buttons do.
  • Click Change settings that are currently unavailable. Uncheck the box that says Turn on fast startup (recommended), click Save Changes.
  • Shut down the computer, turn it back on.

It worked for me at my neighbor's house, it will work for you.

Solution 3:

In case you still haven't fixed this or want a much easier way, this worked for me on Windows 8 Core.

  1. Press Windows+R
  2. Type regedit and hit ENTER
  3. Navigate to HKEY_USERS\.Default\Control Panel\Keyboard
  4. Back up the registry by clicking File → Export
  5. Change the value for InitialKeyboardIndicators from 0 to 2.

Edit:

If the original value is something other than 0, the safest thing to do is:

  1. Launch Windows Calculator
  2. Hit Alt+3 for programmer mode
  3. Type in the original value
  4. Click the Or button
  5. Type 2, then ENTER
  6. Use the value shown rather than 2

If you're absolutely sure the num lock setting is currently disabled, you can just add 2 to the current value instead.

See: http://support.microsoft.com/kb/154529