Nexa Shortcut
v0.3.0윈도우용 초경량 단축키 유틸리티 모음
모든 데스크톱 OS에서 사용할 수 있어요
- 5,120B 일반판 실행 파일 (x64)
- 6,144B LED판 실행 파일 (x64)
- 약 70KB 작업 관리자 표시 메모리 (x64, 유휴)
- 8KB CI 크기 상한 (초과 시 빌드 실패)
설치
Windows
winget — 일반판 한 줄 설치 (권장)
winget install SosomLab.nShiftSpace 포터블 exe가 PATH에 등록되어 nshiftspace 명령으로도 실행됩니다(x64·x86 자동 선택). 업그레이드: winget upgrade SosomLab.nShiftSpace · 제거: winget uninstall SosomLab.nShiftSpace. ⚠️ winget은 실행 중인 프로그램을 대신 종료해 주지 않으므로, 업그레이드·제거 전에 트레이 아이콘에서 먼저 종료하세요.
Chocolatey — 일반판 한 줄 설치 (관리자 권한)
choco install nshiftspace -y 관리자 권한 PowerShell에서 실행하세요. OS 아키텍처에 맞는 exe 하나만 설치되고 같은 이름의 shim이 PATH에 등록되어 nShiftSpace-x64(32비트 OS는 nShiftSpace-x86) 명령으로 실행됩니다. 업그레이드: choco upgrade nshiftspace -y · 제거: choco uninstall nshiftspace -y. ✅ winget과 달리 업그레이드·제거 시 실행 중인 프로그램을 자동으로 종료해 줍니다.
LED판 — Chocolatey (관리자 권한)
choco install nshiftspace-led -y 아무 키나 누르는 동안 트레이 아이콘이 초록으로 켜지는 판입니다. nShiftSpace-led-x64(32비트 OS는 nShiftSpace-led-x86) 명령으로 실행합니다. 일반판과 같은 단축키를 쓰고 동시에 실행되지 않으므로 둘 중 하나만 설치하세요. 업그레이드: choco upgrade nshiftspace-led -y · 제거: choco uninstall nshiftspace-led -y.
LED판 — winget (등록 심사 중)
winget install SosomLab.nShiftSpace.LED ⏳ winget-pkgs 등록 심사가 끝나기 전까지는 검색되지 않습니다. 그동안은 Chocolatey나 zip을 쓰세요. 등록 후에는 nshiftspace-led 명령으로 실행됩니다.
자동 실행 — 트레이 메뉴 (가장 쉬운 방법)
트레이 아이콘 클릭 → "로그인 시 자동 실행" 체크 지금 실행 중인 exe의 경로를 HKCU\Software\Microsoft\Windows\CurrentVersion\Run의 nShiftSpace 값에 쓰고, 체크를 해제하면 지웁니다. winget은 nshiftspace 별칭으로 실행한 상태에서 켜세요. 패키지 폴더의 exe를 직접 실행한 뒤 켜면 업그레이드 때 끊어질 수 있습니다. 제거하기 전에 체크를 해제하세요 — 패키지 제거는 이 값을 지우지 않습니다. 메뉴로 끝났다면 아래 수동 절차는 필요 없고, 관리자 권한 창에서도 쓰려면 ③을 보세요.
수동 등록 ① — 설치된 실행 파일 위치 확인
where.exe nshiftspace winget·Chocolatey 둘 다 시작프로그램에 자동 등록하지 않습니다. 메뉴 대신 직접 등록하려면 아래 절차를 한 번만 해 두면 됩니다. winget의 경우 위 명령이 알려주는 %LOCALAPPDATA%\Microsoft\WinGet\Links\nshiftspace.exe가 PATH에 걸린 별칭이고, 압축이 풀린 실제 exe는 …\WinGet\Packages\SosomLab.nShiftSpace_…\ 안에 있습니다. 바로가기는 업그레이드 후에도 경로가 그대로인 Links\nshiftspace.exe를 가리키게 하세요. Chocolatey로 설치했다면 %ChocolateyInstall%\lib\nshiftspace\tools\nShiftSpace-x64.exe가 대상입니다. (설치 직후에는 PATH가 반영되도록 터미널 창을 새로 열어야 하고, Links 별칭이 없다고 나오면 Windows 개발자 모드를 켠 뒤 재설치하면 생깁니다 — winget이 별칭을 심볼릭 링크로 만들기 때문입니다)
수동 등록 ② — 시작프로그램 바로가기 만들기 (PowerShell) (winget 설치 기준)
$exe = (Get-Command nshiftspace).Source
$dir = [Environment]::GetFolderPath('Startup')
$lnk = (New-Object -ComObject WScript.Shell).CreateShortcut("$dir\nShiftSpace.lnk")
$lnk.TargetPath = $exe
$lnk.Save() 이 폴더에 바로가기가 있어야 윈도우 시작 시 자동 실행됩니다. 위 스크립트는 현재 사용자용이며, 모든 사용자에게 적용하려면 Startup을 CommonStartup으로 바꿔 관리자 권한 PowerShell에서 실행하세요. 해제는 만들어진 nShiftSpace.lnk를 지우면 됩니다.
수동 등록 ② — 파일 관리자에서 직접 만들기
shell:startup
shell:common startup Win+R(실행)이나 파일 관리자 주소창에 위 경로를 입력하면 시작프로그램 폴더로 바로 이동합니다. shell:startup은 현재 사용자용, shell:common startup은 모든 사용자용(관리자 권한 필요)입니다. 여기에 ①에서 확인한 exe의 바로가기(우클릭 → 바로 가기 만들기)를 넣으면 등록이 끝납니다.
수동 등록 ② — 듀얼 패널로 한 번에
왼쪽 패널 주소창 → shell:common startup
오른쪽 패널 주소창 → ①에서 확인한 실행 파일 폴더 패널이 둘인 파일 관리자를 쓰면 폴더를 오갈 필요가 없습니다. 왼쪽 패널을 시작프로그램 폴더로, 오른쪽 패널을 실행 파일이 있는 폴더로 열어 둔 다음, 오른쪽의 exe에서 우클릭 → 바로 가기 만들기로 만든 .lnk를 왼쪽 패널로 끌어다 놓으면 그대로 등록됩니다. 양쪽 폴더가 한 화면에 보이니 경로를 잘못 짚을 일도 없습니다. 같은 SosomLab 앱인 Nexa Dir가 듀얼 패널·패널별 탭·드래그앤드롭·주소창 shell: 경로 입력을 모두 지원해 이 작업에 잘 맞습니다. 설치 없이 exe 하나로 실행되는 포터블 탐색기입니다.
shell:common startup을 입력해 연 시작프로그램 폴더(등록을 마친 nShiftSpace 바로가기가 보입니다), 오른쪽 패널은 실행 파일이 있는 폴더입니다.수동 등록 ③ — 작업 스케줄러 (관리자 권한 창에서도 쓰려면) (winget 설치 기준)
$exe = "$env:LOCALAPPDATA\Microsoft\WinGet\Links\nshiftspace.exe"
$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 작업 관리자나 승격된 터미널처럼 관리자 권한으로 실행된 창이 포커스를 가지면 일반 권한으로 뜬 nShiftSpace의 단축키는 전달되지 않습니다. Windows의 UIPI 보안 정책이라 우회할 수 없고, 같은 방식의 프로그램은 모두 동일합니다. 해결하려면 nShiftSpace 자체를 승격 실행해야 하는데 트레이 메뉴·시작프로그램 폴더·Run 키로는 불가능하고 작업 스케줄러만 가능합니다. 위 스크립트를 관리자 권한 PowerShell에서 실행하세요 — -RunLevel Highest가 핵심이고, -ExecutionTimeLimit 0은 상주 프로그램이 3일 뒤 종료되지 않게 합니다. 로그인 시 조용히 실행되며 UAC 프롬프트는 뜨지 않습니다. 해제: Unregister-ScheduledTask -TaskName 'nShiftSpace' -Confirm:$false
- 또는 GitHub Releases에서
nShiftSpace-x64.zip(64비트) 또는nShiftSpace-x86.zip(32비트)을 내려받습니다. LED판은nShiftSpace-led-x64.zip·nShiftSpace-led-x86.zip입니다. - 압축을 풀고
nShiftSpace-x64.exe를 실행하면 트레이에 상주하며 바로 동작합니다. (별도 설치 과정 없음) - 이 경우에도 자동 실행은 트레이 메뉴의 로그인 시 자동 실행을 체크하면 됩니다 — 압축을 푼 위치가 그대로 기록되니 exe를 옮겼다면 다시 켜 주세요.
직접 내려받은 exe에 SmartScreen 경고가 보이면 "추가 정보 → 실행"을 누르세요. 종료는 트레이 아이콘 메뉴의 종료입니다. 시스템 요구사항: Windows 10 / 11 (x64·x86). 패키지 매니저 채널 현황 (2026-11-07 실측): ✅ winget SosomLab.nShiftSpace 0.3.0(PR #454771 병합), ✅ Chocolatey nshiftspace 0.3.0 승인, ✅ Chocolatey nshiftspace-led 0.3.0 승인, ⏳ winget SosomLab.nShiftSpace.LED 등록 전(PR #454772 심사 중). 설치·자동 실행·문제 해결의 더 자세한 안내는 사용 설명서를 참고하세요.
GUI 프레임워크와 CRT 없이 순수 Win32 API로만 작성해 실행 파일 크기와 메모리 사용을 최소화한 단축키 유틸 모음. 첫 번째 도구 nShiftSpace는 약 5KB로 Shift+Space 한/영 전환을 제공하고, 누르는 키를 트레이 아이콘으로 보여 주는 LED판도 고를 수 있습니다.
주요 기능
- Shift+Space 한/영 전환 Shift+Space 입력 시 한/영 키(VK_HANGUL)를 대신 눌러줘, 어떤 키보드에서도 익숙한 방식으로 전환할 수 있습니다.
- 약 5KB 초경량 실행 파일 GUI 프레임워크·CRT 없이 순수 Win32 API만 사용합니다. 일반판 5,120바이트(x64), LED판 6,144바이트(x64). CI에서 8KB 초과 시 빌드가 실패하도록 크기 회귀를 차단합니다.
- 키보드 LED 표시판 (별도 패키지) 아무 키나 누르는 동안 트레이 아이콘이 초록으로 켜지고 떼면 파랑으로 돌아옵니다. 훅이 아닌 Raw Input이라 입력을 지연시키지 않고, 트레이 메뉴에서 끄면 일반판처럼 키 입력당 비용이 0이 됩니다. 입력 내용은 저장·전송하지 않습니다.
- 로그인 시 자동 실행 메뉴 트레이 메뉴에서 체크 한 번으로 로그인할 때 자동으로 뜹니다. 켤 때만 레지스트리 시작 프로그램(HKCU Run) 값을 쓰고, 끄면 지웁니다. 관리자 권한 창에서도 쓰려면 작업 스케줄러 등록을 안내합니다.
- 작업 관리자 기준 약 70KB 자기 스레드의 IME를 끄고 마지막 활동 2초 뒤 작업 집합을 한 번 비웁니다. 주기 타이머가 아니라 유휴 CPU는 그대로 0입니다. 표시 수치와 상주 페이지를 줄이는 방식이며 커밋 메모리는 약 1.4MB입니다.
- 대기 CPU 0에 가까운 동작 일반판은 키보드 훅 대신 RegisterHotKey를 사용해 OS가 Shift+Space만 알려 주므로 상주 중 CPU 비용이 거의 없습니다.
- 트레이 상주 & 자동 복구 트레이 아이콘 클릭으로 메뉴를 열어 자동 실행을 켜고 끄거나 종료하고, 탐색기(explorer) 재시작 시 트레이 아이콘을 자동 복구합니다. 중복 실행도 방지합니다.
- 198바이트 픽셀아트 아이콘 '가·A' 픽셀 아트를 담은 16×16 1bpp ICO를 스크립트로 생성해 내장 — 아이콘까지 초경량 원칙을 지킵니다.
- 무설정 · 흔적 없는 제거 설정 파일도 설정 화면도 없습니다. .NET이나 VC++ 재배포 패키지도 필요 없습니다. 레지스트리는 자동 실행을 켰을 때만 값 하나를 쓰므로, 끄고 나면 exe 하나만 지워 완전히 제거됩니다.
- winget · Chocolatey 정식 등록 일반판은 두 패키지 관리자 모두 0.3.0으로 한 줄 명령 설치·업그레이드·제거가 됩니다. LED판은 Chocolatey 승인 완료, winget은 등록 심사 중입니다. 설치·자동 실행·문제 해결은 사용자 위키 8개 페이지에 정리되어 있습니다.
- 키 재매핑 엔진 (로드맵) mappings.ini로 직접 정의하는 단순 키 재매핑(nexa-mapper)과 매핑 내장 독립 exe 내보내기를 계획하고 있습니다(아직 개발 전).
소개
Nexa Shortcut은 "하나의 기능을 가장 가볍게"를 원칙으로 하는 윈도우용 단축키 유틸리티 모음입니다. GUI 프레임워크는 물론 C 런타임(CRT)조차 링크하지 않고 순수 Win32 API만 사용해, 실행 파일 크기와 메모리 사용을 극단적으로 줄였습니다.
첫 번째 도구인 nShiftSpace(Nexa ShiftSpace)는 Shift+Space로 한/영을 전환하는 단일 기능 상주 프로그램입니다. 실행 파일이 약 5KB(x64 5,120바이트 · x86 5,632바이트)로 원조 jwShiftSpaceKey.exe 12KB의 절반에 못 미치고, RegisterHotKey 방식이라 대기 중 CPU 사용이 사실상 0입니다.
키보드 LED 표시판(LED판, 약 6KB)은 같은 기능에 키 입력 표시를 더한 별도 빌드입니다. 아무 키나 누르는 동안 트레이 아이콘이 초록으로 켜지고 떼면 파랑으로 돌아옵니다. 키보드 훅이 아니라 Raw Input으로 키 눌림·뗌 신호만 받아 다른 프로그램의 입력을 지연시키지 않으며, 입력 내용을 저장하거나 전송하지 않습니다. 트레이 메뉴에서 끄면 수신 자체를 해제합니다. 일반판과 같은 단축키를 쓰므로 둘 중 하나만 설치하세요.
메모리 표시값도 크게 줄었습니다. 텍스트 입력을 받지 않는 프로그램이라 자기 스레드의 IME를 끄고, 마지막 활동 2초 뒤 작업 집합을 비워 작업 관리자 기준 약 70KB(x64) · 120KB(x86)로 보입니다. 표시 수치와 상주 페이지를 줄이는 방식이며 커밋 메모리는 약 1.4MB로 그대로입니다.
트레이 아이콘도 초경량 원칙을 따릅니다. '가·A' 픽셀 아트를 담은 198바이트 1bpp ICO를 스크립트로 생성해 내장했으며, 중복 실행 방지와 탐색기 재시작 시 트레이 아이콘 자동 복구까지 갖췄습니다.
설정 파일도 설정 화면도 없고, 단축키가 Shift+Space로 고정된 것은 초경량을 지키기 위한 의도적인 선택입니다. 레지스트리는 트레이 메뉴의 "로그인 시 자동 실행"을 켤 때만 시작 프로그램 값 하나를 쓰고 끄면 지웁니다. 끈 뒤라면 제거는 exe 파일 하나를 지우는 것으로 끝납니다. 다만 Windows 보안 정책(UIPI) 때문에 작업 관리자처럼 관리자 권한으로 뜬 창이 포커스를 가지면 단축키가 전달되지 않는데, 이때는 작업 스케줄러로 nShiftSpace 자체를 승격 실행하면 해결됩니다 — 절차는 사용 설명서와 위키의 "자동 실행 설정"에 정리해 두었습니다.
일반판은 winget과 Chocolatey에 0.3.0이 올라와 있어 한 줄 명령으로 설치되고, LED판은 Chocolatey로 설치할 수 있습니다(winget은 등록 심사 중). zip을 직접 받아 원하는 폴더에 두고 쓸 수도 있습니다. 설치·자동 실행·문제 해결을 다루는 사용자 위키(8개 페이지)는 위의 "문서 (Wiki)" 버튼에서 볼 수 있습니다.
앞으로 mappings.ini로 사용자가 직접 정의하는 단순 키 재매핑 엔진(nexa-mapper)과, 현재 매핑만 내장한 독립 exe 내보내기 기능을 계획하고 있습니다(아직 개발 전). MIT 라이선스로 누구나 무료로 사용할 수 있습니다.
릴리스 노트
v0.3.0 2026-10-17 메모리 표시값을 약 70KB로 2차 개선 + LED판을 별도 패키지로 분리. 실행 파일 크기는 v0.2.0과 같습니다.
개선
- 작업 관리자 메모리 약 70KB(x64) · 120KB(x86) — 트레이 메뉴를 열 때 한국어 IME/TSF 스택(DLL 20여 개)이 프로세스에 붙어 수치가 800KB~1MB로 다시 오르던 원인을 찾아, 자기 스레드의 IME를 끕니다(
ImmDisableIME). 텍스트 입력을 받지 않으므로 기능 손실은 없습니다. - 작업 집합 비우기 시점 변경 — 초기화·메뉴 직후의 호출 대신, 어떤 메시지든 받은 뒤 2초 동안 조용하면 한 번 비웁니다. 주기 타이머가 아니라 유휴 CPU는 그대로 0입니다. 표시 수치와 상주 페이지가 줄어드는 것이며 커밋 메모리는 약 1.4MB로 변하지 않습니다.
- 크기 유지 — import를 정리해 실행 파일 크기는 그대로입니다: 일반판 5,120 / 5,632바이트, LED판 6,144 / 6,656바이트(x64 / x86).
배포
- LED판 별도 패키지 신설 — Chocolatey
nshiftspace-led(2026-10-21 승인) · wingetSosomLab.nShiftSpace.LED(PR #454772 심사 중). 기존nshiftspace/SosomLab.nShiftSpace는 일반판 그대로입니다. 두 판은 같은 단축키를 쓰므로 하나만 설치하세요. - 일반판 0.2.0·0.3.0 등재 — winget PR #454746·#454771 병합(2026-10-20), Chocolatey 승인(2026-10-21).
v0.2.0 2026-10-17 키보드 LED 표시판 · 로그인 시 자동 실행 메뉴 · 작업 집합 비우기 — v0.1.0 이후 첫 기능 업데이트.
추가
- 키보드 LED 표시판(별도 빌드) — 아무 키나 누르는 동안 트레이 아이콘이 초록으로 켜지고 떼면 파랑으로 돌아옵니다.
nShiftSpace-led-x64.zip·nShiftSpace-led-x86.zip으로 제공합니다. 키보드 훅이 아니라 Raw Input으로 눌림·뗌만 받아 다른 프로그램의 입력을 지연시키지 않고, 트레이 메뉴 키보드 LED 표시로 끄면 수신을 해제해 키 입력당 비용이 0이 됩니다. 켜고 끈 상태는 저장하지 않으며 실행할 때마다 켜짐으로 시작합니다. 일반판에는 이 코드가 들어가지 않습니다. - 로그인 시 자동 실행 메뉴 — 트레이 메뉴에서 체크하면 실행 중인 exe 경로를
HKCU\…\Run의nShiftSpace값에 쓰고, 해제하면 지웁니다. 체크 표시는 메뉴를 열 때마다 값의 존재 여부로 정해집니다.
개선
- 메모리 표시값 약 300KB(x64) · 160KB(x86) — 초기화 직후와 메뉴를 닫은 뒤 작업 집합을 비웁니다.
변경
- 실행 파일 크기 4.5KB → 5,120바이트(x64) · 5,632바이트(x86) — 자동 실행 메뉴가 들어가면서 늘었습니다. 8KB 상한은 그대로입니다.
- 레지스트리 원칙 — 기본 상태에서는 여전히 아무것도 쓰지 않으며, 자동 실행을 켠 경우에만 값 하나를 씁니다. 제거 전에 꺼 두세요.
배포 · 문서 2026-08-02 winget·Chocolatey 정식 등록 완료 + 사용자 위키 발행 (실행 파일은 v0.1.0 그대로).
배포
- Chocolatey
nshiftspace승인 완료(2026-07-30) — 관리자 권한 PowerShell에서choco install nshiftspace -y로 설치합니다. 업그레이드·제거 시 실행 중인 프로그램을 자동으로 종료해 주는 것이 winget과의 차이입니다. - winget
SosomLab.nShiftSpace등록 완료(2026-07-17, winget-pkgs PR #397365 병합) —winget install SosomLab.nShiftSpace. 포터블 매니페스트라 PATH에nshiftspace별칭이 등록되고 x64·x86이 자동 선택됩니다. - 이로써 목표했던 두 배포 채널이 모두 확보됐습니다. zip 직접 내려받기도 그대로 사용할 수 있습니다.
문서
- 사용자 위키 8개 페이지 발행 — 설치하기 · 자동 실행 설정 · 사용법 · 문제 해결 · 직접 빌드하기 · 릴리스와 배포 · 로드맵. 저장소
docs/가 설계·배포 이력 중심이라 일반 사용자가 읽기 무거웠던 문제를 해소했습니다. 상단 "문서 (Wiki)" 버튼에서 볼 수 있습니다. - 자동 실행 절차 정립 — winget 설치 시 바로가기가 끊기지 않도록
WinGet\Links\nshiftspace.exe별칭 경로를 쓰는 이유, 별칭이 없을 때 개발자 모드를 켜는 방법, 채널별 대상 경로를 정리했습니다. - 관리자 권한 창 제약과 해법 명문화 — UIPI 때문에 승격된 창에서는 단축키가 듣지 않는다는 점과, 작업 스케줄러(
-RunLevel Highest)로 우회하는 절차를 설치 안내와 위키에 함께 실었습니다.
v0.1.0 2026-07-04 첫 공개 — nShiftSpace, 4.5KB짜리 Shift+Space 한/영 전환 상주 프로그램.
추가
- Shift+Space로 한/영 전환 — 누르면 한/영 키(
VK_HANGUL)를 대신 눌러줍니다. 한/영 키가 없는 외산 키보드나 키 위치가 손에 맞지 않는 경우를 위한 도구입니다. - 4.5KB 단일 실행 파일 — GUI 프레임워크도 C 런타임(CRT)도 링크하지 않고 kernel32·user32·shell32만 사용합니다. .NET이나 VC++ 재배포 패키지가 필요 없습니다.
- 대기 중 CPU 0% — 키보드 훅(
SetWindowsHookEx)이 아니라RegisterHotKey를 써서 OS가 직접 키를 가로챕니다. 모든 키 입력을 검사하지 않으므로 백신이 훅 기반 프로그램을 의심하는 문제에서도 자유롭습니다. - 트레이 상주 — 창 없이 트레이 아이콘만 뜨고 우클릭으로 종료합니다. 탐색기가 재시작되어도 아이콘이 자동으로 되살아나며, 중복 실행은 뮤텍스로 차단됩니다.
- 198바이트 자체 아이콘 — '가·A' 픽셀 아트를 16×16 1bpp ICO로 스크립트 생성해 내장했습니다. 아이콘까지 초경량 원칙을 지켰습니다.
- x64 · x86 두 가지 빌드 제공. 레지스트리에 아무것도 쓰지 않아 exe를 지우면 완전히 제거됩니다.
알림
- 단축키는 Shift+Space 고정입니다 — 설정 파일도 설정 화면도 없습니다. 4.5KB를 지키기 위한 의도적인 선택이며, 키를 자유롭게 바꾸는 기능은 로드맵의 nexa-mapper에서 다룰 예정입니다.
- 다른 프로그램이 Shift+Space를 먼저 등록했다면(일부 IME·매크로·게임 오버레이) 단축키 등록이 실패할 수 있습니다.
약관 및 정책
등록된 약관·정책 문서가 없습니다.