윈도우 11 숫자키패드(NumPad) 작동 안함 해결: NumLock 초기화 PowerShell 스크립트

이 글의 목적은 윈도우 10·윈도우 11에서 숫자 키패드가 입력되지 않거나 NumLock 상태가 부팅 때마다 초기화되는 문제를 원인별로 진단하고, 레지스트리 초기화와 키 상태 동기화를 함께 수행하는 실무용 PowerShell 스크립트를 제공하여 재발을 줄이는 것이다.

1. 증상 분류와 원인 지도

숫자키패드가 “아예 입력이 안 되는” 경우와 “입력은 되지만 방향키처럼 동작하는” 경우는 원인이 다르므로 먼저 증상을 분류해야 한다.

1-1. 전혀 입력이 안 되는 경우

키보드 장치 드라이버·HID 장치가 꼬였거나, 접근성 기능(필터 키, 마우스 키)과 충돌했거나, 무선 수신기 절전 정책으로 키 입력이 누락되는 경우가 대표적이다.

1-2. 숫자 대신 방향키/홈/엔드로 동작하는 경우

NumLock이 꺼져 있거나 부팅/로그온 시점에 NumLock 상태가 강제로 OFF로 되돌아가는 경우가 대표적이다.

1-3. 재부팅할 때마다 NumLock이 바뀌는 경우

빠른 시작(하이브리드 종료)으로 인해 “종료 직전 상태 저장”이 꼬이거나, 로그온 화면과 사용자 세션의 NumLock 초기값이 서로 다르게 기록되어 동기화가 깨지는 경우가 대표적이다.

주의 : 키보드가 텐키리스이거나 노트북 내장 키보드에 오버레이 숫자키패드가 있는 모델이라면, NumLock 키 자체가 Fn 조합으로 매핑되어 있을 수 있으므로 제조사 단축키와 BIOS/UEFI 옵션까지 함께 점검해야 한다.

2. 현장 점검 체크리스트

아래 체크리스트를 순서대로 수행하면 불필요한 재설치 없이 원인을 빠르게 좁힐 수 있다.

점검 항목 확인 방법 판정 기준 조치 방향
NumLock LED/상태 물리 키보드 LED 또는 화면 키보드에서 NumLock 확인 OFF에서 방향키처럼 동작 3~5번 절차로 초기화 및 동기화
마우스 키(Mouse Keys) 설정 > 접근성 > 마우스에서 “마우스 키” 확인 ON이면 숫자키패드가 마우스 제어로 바뀔 수 있음 OFF로 전환
필터 키/고정 키 설정 > 접근성 > 키보드 비정상 입력/지연 발생 OFF로 전환 후 재로그온
장치 관리자 HID/키보드 장치 관리자에서 키보드·HID 장치 상태 확인 느낌표/오류 코드 제거 후 재부팅, 드라이버 재적용
USB 선택적 절전 전원 옵션의 USB 선택적 절전 설정 확인 무선 키보드/리시버에서 끊김 절전 해제 또는 장치 전원관리 해제
빠른 시작(Fast Startup) 전원 옵션 > 전원 단추 작동 설정 부팅마다 NumLock 상태가 바뀜 빠른 시작 끔으로 정상화 여부 확인

3. NumLock 초기값이 저장되는 위치 이해

윈도우의 NumLock 기본값은 “로그온 화면(잠금 화면) 단계”와 “사용자 세션 단계”가 분리되어 저장되는 경우가 많다.

3-1. 로그온 화면(시스템 기본 사용자) 키 값

로그온 화면의 초기값은 일반적으로 HKEY_USERS\.DEFAULT\Control Panel\Keyboard 아래의 InitialKeyboardIndicators 값으로 결정되는 경우가 많다.

3-2. 현재 로그인한 사용자 키 값

현재 사용자 세션의 초기값은 HKEY_CURRENT_USER\Control Panel\Keyboard 아래의 InitialKeyboardIndicators 값으로 결정되는 경우가 많다.

3-3. 값의 의미와 “2147483650”이 쓰이는 이유

일부 환경에서는 단순히 “2(ON)”만 넣었을 때 저장 상태와 충돌하여 다시 OFF로 돌아가는 사례가 있으며, 이때 상위 비트가 포함된 값(예: 2147483650)로 저장 상태 문제를 우회하는 방식이 현장에서 사용되기도 하다.

주의 : 같은 PC라도 윈도우 빌드, 도메인 정책, 키보드 드라이버(특히 제조사 유틸리티) 구성에 따라 최적 값이 달라질 수 있으므로, 4장에서 제시하는 스크립트처럼 “로그온 화면 + 사용자 세션 + 실제 키 상태”를 한 번에 맞추는 방식이 재발 방지에 유리하다.

4. NumLock 초기화 PowerShell 스크립트(권장안)

아래 스크립트는 (1) 로그온 화면 기본 값(HKU\.DEFAULT), (2) 현재 사용자(HKCU), (3) 현재 로드된 사용자 SID 하이브까지 InitialKeyboardIndicators를 일괄 설정하고, (4) 실제 키 상태가 OFF이면 NumLock 키 입력을 한 번 보내 동기화하는 방식이다.

관리자 권한 PowerShell에서 1회 실행해 레지스트리를 맞춘 뒤, 6장에서 작업 스케줄러로 “로그온 시” 자동 실행을 걸면 재발률이 크게 줄어드는 구성이 된다.

# 파일명 예시: Fix-NumLock.ps1 # 목적: NumLock 초기값(로그온 화면/사용자 세션) 정렬 + 실제 키 상태 동기화 # 권장 실행: 관리자 권한 PowerShell Set-StrictMode -Version Latest $ErrorActionPreference = "Stop" function Set-InitialKeyboardIndicators { param( [Parameter(Mandatory=$true)] [string]$RegistryPath, [Parameter(Mandatory=$true)] [string]$Value ) if (-not (Test-Path $RegistryPath)) { New-Item -Path $RegistryPath -Force | Out-Null } New-ItemProperty -Path $RegistryPath -Name "InitialKeyboardIndicators" -PropertyType String -Value $Value -Force | Out-Null } function Get-NumLockState { # user32.dll GetKeyState로 NumLock 토글 상태 확인 Add-Type -Namespace Win32 -Name Keyboard -MemberDefinition @" using System; using System.Runtime.InteropServices; public static class Keyboard { [DllImport("user32.dll")] public static extern short GetKeyState(int nVirtKey); } "@ -ErrorAction SilentlyContinue | Out-Null # VK_NUMLOCK = 0x90, 토글 상태는 최하위 비트로 판정 $state = [Win32.Keyboard]::GetKeyState(0x90) return (($state -band 1) -eq 1) } function Send-NumLockKey { # WScript.Shell SendKeys로 NumLock 입력 전송 $wsh = New-Object -ComObject WScript.Shell $wsh.SendKeys("{NUMLOCK}") } # 환경에 따라 "2" 또는 "2147483650" 중 하나가 더 안정적일 수 있음 # 현장 재발 방지 목적이라면 2147483650을 우선 권장함 $targetValue = "2147483650" # 1) 로그온 화면(.DEFAULT) Set-InitialKeyboardIndicators -RegistryPath "Registry::HKEY_USERS\.DEFAULT\Control Panel\Keyboard" -Value $targetValue # 2) 현재 사용자(HKCU) Set-InitialKeyboardIndicators -RegistryPath "Registry::HKEY_CURRENT_USER\Control Panel\Keyboard" -Value "2" # 3) 현재 로드된 사용자 SID 하이브(HKU 아래 S-1-5-21-... 형태) $hku = Get-ChildItem -Path "Registry::HKEY_USERS" -ErrorAction SilentlyContinue foreach ($key in $hku) { $name = $key.PSChildName if ($name -match "^S-1-5-21-") { $path = "Registry::HKEY_USERS\$name\Control Panel\Keyboard" # 로드된 하이브에는 동일하게 2147483650을 적용해 일관성을 맞춤 Set-InitialKeyboardIndicators -RegistryPath $path -Value $targetValue } } # 4) 실제 NumLock 상태가 OFF이면 ON으로 동기화 # 이미 ON이면 SendKeys를 보내면 OFF로 바뀔 수 있으므로 조건부로만 수행 if (-not (Get-NumLockState)) { Send-NumLockKey } Write-Output "NumLock initialization completed."

5. 레지스트리만으로 해결이 안 될 때의 “강제 초기화” 스크립트(CMD)

PowerShell 실행 정책 때문에 ps1이 막히는 환경에서는, 아래처럼 reg add만 수행하는 CMD 배치 파일로 초기값을 먼저 고정하는 방식이 실무에서 유효하다.

다만 이 방식은 “실제 키 상태”까지 보장하지 않으므로, 4장의 PowerShell 동기화 방식이 가능하면 더 권장되는 방식이다.

:: 파일명 예시: Fix-NumLock.cmd :: 목적: 로그온 화면(.DEFAULT) NumLock 기본값 강제 설정 @echo off REG ADD "HKEY_USERS\.DEFAULT\Control Panel\Keyboard" /v "InitialKeyboardIndicators" /t REG_SZ /d "2147483650" /f :: 현재 사용자(HKCU)는 로그인 이후 실행되므로 사용자 세션 초기값도 함께 설정함 REG ADD "HKEY_CURRENT_USER\Control Panel\Keyboard" /v "InitialKeyboardIndicators" /t REG_SZ /d "2" /f echo NumLock registry initialization completed. exit /b 0

6. 로그인 때마다 자동 실행되도록 설정하는 방법

NumLock은 부팅·로그온·원격 접속·키보드 유틸리티 실행 순서에 따라 다시 바뀔 수 있으므로, “로그온 시 1회 자동 실행”이 재발 방지에 가장 효과적인 구성이다.

6-1. 작업 스케줄러로 ps1 자동 실행(권장)

작업 스케줄러를 사용하면 관리자 권한, 실행 정책 우회, 지연 실행까지 제어할 수 있어 안정적이다.

항목 권장 설정 설명
트리거 로그온할 때 사용자 세션 시작 직후 NumLock을 맞추기 위함이다.
동작 프로그램 시작 powershell.exe를 호출하는 방식이 관리하기 쉽다.
인수 -NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\Fix-NumLock.ps1" 프로필 영향 제거 및 실행 정책 문제를 회피하는 구성이다.
옵션 가장 높은 수준의 권한으로 실행 .DEFAULT/HKU 수정이 필요한 환경에서 권한 이슈를 줄인다.
지연 필요 시 5~15초 지연 키보드 유틸리티가 늦게 뜨며 상태를 덮어쓰는 환경에서 효과적이다.

6-2. 시작프로그램 폴더에 넣는 방식(간편)

권한이 낮은 개인 PC라면 시작프로그램 폴더에 cmd 또는 ps1 호출용 바로가기를 넣어도 된다.

다만 UAC, 실행 정책, 기업 보안 정책에 따라 실패할 수 있으므로 기업 환경에서는 작업 스케줄러 구성이 더 안정적이다.

7. NumLock이 아니라 “키패드 자체가 죽는” 문제의 해결 절차

NumLock 초기화로도 해결이 안 되면, 입력 장치 계층 또는 전원 관리 쪽을 의심해야 한다.

7-1. 마우스 키 기능 해제

마우스 키가 켜져 있으면 숫자키패드가 마우스 포인터 이동으로 전환될 수 있으므로, 설정에서 마우스 키를 꺼야 한다.

7-2. 필터 키/고정 키 해제

필터 키는 키 입력을 걸러 지연시키므로, 숫자키패드가 간헐적으로 먹통처럼 보이는 상황을 만들 수 있어 해제가 필요하다.

7-3. 장치 관리자에서 키보드/HID 재인식

장치 관리자에서 키보드 및 HID 관련 장치를 제거한 뒤 재부팅하면, 윈도우가 드라이버를 재설치하며 입력 장치 스택이 정상화되는 경우가 많다.

7-4. USB 선택적 절전 및 장치 전원관리 해제

무선 리시버나 USB 허브를 통해 키보드를 연결한 환경에서는 절전 정책 때문에 초기 입력이 누락될 수 있으므로, 전원 옵션과 장치 전원관리에서 절전을 해제해야 한다.

7-5. 빠른 시작 해제로 상태 저장 충돌 제거

부팅 때마다 NumLock이 바뀌거나 키보드 상태가 일관되지 않으면 빠른 시작을 꺼서 완전 종료 기반으로 상태를 재학습시키는 방식이 유효하다.

주의 : 제조사 키보드 유틸리티(매크로, 키 리맵, 게이밍 키보드 소프트웨어)가 NumLock 상태를 강제로 덮어쓰는 경우가 있으므로, 스크립트 적용 후에도 재발하면 해당 유틸리티의 “프로필 자동 적용” 옵션을 함께 점검해야 한다.

8. 실무 적용 시나리오와 권장 조합

재발 방지 목적이라면 다음 조합이 가장 효율적인 구성이 된다.

환경 권장 조치 기대 효과
개인 PC, 단일 사용자 4장 PowerShell 1회 실행 + 작업 스케줄러 로그온 트리거 부팅/로그온마다 NumLock 안정화에 유리하다.
기업 PC, 보안 정책 강함 CMD 레지스트리 초기화 + 작업 스케줄러에서 서명된 스크립트 운영 실행 정책과 권한 문제를 분리하여 운영하기 쉽다.
원격 데스크톱/가상화 사용 로그온 시 지연 실행(5~15초) + 실제 키 상태 동기화 포함 세션 전환 시 상태 초기화 문제를 완화하기 쉽다.
무선 키보드/허브 사용 전원관리 절전 해제 + HID 재인식 + NumLock 스크립트 입력 누락과 상태 불일치를 함께 줄이기 쉽다.

FAQ

스크립트를 실행했는데도 NumLock이 가끔 OFF로 돌아가는 이유는 무엇인가?

로그온 이후 제조사 키보드 유틸리티가 프로필을 적용하며 NumLock 상태를 덮어쓰는 경우가 흔하다.

이 경우 작업 스케줄러에서 스크립트를 5~15초 지연 실행하도록 바꾸거나, 유틸리티의 자동 프로필 적용 기능을 조정하는 방식이 유효하다.

2147483650 대신 2만 쓰면 안 되는가?

일부 시스템에서는 2만으로도 정상 동작하지만, 특정 윈도우 빌드·빠른 시작·상태 저장 조합에서 2가 기대대로 유지되지 않는 사례가 보고된다.

재발 방지가 목적이면 4장 스크립트처럼 로그온 화면과 사용자 세션을 동시에 정렬하고 실제 키 상태까지 동기화하는 방식이 더 안정적이다.

원격 데스크톱(RDP)에서만 숫자키패드가 이상한 이유는 무엇인가?

원격 세션은 로컬 키보드 상태와 원격 호스트의 토글 키 상태가 다르게 유지될 수 있어, NumLock 동기화가 깨지기 쉽다.

원격 호스트에서 로그온 시 스크립트를 실행하도록 구성하고, 필요하면 지연 실행을 추가하는 방식이 효과적이다.

노트북에서 숫자키패드가 없는 모델인데도 “NumLock 문제”처럼 보이는 이유는 무엇인가?

일부 노트북은 키보드 오른쪽 영역에 오버레이 숫자키패드를 제공하며, Fn 조합으로 모드를 바꾸는 구조이다.

이 경우 NumLock 레지스트리보다 제조사 단축키 모드가 우선하는 경우가 많으므로, 제조사 키보드 설정과 BIOS/UEFI 옵션을 함께 점검해야 한다.

작업 스케줄러에서 PowerShell이 실행되지 않는 이유는 무엇인가?

실행 정책, 경로 권한, “가장 높은 수준 권한” 미설정, 파일 차단(인터넷에서 내려받은 파일의 차단 플래그) 등이 원인이 될 수 있다.

인수에 -ExecutionPolicy Bypass를 포함하고, 스크립트 경로를 로컬 폴더(C:\Scripts 등)로 고정하며, 작업을 가장 높은 수준의 권한으로 실행하도록 설정하는 구성이 권장된다.

: