Проблема:
Необходимо включать Num Lock при загрузке Windows. То есть сделать так, чтобы при вводе пароля дополнительная цифровая клавиатура уже работала в режиме ввода цифр (индикатор Num Lock светится).
Решение:
Во первых, если в BIOS есть параметр включения Num Lock, то активируем его.
Для операционных систем Windows 7 и ниже в реестре по адресу HKEY_USERS\.DEFAULT\Control Panel\Keyboard устанавливаем значение параметра InitialKeyboardIndicators равным 2 - в этом случае Num Lock будет включаться.
Так же этим параметром можно включать/выключать Caps Lock, Scroll Lock.
Параметр InitialKeyboardIndicators может принимать следующие значения:
-
0 - все переключатели выключены
-
1 - Caps Lock включен
-
2 - Num Lock включен
-
3 - Caps Lock и Num Lock включены
-
4 - Scroll Lock включен
-
5 - Caps Lock и Scroll Lock включены
-
6 - Num Lock и Scroll Lock включены
-
7 - Caps Lock, Num Lock и Scroll Lock включены
Для операционных систем Windows 8 и выше выполняем то же самое, что и для Windows 7 (значение параметра InitialKeyboardIndicators в Windows 8 и Windows 8.1 по умолчанию равно 2147483650) и дополнительно отключаем быстрый запуск системы в параметрах питания («Панель управления» -> «Электропитание» -> «Настройка кнопок питания» -> «Изменение параметров, которые сейчас недоступны» -> отключаем «Включить быстрый запуск (рекомендуется)» -> ):
Дело в том, что загрузчик UEFI для быстрого старта не запускает USB и, соответственно, BIOS не включает Numlock. Шина USB подгружается в процессе запуска ОС. Поэтому, в Windows 8 и выше для срабатывания параметра InitialKeyboardIndicators необходимо отключать быстрый запуск. Другое дело, что теперь встает вопрос - а зачем это нам? Проще, наверное активировать Num Lock вручную, чем дольше ждать при загрузке ОС.
Как вариант, в Windows 8 и выше можно активировать Num Lock с помощью запуска следующего vbs скрипта из планировщика, не дожидаясь авторизации пользователя:
Код: Выделить всё
set WsNumlock = CreateObject("WScript.Shell")
WsNumlock.SendKeys "{NUMLOCK}"
set WsCapsLock = CreateObject("WScript.Shell")
WsCapsLock.SendKeys "{CapsLock}"
Примечание: Поскольку функция быстрого запуска при перезагрузке не работает (она работает только при включении после выключения), то в случае перезагрузки параметр InitialKeyboardIndicators срабатывает нормально и Num Lock активируется.