i had a slightly different angle on this, had a asus laptop where numlock would get turned on at every reboot(it is a 14" laptop, so doesnt have a separate number pad, which means that half the keyboard types numbers by default, which is very annoying) . I tried all the reg fixes, the turning off fast start, holding a rabbits foot whilst hopping, sacrificing a goat whilst holding down fn and C, nothing worked. ended up writing a script kicked off by a scheduled task that runs at startup and at log on for this, to turn num lock off if it is detected as being on.
script is below. it only seems to work after log on though, but i cant be bothered to work out why as i have spent hours on this and it works enough for me.
if([console]::NumberLock) {
$w = New-Object -ComObject WScript.Shell;
$w.SendKeys('{NUMLOCK}');
}
if you want to do the reverse, use
if(-not [console]::NumberLock){
$w = New-Object -ComObject WScript.Shell;
$w.SendKeys('{NUMLOCK}');
}
i also kick off a registry file from the same task to set the values in the registry as they get overwritten every time. i dont think this actually achieves very much but as i had it i thought i would run it anyway. your S- number may well be different to mine, so make sure you change it.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2147483648"
[HKEY_USERS\.DEFAULT\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2147483648"
[HKEY_USERS\S-1-5-18\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2147483648"
[HKEY_USERS\S-1-5-21-1658153221-431003928-1463442403-1002\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2147483648"
i got the code for the powershell script from here:
https://stackoverflow.com/questions/41234687/how-to-check-if-numlock-is-enabled