개요
Nexa Shortcut은 “하나의 기능을 가장 가볍게”를 원칙으로 하는 Windows용 초경량 단축키 유틸리티 모음입니다. GUI 프레임워크도 C 런타임(CRT)도 쓰지 않고 순수 Win32 API만으로 만들어, 실행 파일 크기와 메모리 사용을 최소화했습니다.
현재 제공되는 도구는 nShiftSpace(Nexa ShiftSpace) 하나이며, 일반판과 누르는 키를 트레이 아이콘으로 보여 주는 LED판 두 가지 빌드가 있습니다.
| 항목 | 내용 |
|---|---|
| 하는 일 | Shift+Space를 누르면 한/영 키를 대신 눌러 줍니다 |
| 파일 크기 | 일반판 5,120바이트(x64) · 5,632바이트(x86) / LED판 6,144바이트(x64) · 6,656바이트(x86) |
| 메모리 | 작업 관리자 기준 약 70KB(x64) · 120KB(x86) — 리소스 사용 참고 |
| 실행 방식 | 창 없이 트레이 아이콘(‘가·A’ 픽셀 아트)으로 상주 |
| 설정 | 없음 — 설정 파일도 설정 화면도 없음. 레지스트리는 “로그인 시 자동 실행”을 켤 때만 값 하나를 씀 |
| 라이선스 | MIT — 누구나 무료로 사용 가능 |
한/영 키가 없는 외산 키보드나 일부 노트북, 또는 한/영 키 위치가 손에 맞지 않는 경우를 위한 도구입니다.
제품 소개 페이지: /apps/nexa-shortcut
시스템 요구사항
| 항목 | 내용 |
|---|---|
| 운영체제 | Windows 10 / 11 |
| 아키텍처 | x64(64비트) · x86(32비트) 빌드 각각 제공 |
| 추가 설치 | 필요 없음 — .NET, Visual C++ 재배포 패키지 불필요 |
| 사용하는 시스템 라이브러리 | kernel32 · user32 · shell32 · advapi32(자동 실행 메뉴) · imm32(IME 끄기) — 모두 Windows 기본 포함 |
| winget 사용 시 | Windows 11 또는 Windows 10 1809 이상 |
설치와 제거
nShiftSpace는 설치 프로그램 없이 exe 하나로 동작합니다. 아래 세 방법 중 편한 것을 고르세요.
| 방법 | 필요한 권한 | 이런 분께 |
|---|---|---|
| winget | 일반 사용자 | 대부분의 Windows 10/11 사용자 |
| Chocolatey | 관리자 권한 | 이미 Chocolatey를 쓰는 경우 |
| zip 직접 내려받기 | 일반 사용자 | 설치 위치를 직접 정하고 싶은 경우 |
설치한 뒤에는 트레이 메뉴에서 로그인 시 자동 실행을 한 번 켜 두세요. 어느 방법으로 설치해도 시작 프로그램에는 자동으로 등록되지 않습니다.
일반판과 LED판
패키지 이름이 다릅니다. 아래 명령은 일반판 기준이며, LED판은 패키지 이름만 바꾸면 됩니다.
| 구분 | 일반판 | LED판 |
|---|---|---|
| winget | SosomLab.nShiftSpace (0.3.0) | SosomLab.nShiftSpace.LED — 아직 등록 전, 심사 중(2026-11-05 확인) |
| Chocolatey | nshiftspace (0.3.0) | nshiftspace-led (0.3.0) |
| zip | nShiftSpace-x64.zip · nShiftSpace-x86.zip | nShiftSpace-led-x64.zip · nShiftSpace-led-x86.zip |
| 실행 명령 | nshiftspace(winget) · nShiftSpace-x64(Chocolatey) | nshiftspace-led(winget, 등록 후) · nShiftSpace-led-x64(Chocolatey) |
둘 중 하나만 설치하세요. 같은 단축키를 쓰고 중복 실행 방지도 공유하므로 동시에 실행되지 않습니다.
winget
Windows 11과 Windows 10 1809 이상에는 winget이 기본으로 들어 있습니다. 없다면 Microsoft Store에서 앱 설치 관리자를 설치하세요.
winget install SosomLab.nShiftSpace # 설치
nshiftspace # 실행
winget upgrade SosomLab.nShiftSpace # 업그레이드
winget uninstall SosomLab.nShiftSpace # 제거
- 포터블 패키지로 설치되며 x64·x86이 자동으로 선택됩니다.
- 설치 직후에는 PATH가 반영되도록 터미널 창을 새로 연 뒤
nshiftspace를 실행하세요.
| 항목 | 경로 |
|---|---|
| 실행 별칭 | %LOCALAPPDATA%\Microsoft\WinGet\Links\nshiftspace.exe |
| 실제 exe | %LOCALAPPDATA%\Microsoft\WinGet\Packages\SosomLab.nShiftSpace_Microsoft.Winget.Source_8wekyb3d8bbwe\ 아래 |
주의 winget은 실행 중인 프로그램을 대신 종료해 주지 않습니다. 업그레이드나 제거 전에 트레이 아이콘에서 먼저 종료하세요. 켜져 있으면 파일이 잠겨 실패합니다.
Chocolatey
Chocolatey가 없다면 관리자 권한 PowerShell에서 먼저 설치합니다(공식 안내).
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
이어서 관리자 권한 PowerShell에서:
choco install nshiftspace -y # 설치
nShiftSpace-x64 # 실행 (32비트 OS는 nShiftSpace-x86)
choco upgrade nshiftspace -y # 업그레이드
choco uninstall nshiftspace -y # 제거
- OS 아키텍처에 맞는 exe 하나만
%ChocolateyInstall%\lib\nshiftspace\tools\에 설치되고, 같은 이름의 명령이 PATH에 등록됩니다.%ChocolateyInstall%의 기본값은C:\ProgramData\chocolatey입니다. - Chocolatey는 업그레이드·제거 전에 실행 중인 nShiftSpace를 자동으로 종료해 줍니다.
zip 직접 내려받기
- GitHub Releases에서
nShiftSpace-x64.zip(64비트) 또는nShiftSpace-x86.zip(32비트)을 내려받습니다. LED판은nShiftSpace-led-x64.zip·nShiftSpace-led-x86.zip입니다. - 원하는 폴더에 압축을 풉니다(예:
C:\Tools\nShiftSpace\). nShiftSpace-x64.exe(또는-x86.exe)를 더블클릭하면 트레이에 아이콘이 뜹니다.
설치 위치를 직접 정하므로 업그레이드해도 경로가 바뀌지 않는다는 것이 장점입니다. 내려받은 exe를 실행할 때 Windows SmartScreen 경고가 보이면 추가 정보 → 실행으로 진행할 수 있습니다.
채널 비교
| 작업 | winget | Chocolatey |
|---|---|---|
| 사전 준비 | 대부분 기본 포함 | Chocolatey 설치 필요 |
| 권한 | 일반 사용자 | 관리자 권한 PowerShell |
| 설치 | winget install SosomLab.nShiftSpace | choco install nshiftspace -y |
| 실행 | nshiftspace | nShiftSpace-x64 |
| 업그레이드 | winget upgrade SosomLab.nShiftSpace | choco upgrade nshiftspace -y |
| 제거 | winget uninstall SosomLab.nShiftSpace | choco uninstall nshiftspace -y |
| 실행 중 자동 종료 | 안 됨 — 직접 종료 필요 | 자동 |
제거
- winget · Chocolatey: 위 표의 제거 명령을 씁니다(winget은 먼저 트레이에서 종료).
- zip: 트레이에서 종료한 뒤 exe 파일을 지우면 끝입니다. 자동 실행을 꺼 두었다면 레지스트리에 남는 것이 없습니다.
- 어느 방법이든 자동 실행을 켜 두었다면 제거 전에 해제하세요. 메뉴로 켠
Run값은 패키지를 제거해도 지워지지 않습니다(자동 실행 해제 참고).
시작하기
- 설치 방법에 맞게 실행합니다.
| 설치 방법 | 실행 |
|---|---|
| winget | nshiftspace |
| Chocolatey | nShiftSpace-x64 (32비트 OS는 nShiftSpace-x86) |
| zip | exe 더블클릭 |
- 창은 뜨지 않습니다. 트레이(작업 표시줄 오른쪽 알림 영역)에 ‘가·A’ 모양의 작은 아이콘만 생깁니다.
- 아이콘이 안 보이면 작업 표시줄의 ∧(숨겨진 아이콘 표시) 를 눌러 확인하세요. 항상 보이게 하려면 그 상태에서 아이콘을 작업 표시줄로 끌어다 놓으면 됩니다.
- 아무 입력칸에 커서를 두고 Shift+Space를 눌러 한/영이 바뀌면 정상입니다.
- 로그인할 때마다 자동으로 뜨게 하려면 트레이 메뉴에서 로그인 시 자동 실행을 체크하세요.
트레이 메뉴
트레이 아이콘을 클릭(좌·우 모두)하면 메뉴가 열립니다.
| 메뉴 | 동작 |
|---|---|
| 로그인 시 자동 실행 (체크) | 켜면 지금 실행 중인 exe 경로를 시작 프로그램에 등록하고, 끄면 지웁니다 → 자동 실행 |
| 키보드 LED 표시 (체크, LED판만) | 키 입력 표시를 켜고 끕니다 → 키보드 LED 표시판 |
| 종료 | 트레이 아이콘을 지우고 nShiftSpace를 종료합니다 |
아이콘에 마우스를 올리면 “nShiftSpace: Shift+Space 한/영 전환”이라는 툴팁이 보입니다.
동작 방식
Shift+Space 입력 → Windows가 가로챔 (RegisterHotKey)
→ 한/영 키(VK_HANGUL) 입력을 대신 보냄
→ Windows 입력기(IME)가 한/영 전환
- 키보드 훅이 아니라 Windows의 단축키 등록 기능(
RegisterHotKey)을 씁니다. OS가 Shift+Space만 골라 알려 주므로 모든 키 입력을 검사할 필요가 없어, 대기 중 CPU 사용량이 사실상 0입니다. 키 입력을 엿보는 방식이 아니어서 백신이 훅 기반 프로그램을 의심하는 문제에서도 자유롭습니다. - 실제 한/영 전환은 Windows 입력기가 합니다. nShiftSpace는 한/영 키를 눌러 줄 뿐입니다.
- 중복 실행 방지 — 이미 실행 중이면 두 번째 실행은 바로 종료됩니다.
- 트레이 아이콘 자동 복구 — 탐색기(
explorer.exe)가 다시 시작되어도 아이콘이 저절로 되살아납니다.
키보드 LED 표시판
Shift+Space 기능은 일반판과 같고, 추가로 아무 키나 누르는 동안 트레이 아이콘이 초록으로 켜지고 떼면 파랑으로 돌아옵니다. 키보드 입력이 들어가고 있는지 트레이에서 한눈에 보고 싶을 때 쓰는 판입니다.
| 항목 | 일반판 | LED판 |
|---|---|---|
| 파일 | nShiftSpace-x64.exe | nShiftSpace-led-x64.exe |
| 크기(x64 / x86) | 5,120 / 5,632바이트 | 6,144 / 6,656바이트 |
| 키 입력 수신 | 없음 — Shift+Space 알림만 받음 | Raw Input으로 키 눌림·뗌을 받음 |
| 키보드 훅 | 없음 | 없음 — 다른 프로그램의 키 입력을 지연시키지 않음 |
- 켜고 끄기 — 트레이 메뉴 키보드 LED 표시(체크 표시가 현재 상태). 끄면 키 입력 수신 자체를 해제하므로 일반판처럼 키 입력당 비용이 0이 됩니다.
- 상태는 저장하지 않습니다. 다시 실행하면 켜짐으로 시작합니다. 항상 꺼 두고 싶다면 일반판을 쓰세요.
- 여러 키를 함께 누른 경우 어느 키든 떼면 꺼집니다. 켜진 상태에서 탐색기가 다시 시작되면 꺼짐으로 돌아갑니다.
- 받은 키 입력은 아이콘을 바꾸는 데만 쓰며 저장하거나 전송하지 않습니다(데이터와 개인정보 참고).
리소스 사용
| 항목 | 값 |
|---|---|
| 메모리(작업 관리자 표시) | 약 70KB(x64) · 120KB(x86) — 기동 후 조용한 상태 기준. 메뉴 명령 직후에는 잠시 200KB대로 오르고 활동이 멈춘 뒤 다시 내려갑니다 |
| 커밋 메모리 | 약 1.4MB — Win32 트레이 앱의 바닥값이며 변하지 않습니다 |
| CPU | 유휴 시 사실상 0 |
작업 관리자 수치가 낮은 이유는 두 가지입니다. 텍스트 입력을 받지 않으므로 자기 스레드의 IME를 꺼 입력기 DLL이 붙지 않게 하고, 마지막 활동 2초 뒤 작업 집합을 한 번 비웁니다. 이는 표시 수치와 상주 페이지를 줄이는 것이며 메모리 할당 자체를 줄이는 것은 아닙니다. 주기 타이머가 아니라 활동 뒤 한 번만 깨어납니다.
단축키
| 키 | 동작 |
|---|---|
Shift+Space | 한/영 전환(한/영 키 입력과 같음) |
- 단축키는 Shift+Space로 고정입니다. 초경량을 지키기 위한 의도적인 선택이라 바꿀 수 없습니다.
- nShiftSpace가 실행 중인 동안에는 Shift+Space를 Windows가 가로채 nShiftSpace에 전달합니다. 다른 프로그램에서 Shift+Space 조합을 쓰고 싶다면 잠시 종료하세요.
설정
nShiftSpace에는 설정이 없습니다.
- 설정 파일, 설정 화면이 없습니다.
- 기본 상태에서는 레지스트리에 아무것도 쓰지 않습니다. 트레이 메뉴의 “로그인 시 자동 실행”을 켜거나 사용자가 직접 등록한 경우에만 값이 생깁니다.
- 트레이 메뉴의 두 항목 중 “키보드 LED 표시” 상태는 저장되지 않습니다.
- 단축키를 바꾸는 기능은 앞으로 만들 nexa-mapper에서 다룰 예정입니다(알려진 제한 참고).
자동 실행
nShiftSpace는 로그인할 때 자동으로 떠 있어야 제 역할을 하는 상주 프로그램이지만, winget과 Chocolatey 모두 시작 프로그램에 자동 등록하지 않습니다. 대부분은 트레이 메뉴 한 번이면 충분합니다. 관리자 권한 창에서도 쓰려면 아래 수동 절차의 방법 C를 따르세요.
가장 쉬운 방법 — 트레이 메뉴
- nShiftSpace를 한 번 실행합니다(winget은
nshiftspace, Chocolatey는nShiftSpace-x64, zip은 exe 더블클릭). - 트레이 아이콘을 클릭해 로그인 시 자동 실행을 체크합니다.
지금 실행 중인 exe의 경로를 큰따옴표로 감싸 HKCU\Software\Microsoft\Windows\CurrentVersion\Run의 nShiftSpace 값에 씁니다(아래 방법 B와 같은 값). 체크를 해제하면 그 값을 지우고, 체크 표시는 메뉴를 열 때마다 값이 있는지 보고 정합니다.
| 설치 방법 | 이렇게 실행한 뒤 켜세요 | 이유 |
|---|---|---|
| winget | nshiftspace (별칭) | 탐색기에서 Packages\... 아래 exe를 직접 실행한 뒤 켜면 업그레이드 때 끊어질 수 있습니다 |
| Chocolatey | nShiftSpace-x64 또는 tools 폴더의 exe | 경로에 버전이 없어 어느 쪽이든 유지됩니다 |
| zip | 압축을 푼 위치의 exe | 그 위치가 그대로 기록됩니다. exe를 옮겼다면 다시 켜세요 |
주의 제거하기 전에 체크를 해제하세요. 패키지를 제거해도 이 값은 지워지지 않습니다. 일반판과 LED판은 같은 값을 쓰므로, 판을 바꿨다면 새 판에서 체크를 해제했다가 다시 켜 경로를 새로 기록하세요.
참고 이 메뉴로 등록하면 일반 권한으로 실행되므로 관리자 권한 창에서는 단축키가 전달되지 않습니다. 그럴 때는 방법 C를 쓰세요.
아래부터는 메뉴 대신 직접 등록하는 절차입니다.
1단계 — 가리킬 exe 경로 정하기
주의 winget으로 설치했다면
WinGet\Packages\...아래의 실제 exe를 가리키면 안 됩니다. 업그레이드할 때 그 폴더가 다시 만들어지면서 바로 가기가 끊어집니다. 경로가 바뀌지 않는 별칭 경로WinGet\Links\nshiftspace.exe를 가리키세요.
| 설치 방법 | 가리킬 경로 |
|---|---|
| winget | %LOCALAPPDATA%\Microsoft\WinGet\Links\nshiftspace.exe |
| Chocolatey | %ChocolateyInstall%\lib\nshiftspace\tools\nShiftSpace-x64.exe (32비트 OS는 -x86) |
| zip | 압축을 푼 위치의 exe |
PowerShell에서 경로를 변수에 담고 존재하는지 확인합니다.
# winget
$exe = "$env:LOCALAPPDATA\Microsoft\WinGet\Links\nshiftspace.exe"
# Chocolatey라면
# $exe = "$env:ChocolateyInstall\lib\nshiftspace\tools\nShiftSpace-x64.exe"
# zip이라면
# $exe = "C:\Tools\nShiftSpace\nShiftSpace-x64.exe"
Test-Path $exe
True가 나오면 2단계로 넘어갑니다.
winget에서 False가 나올 때 — winget은 별칭을 심볼릭 링크로 만드는데, Windows 개발자 모드가 꺼져 있으면 만들지 못할 수 있습니다.
- 설정 → 개인 정보 및 보안 → 개발자용 → 개발자 모드를 켭니다.
- 다시 설치합니다.
winget uninstall SosomLab.nShiftSpace
winget install SosomLab.nShiftSpace
Test-Path "$env:LOCALAPPDATA\Microsoft\WinGet\Links\nshiftspace.exe"
개발자 모드를 켤 수 없다면 실제 exe 경로를 찾아 쓸 수 있지만, 이 경우 업그레이드할 때마다 다시 등록해야 할 수 있습니다. 경로를 고정하고 싶다면 zip이나 Chocolatey 설치를 권합니다.
$exe = (Get-ChildItem "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\SosomLab.nShiftSpace_*" `
-Recurse -Filter "nShiftSpace-*.exe" | Select-Object -First 1).FullName
$exe
2단계 — 등록 방법 고르기
| 상황 | 추천 |
|---|---|
| 그냥 로그인할 때 뜨기만 하면 됨 | 방법 A — 시작프로그램 폴더 |
| 시작프로그램 폴더를 깔끔히 두고 싶음 | 방법 B — 레지스트리 Run 키 |
| 작업 관리자·관리자 권한 터미널 위에서도 한/영 전환이 필요 | 방법 C — 작업 스케줄러 |
셋 중 하나만 쓰세요. 1단계에서 $exe를 정한 같은 PowerShell 창에서 이어서 실행합니다.
방법 A — 시작프로그램 폴더에 바로 가기
$startup = [Environment]::GetFolderPath('Startup')
$lnk = Join-Path $startup 'nShiftSpace.lnk'
$ws = New-Object -ComObject WScript.Shell
$sc = $ws.CreateShortcut($lnk)
$sc.TargetPath = $exe
$sc.WorkingDirectory = Split-Path $exe
$sc.Description = 'nShiftSpace - Shift+Space 한/영 전환'
$sc.Save()
Test-Path $lnk # True면 등록 완료
모든 사용자에게 적용하려면 Startup을 CommonStartup으로 바꿔 관리자 권한 PowerShell에서 실행하세요.
마우스로 하려면
Win+R(실행) 또는 파일 관리자 주소창에shell:startup을 입력해 시작프로그램 폴더를 엽니다. 모든 사용자용은shell:common startup(관리자 권한 필요)입니다.- 1단계의 exe를 마우스 오른쪽 버튼으로 끌어다 그 폴더에 놓고 여기에 바로 가기 만들기를 고릅니다. 왼쪽 버튼으로 끌면 파일이 복사되거나 이동되므로 주의하세요.
듀얼 패널 파일 관리자로 하면 더 편합니다. 한쪽 패널 주소창에 shell:common startup(또는 shell:startup)을, 다른 쪽에 exe가 있는 폴더를 열어 두고 exe의 바로 가기를 만들어 시작프로그램 폴더 쪽으로 옮기면 됩니다. SosomLab의 Nexa Dir는 듀얼 패널과 주소창 shell: 경로 입력을 지원합니다.

방법 B — 레지스트리 Run 키
New-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' `
-Name 'nShiftSpace' -Value "`"$exe`"" -PropertyType String -Force
경로에 공백이 있을 수 있으므로 큰따옴표로 감싸는 것이 중요합니다.
방법 C — 작업 스케줄러 (관리자 권한 창에서도 쓰려면)
작업 관리자나 관리자 권한 터미널처럼 관리자 권한으로 실행된 창이 포커스를 가지면, 일반 권한으로 실행된 nShiftSpace의 단축키는 그 창에 전달되지 않습니다. Windows 보안 정책(UIPI) 때문이며 같은 방식의 프로그램은 모두 마찬가지입니다.
해결하려면 nShiftSpace 자체를 높은 권한으로 실행해야 하는데, 방법 A·B로는 불가능하고 작업 스케줄러만 가능합니다. 관리자 권한 PowerShell에서 실행하세요.
$exe = "$env:LOCALAPPDATA\Microsoft\WinGet\Links\nshiftspace.exe" # 1단계에서 정한 경로
$action = New-ScheduledTaskAction -Execute $exe
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME `
-LogonType Interactive -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries -ExecutionTimeLimit 0
Register-ScheduledTask -TaskName 'nShiftSpace' -Action $action -Trigger $trigger `
-Principal $principal -Settings $settings -Force
| 옵션 | 이유 |
|---|---|
-RunLevel Highest | 핵심. 관리자 권한 창 위에서도 Shift+Space가 동작하게 함 |
-ExecutionTimeLimit 0 | 시간 제한 없음. 기본값(3일)이면 상주 중에 종료됨 |
-AllowStartIfOnBatteries | 노트북 배터리 사용 중에도 실행 |
-LogonType Interactive | 로그인한 세션에서 실행 — 트레이 아이콘이 보이려면 필요 |
- 높은 권한으로 실행되지만 UAC 확인 창은 뜨지 않고 로그인할 때 조용히 실행됩니다.
- 관리자 계정이 아니거나 조직 정책으로 막힌 PC에서는 실패할 수 있습니다. 그럴 땐 방법 A를 쓰세요.
3단계 — 확인
로그아웃 후 다시 로그인(또는 재부팅)해서 트레이에 ‘가·A’ 아이콘이 있는지 확인합니다. 지금 바로 확인하려면:
Start-Process $exe
Get-Process nShiftSpace-x64, nshiftspace -ErrorAction SilentlyContinue
Shift+Space로 한/영이 바뀌면 정상입니다. 중복 실행은 막혀 있으므로 이미 실행 중이어도 문제없습니다.
자동 실행 해제
등록할 때와 같은 방법으로 지웁니다.
# 트레이 메뉴로 켰다면 — 메뉴에서 "로그인 시 자동 실행" 체크 해제 (방법 B와 같은 값을 지웁니다)
# 방법 A — 바로 가기 삭제
Remove-Item (Join-Path ([Environment]::GetFolderPath('Startup')) 'nShiftSpace.lnk')
# 방법 B — Run 키 삭제
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'nShiftSpace'
# 방법 C — 예약 작업 삭제 (관리자 권한 PowerShell)
Unregister-ScheduledTask -TaskName 'nShiftSpace' -Confirm:$false
화면에서 확인하려면 방법 A·B는 작업 관리자 → 시작 프로그램(시작 앱) 탭, 방법 C는 작업 스케줄러를 보면 됩니다.
업그레이드할 때
| 채널 | 할 일 |
|---|---|
| Chocolatey | 없음 — 알아서 종료해 줍니다. 그대로 choco upgrade nshiftspace -y |
| winget | 트레이 아이콘 → 종료 후 winget upgrade SosomLab.nShiftSpace |
Links 별칭 경로로 등록했다면 업그레이드 후에도 자동 실행이 그대로 유지됩니다. 다른 경로를 썼다면 1단계의 Test-Path로 경로가 아직 유효한지 확인하세요.
데이터와 개인정보
- nShiftSpace는 아무 데이터도 저장하거나 전송하지 않습니다. 네트워크 통신 코드도 설정 파일도 로그도 없습니다.
- 일반판은 키 입력을 감시하지 않습니다. Windows에 Shift+Space 하나만 등록해 두고, 그 조합이 눌렸다는 알림만 받습니다.
- LED판은 LED 표시가 켜져 있는 동안 Windows의 Raw Input으로 모든 키의 눌림·뗌 알림을 받습니다. 눌렸는지 떼어졌는지만 보고 아이콘을 바꾸며, 어떤 키인지 기록하거나 저장·전송하지 않습니다. 메뉴에서 끄면 수신을 해제합니다.
- 자동 실행을 켠 경우 그
Run값(또는 직접 등록한 바로 가기·예약 작업)만 남으며, 자동 실행 해제로 지울 수 있습니다.
문제 해결
설치
| 증상 | 원인과 조치 |
|---|---|
winget install이 패키지를 찾지 못함 | 소스 정보가 오래됨 — winget source update 후 다시 시도 |
winget 명령이 없음 | Microsoft Store에서 앱 설치 관리자 설치(Windows 10 1809 미만은 미지원) |
choco install이 “package not found” | choco search nshiftspace로 확인. 반영 지연이면 잠시 후 다시 시도 |
choco가 “액세스가 거부되었습니다” | 관리자 권한 PowerShell에서 실행 |
| 업그레이드·제거가 파일 잠김으로 실패 | 트레이 아이콘 → 종료 후 다시 시도(특히 winget) |
실행
| 증상 | 원인과 조치 |
|---|---|
| 실행해도 아무 일도 안 일어남 | 정상입니다. 창이 없는 트레이 프로그램입니다. 작업 표시줄의 **∧**를 눌러 아이콘을 확인하세요 |
| 두 번 실행했는데 하나만 뜸 | 정상입니다 — 중복 실행을 막습니다 |
nshiftspace 명령을 못 찾음(winget) | 새 터미널 창에서 다시 시도. 그래도 안 되면 별칭이 없는 경우 → 1단계 참고 |
| ”Shift+Space 단축키 등록에 실패했습니다.” 창이 뜨고 종료됨 | 다른 프로그램이 Shift+Space를 먼저 등록함 → 아래 “어디서도 전혀 안 된다” 참고 |
| 백신이 차단함 | CRT 없이 만든 초소형 exe라 드물게 오탐이 생깁니다. Releases의 파일과 SHA256을 대조한 뒤 예외로 등록하세요 |
단축키가 안 먹을 때
특정 창에서만 안 된다 → 관리자 권한 문제. 작업 관리자, 관리자 권한 터미널, 일부 설치 프로그램 위에서만 안 된다면 정상 동작입니다(UIPI). nShiftSpace를 관리자 권한으로 실행하거나 방법 C로 자동 실행을 등록하세요.
어디서도 전혀 안 된다 → 단축키 선점. 다른 프로그램이 Shift+Space를 먼저 등록했을 수 있습니다. 먼저 등록한 쪽이 우선합니다. 다른 한/영 전환 유틸리티(원조 jwShiftSpaceKey 포함), 매크로 프로그램, 게임 오버레이, 일부 입력기 도구를 종료한 뒤 nShiftSpace를 다시 실행해 보세요.
한/영은 바뀌는데 입력이 이상하다 → 입력기 설정. 실제 전환은 Windows 입력기가 합니다. 설정 → 시간 및 언어 → 언어 및 지역 → 한국어 → 언어 옵션 → Microsoft 입력기 → 옵션에서 한/영 전환 키 설정을 확인하세요.
트레이 아이콘은 있는데 반응이 없다. 종료했다가 다시 실행해 보고, 그래도 안 되면 재부팅 후 다시 시도하세요.
자동 실행
| 증상 | 원인과 조치 |
|---|---|
| 업그레이드 후 자동 실행이 안 됨 | Links 별칭 대신 Packages 아래 실제 경로가 기록된 경우 → nshiftspace로 실행한 뒤 메뉴를 껐다 켜거나, 1단계부터 다시 |
| 메뉴에 체크돼 있는데 다른 판이 뜸 | 일반판과 LED판이 같은 값을 쓰기 때문 → 지금 쓰는 판에서 체크를 해제했다가 다시 켜기 |
| 제거 후 시작 프로그램 탭에 흔적이 남음 | 제거 전에 메뉴를 끄지 않은 경우 → 자동 실행 해제의 방법 B 명령으로 삭제 |
| 예약 작업(방법 C)이 실행되지 않음 | 작업 스케줄러에서 nShiftSpace 작업의 마지막 실행 결과 확인. -ExecutionTimeLimit 0을 빠뜨리면 3일 뒤 종료됨 |
| 로그인할 때 검은 창이 잠깐 뜸 | 방법 B에서 경로를 큰따옴표로 감싸지 않은 경우 → 다시 등록 |
| 작업 관리자 시작 프로그램 목록에 없음 | 시작 프로그램 탭은 방법 A·B만 보여 줍니다. 방법 C는 작업 스케줄러에서 확인 |
해결되지 않으면 GitHub Issues에 Windows 버전(winver 결과), 설치 방법, nShiftSpace 버전, 증상이 나타나는 상황을 적어 알려 주세요.
버전 변경 이력
버전 흐름 요약
- v0.3.0 (2026-10-17) — 메모리 표시값 2차 개선(약 70KB) · LED판 별도 패키지.
- v0.2.0 (2026-10-17) — 키보드 LED 표시판 · 로그인 시 자동 실행 메뉴 · 작업 집합 비우기. 크기는 약 5KB로 늘었습니다.
- v0.1.0 (2026-07-04) — 첫 공개. 4.5KB짜리 Shift+Space 한/영 전환 프로그램 nShiftSpace. 이후 winget(2026-07-17)·Chocolatey(2026-07-30) 정식 등록과 사용자 위키 발행(2026-08-02)이 이어졌습니다.
v0.3.0 — 2026-10-17
- 개선
- 작업 관리자 메모리 약 70KB(x64) · 120KB(x86) — 트레이 메뉴를 열 때 한국어 입력기 DLL이 붙어 수치가 다시 오르던 원인을 찾아, 자기 스레드의 IME를 끕니다. 텍스트 입력을 받지 않으므로 기능 손실은 없습니다.
- 작업 집합 비우기 시점 변경 — 어떤 메시지든 받은 뒤 2초 동안 조용하면 한 번 비웁니다. 주기 타이머가 아니라 유휴 CPU는 그대로입니다. 커밋 메모리는 약 1.4MB로 변하지 않습니다.
- 실행 파일 크기는 v0.2.0과 같습니다.
- 변경
- LED판 별도 패키지 — Chocolatey
nshiftspace-led(2026-10-21 승인) · wingetSosomLab.nShiftSpace.LED(심사 중). 기존nshiftspace/SosomLab.nShiftSpace는 일반판 그대로입니다.
- LED판 별도 패키지 — Chocolatey
v0.2.0 — 2026-10-17
- 추가
- 키보드 LED 표시판(별도 빌드) — 아무 키나 누르는 동안 트레이 아이콘이 초록으로 켜집니다. Raw Input을 쓰며 메뉴에서 끌 수 있습니다. 일반판에는 이 코드가 들어가지 않습니다.
- 로그인 시 자동 실행 메뉴 — 체크하면 실행 중인 exe 경로를
Run값에 쓰고, 해제하면 지웁니다.
- 개선
- 메모리 표시값 약 300KB(x64) · 160KB(x86) — 초기화 직후와 메뉴를 닫은 뒤 작업 집합을 비웁니다.
- 변경
- 실행 파일 크기 4.5KB → 5,120바이트(x64) · 5,632바이트(x86). 자동 실행 메뉴가 들어가면서 늘었습니다.
- 기본 상태에서는 여전히 레지스트리에 쓰지 않으며, 자동 실행을 켠 경우에만 값 하나를 씁니다.
배포·문서 — 2026-08-02 (버전 변경 아님)
실행 파일은 v0.1.0 그대로입니다.
- 추가
- winget 정식 등록(2026-07-17) —
winget install SosomLab.nShiftSpace로 설치할 수 있습니다. - Chocolatey 정식 승인(2026-07-30) —
choco install nshiftspace -y로 설치할 수 있습니다. - 사용자 위키 발행(2026-08-02) — 설치하기 · 자동 실행 설정 · 사용법 · 문제 해결 등 8개 페이지를 Wiki에 공개했습니다.
- winget 정식 등록(2026-07-17) —
- 개선
- 자동 실행 절차를 정리했습니다 — winget 별칭 경로를 써야 하는 이유, 별칭이 없을 때의 대처, 관리자 권한 창에서도 쓰기 위한 작업 스케줄러 등록 방법.
v0.1.0 — 2026-07-04
첫 공개 릴리스입니다.
- 추가
- Shift+Space로 한/영 전환 — 누르면 한/영 키 입력을 대신 보냅니다.
- 4.5KB 단일 실행 파일 — GUI 프레임워크·C 런타임 없이 kernel32·user32·shell32만 사용합니다.
- 대기 중 CPU 사실상 0 — 키보드 훅 대신 Windows 단축키 등록 기능을 씁니다.
- 트레이 상주 — 창 없이 트레이 아이콘만 뜨고 메뉴에서 종료합니다. 탐색기가 다시 시작되어도 아이콘이 복구되고, 중복 실행은 막힙니다.
- ‘가·A’ 픽셀 아트 아이콘(198바이트) 내장.
- x64 · x86 두 가지 빌드를 zip으로 제공합니다.
참고 — 개발 중 2026-11-05 기준 최신 릴리스는 v0.3.0이며, 공개된 도구는 nShiftSpace(일반판·LED판)뿐입니다. 다음 도구인 키 재매핑 엔진 nexa-mapper와 매핑 내장 exe 내보내기는 로드맵에 있으나 아직 개발을 시작하지 않은 계획 단계입니다.
알려진 제한
- 관리자 권한 창에서는 동작하지 않습니다(일반 권한으로 실행한 경우). Windows 보안 정책(UIPI) 때문이며, 작업 스케줄러로 높은 권한 실행을 등록하면 해결됩니다(방법 C).
- 단축키는 Shift+Space 고정입니다. 다른 키로 바꿀 수 없습니다. 키를 자유롭게 바꾸는 기능은 계획 중인 nexa-mapper에서 다룰 예정입니다.
- 다른 프로그램이 Shift+Space를 먼저 등록하면 nShiftSpace는 오류 창을 띄우고 종료합니다.
- winget은 업그레이드·제거 때 실행 중인 프로그램을 종료해 주지 않습니다. 먼저 트레이에서 종료하세요.
- 어느 설치 방법도 자동 실행을 등록하지 않습니다. 트레이 메뉴에서 로그인 시 자동 실행을 한 번 켜야 합니다.
- 패키지를 제거해도 메뉴로 켠
Run값은 남습니다. 제거 전에 체크를 해제하세요. - LED판 winget 패키지는 아직 등록 전입니다(2026-11-05 확인). 그동안은 Chocolatey나 zip을 쓰세요.
- LED 표시 상태는 저장되지 않습니다. 실행할 때마다 켜짐으로 시작합니다.
- 관리자 권한 창이 포커스일 때 LED 표시가 반응하는지는 아직 확인되지 않았습니다.