Docs: Sanitize screenshot and fix version text formatting in README.md

This commit is contained in:
focskh committed 2026-11-11 01:58:14 +09:00
commit ffc1114c17
4 files changed
+154

No files matched your search

+91
View File
@@ -0,0 +1,91 @@
# QuickCmd 버전별 개발 및 개선 히스토리 (Version History)
- **프로그램명**: QuickCmd (초경량 스마트 상용구 자동치환 프로그램)
- **현재 버전**: v0.4
- **제작자**: 김기환 (Kim Ki Hwan)
- **배포 파일**: `QuickCmd.exe` (외부 런타임 불필요 단일 실행 파일)
---
## [v0.4] - 2026-11-06 (간헐적 키 입력 지연 현상 완벽 제거 및 훅 엔진 최적화)
### 1. 핵심 성능 및 입력 반응 속도 개선 (Zero Keystroke Lag)
- **주기적 강제 워킹셋 페이지아웃(`EmptyWorkingSet` 2.5초 타이머) 완전 제거**:
- 기존 2.5초마다 프로세스 메모리를 가상 메모리(디스크 페이지 파일)로 강제 페이지아웃하던 타이머로 인해, 타이핑 시 전역 키보드 훅(`WH_KEYBOARD_LL`) 코드와 버퍼가 Hard Page Fault를 일으키며 간헐적으로 일반 키 입력이 느려지던 근본 원인을 완벽히 제거.
- 이제 키보드 훅 코드와 버퍼가 항상 물리 RAM에 상주하여 언제 타이핑하든 **지연 시간 0ms**로 즉각 반응함.
- **전역 마우스 훅(`WH_MOUSE_LL`) 완전 제거**:
- 마우스를 움직일 때마다 초당 수백~1,000회씩 메인 스레드에 컨텍스트 스위칭을 유발하던 전역 마우스 훅을 제거하고, 키 이벤트 타임스탬프(`kbd->time`, 4초 이상 입력 공백 시 버퍼 자동 리셋) 및 활성 창(`GetForegroundWindow`) 비교 방식으로 대체하여 스레드 경합을 원천 차단.
- **키 입력당 커널 시스템 콜(`GetAsyncKeyState`) 제거**:
- 매 키 입력마다 6회씩 호출하던 `GetAsyncKeyState()` 커널 호출을 제거하고, 훅 내부의 유저 메모리 상태 변수로 `Shift`/`Ctrl`/`Alt`/`Win` 상태를 즉시 판별하도록 최적화.
---
## [v0.3] - 2026-11-03 (환경 설정 창 및 윈도우 시작프로그램 관리 기능 추가)
### 1. 신규 추가 기능
- **상단 헤더 `[설정]` 버튼 및 블랙 테마 환경 설정 모달 창 추가**:
- 메인 화면 우측 상단에 기어 아이콘이 포함된 **`[설정]`** 버튼을 배치하고, 클릭 시 블랙 테마로 디자인된 전용 환경 설정 창이 열리도록 구현.
- **윈도우 시작프로그램 등록 / 해제 체크박스 기능**:
- 설정 창 내부에서 **`윈도우 시작프로그램에 등록`** 항목을 체크하거나 체크 해제하여 윈도우 레지스트리(`HKCU\Software\Microsoft\Windows\CurrentVersion\Run`)에 즉시 등록/제거할 수 있도록 구현.
- 시작프로그램으로 부팅 시(`--tray` 옵션) 화면을 가리지 않고 시스템 트레이로 조용히 자동 실행되며 직전 사용 리스트가 즉시 활성화됨.
- **시스템 트레이 우클릭 메뉴 `[설정]` 바로가기 추가**:
- 트레이 아이콘 우클릭 메뉴에 **`설정 (시작프로그램 관리)`** 항목을 추가하여, 트레이 상태에서도 언제든 바로 설정 창으로 진입할 수 있도록 개선.
### 2. UI 개선 및 버전 업데이트
- **상단 타이틀바 1열 수평 정렬 및 현재 불러온 파일명 전용 바 분리**:
- 타이틀바 요소(`로고`, `QuickCmd`, `v0.3 · 제작자: 김기환`, `● 치환 ON`, `⚙ 설정`, `─`, `✕`)를 동일한 수평 중심축(`CenterY = 26px`)으로 일렬 정렬하고, 바로 아래에 **`현재 불러온 리스트 파일: [파일명.qvault]`** 전용 상태바를 분리 배치하여 겹침 현상 완벽 해결.
- 프로그램 헤더 배지(`v0.3 · 제작자: 김기환`), 트레이 메뉴 및 툴팁, 실행 파일(`QuickCmd.exe`) 리소스 버전을 모두 **v0.3**으로 업데이트.
---
## [v0.2] - 2026-11-02 (저장 경로/파일명 지정 기능 및 저장소 개선)
### 1. 신규 추가 및 변경 기능
- **사용자 직접 파일명·디렉토리 지정 저장/불러오기 지원**:
- `[리스트 암호화 저장]` 클릭 시 윈도우 파일 저장 대화상자를 통해 원하는 폴더와 파일명을 자유롭게 지정할 수 있도록 추가.
- `[리스트 불러오기]` 클릭 시 원하는 암호화 리스트 파일(`.qvault`)을 직접 선택하고, 해당 리스트에 설정한 비밀번호를 입력해 불러오도록 개선.
- **실행 파일(`QuickCmd.exe`) 동일 디렉토리 기본 경로 & `년월일시간` 기본 파일명**:
- 저장 및 불러오기 시 기본 폴더 위치가 항상 `QuickCmd.exe`가 위치한 폴더로 열리며, 기본 파일명이 `YYYYMMDD_HHMM.qvault` 형태로 자동 입력됨.
- **재실행 시 직전 사용 리스트 자동 복원 및 상단 파일명 표기**:
- 프로그램을 껐다 켜면 직전에 저장/불러왔던 리스트 항목들과 파일명이 화면에 그대로 복원되어 바로 확인하고 사용할 수 있도록 개선.
- 상단 헤더 영역에 **`현재 리스트: [파일명.qvault] (N개 치환 적용 중)`**을 실시간 표기.
### 2. 개선 및 정리 사항
- **극한 메모리 다이어트 및 실행 파일 크기 70% 축소 (`1.14MB → 366KB`, RAM `~0.5~1.2MB`)**:
- 무거운 C++ `<sstream>`/`<locale>` 의존성을 전면 제거하고 `-fno-exceptions -fno-rtti -Wl,--gc-sections` 최적화를 적용하여 실행 파일 크기를 **366KB**로 축소.
- 트레이 숨김 시 GDI+ 엔진 자동 언로드 및 주기적 Working Set 메모리 압축(`EmptyWorkingSet` + `HeapCompact`)을 적용해 작업 관리자 메모리 점유율을 기존 3.8MB에서 **약 0.5MB ~ 1.2MB** 수준으로 대폭 절감.
- **입력창 `Ctrl+A` (전체 선택) 단축키 완벽 지원**:
- `입력할 문구(A)`, `변환될 문구(B)`, `비밀번호 입력칸`에서 `Ctrl+A` 입력 시 전체 텍스트 블록이 즉시 선택되도록 메시지 루프 및 서브클래싱 처리 개선.
- **프리미엄 블랙 테마(Black Theme) 및 커스텀 프레임리스 타이틀바 적용**:
- 기존의 흰색 윈도우 기본 타이틀바를 제거하고, 프로그램 상단 헤더와 일체화된 세련된 다크/블랙 테마(`#0A0E17` / `#121928`) 및 커스텀 최소화(`─`)·닫기(`✕`) 버튼 적용.
- 비밀번호 입력 창과 알림/오류 창(`비밀번호 불일치`, `저장 완료` 등)도 모두 구형 윈도우 기본 메시지 박스를 대체하여 동일한 블랙 테마 모달 창으로 전면 교체.
- 폰트에서 깨지던 이모지(`▯`)를 모두 제거하고 GDI+ 벡터 아이콘(자물쇠, 폴더 등)으로 직접 렌더링하도록 개선.
- **기존 `%APPDATA%\QuickCmd` 경로 제거 및 실행 폴더 일원화**:
- 사용자 `AppData\Roaming\QuickCmd` 경로에 생성되던 파일들을 모두 삭제하고, 직전 작동 캐시(`QuickCmd_LastActive.qcache`) 역시 실행 파일과 동일한 폴더에서 관리하도록 일원화.
- **버전 표기 업데이트 (`v0.1` → `v0.2`)**:
- 상단 헤더 배지, 윈도우 타이틀, 트레이 아이콘 툴팁 및 우클릭 메뉴, 실행 파일(`QuickCmd.exe`) 리소스 메타데이터를 모두 **버전 0.2 (제작자: 김기환)**로 업데이트.
---
## [v0.1] - 2026-11-02 (최초 릴리즈 및 보안/경량화 기반 구축)
### 1. 신규 제작 기능 (Core Features)
- **즉시 상용구 치환 (A → B 자동 변환)**:
- 윈도우 어느 프로그램(메모장, 브라우저, 메신저, 오피스 등)에서든 사용자가 등록한 문구 `A`(예: `!회사메일`)를 입력하는 즉시 지정된 문구 `B`(예: `example@company.co.kr`)로 실시간 치환되도록 구현.
- 한글 두벌식 자소 분해 엔진(`hangul_engine.hpp`) 및 IME 조합 완료 처리를 적용하여 한글/영문/특수문자 단축어 모두 오작동 없이 정확히 지워지고 치환되도록 구현.
- **시스템 트레이 상주 및 종료 제어**:
- 프로그램 우측 상단 `X`(닫기) 버튼을 눌러도 종료되지 않고 시스템 트레이로 숨겨져 백그라운드에서 상시 동작.
- 트레이 아이콘 **우클릭 → [종료 (Exit)]** 메뉴를 선택할 때만 완전히 종료되도록 구현.
- **초경량 네이티브 C++ 엔진 설계**:
- 파이썬이나 무거운 웹 프레임워크 대신 순수 **C++17 Win32 API + GDI+** 기반으로 제작하여 백그라운드 대기 시 CPU 점유율 0%, 메모리 점유율 약 1~3MB 수준의 최소 자원 점유 달성.
- **상용구 추가 / 삭제 및 심플한 모던 UI**:
- 복잡한 부가 설정을 배제하고 직관적으로 `입력할 문구(A)`와 `변환될 문구(B)`만 입력해 추가/삭제할 수 있는 깔끔한 카드형 UI 및 커스텀 아이콘 적용.
### 2. 개선 및 수정 사항 (Improvements & Fixes)
- **UI 간소화 및 직관성 개선**:
- 불필요한 분류/매크로 입력란을 제거하고, `A → B` 치환 등록과 리스트 저장/불러오기에만 집중하도록 화면 구성을 단순화.
- **한글 IME 마지막 글자 조합 중 백스페이스 누락 현상 해결**:
- 한글 단축어 입력 직후 마지막 글자가 조합 중인 상태에서 바로 백스페이스를 전송할 경우 자소 단위로 지워져 앞 글자가 남는 문제를 해결하기 위해, 조합 확정 후 일괄 삭제 및 유니코드 패킷(`KEYEVENTF_UNICODE`) 주입 방식으로 개선.
- **군사급 리스트 암호화 저장 및 비밀번호 기반 불러오기 적용**:
- 치환 리스트를 단순 텍스트로 저장하지 않고, **PBKDF2-HMAC-SHA256 (600,000회 반복 키 파생) + 256비트 난수 솔트(Salt) + AES-256-CBC + HMAC-SHA256 무결성 검증**으로 암호화하여 인공지능이나 슈퍼컴퓨터로도 비밀번호 없이는 복호화가 불가능하도록 설계.
- 리스트를 편집한 뒤 **[💾 리스트 암호화 저장]** 버튼을 눌러 비밀번호를 지정해야만 실제 치환 리스트로 반영되며, 기본 실행 시에는 직전에 저장한 리스트대로 백그라운드 치환이 작동하고, 추후 **[📂 리스트 불러오기]** 실행 시 해당 리스트에 부여한 비밀번호를 입력해야만 복호화하여 불러올 수 있도록 구현.
+63
View File
@@ -0,0 +1,63 @@
# ⚡ QuickCmd (초경량 스마트 상용구 자동치환 프로그램)
[![최신 릴리즈 다운로드 (ZIP)](https://img.shields.io/badge/%F0%9F%93%A5_%EC%B5%9C%EC%8B%A0_%EB%A6%B4%EB%A6%AC%EC%A6%88_%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-QuickCmd__v0.4.zip-2563eb?style=flat-square)](https://git.focskh.duckdns.org/focskh/quick_cmd/releases/download/v0.4/QuickCmd_v0.4.zip)
[![단일 실행 파일 다운로드 (EXE)](https://img.shields.io/badge/%F0%9F%9A%80_%EB%8B%A8%EC%9D%BC_%EC%8B%A4%ED%96%89_%ED%8C%8C%EC%9D%BC-QuickCmd.exe-10b981?style=flat-square)](https://git.focskh.duckdns.org/focskh/quick_cmd/releases/download/v0.4/QuickCmd.exe)
[![Version](https://img.shields.io/badge/Version-v0.4-8b5cf6?style=flat-square)](https://git.focskh.duckdns.org/focskh/quick_cmd/releases/tag/v0.4)
---
## 📌 프로그램 개요
- **프로그램명**: QuickCmd (초경량 스마트 상용구 자동치환 프로그램)
- **현재 버전**: v0.4
- **제작자**: 김기환 (Kim Ki Hwan)
- **실행 환경**: Windows 10 / Windows 11 (64-bit, 별도 런타임 설치 불필요 포터블 단일 `.exe`)
![QuickCmd 메인 화면](assets/screenshot_main.png)
---
## 📥 다운로드 및 설치 방법
별도의 설치 과정이나 외부 런타임(.NET, Python, Visual C++ 재배포 패키지 등)이 전혀 필요하지 않은 **포터블(Portable) 프로그램**입니다.
### 1. 다운로드
- **[📦 QuickCmd_v0.4.zip 다운로드 (실행 파일 + 변경 내역 포함)](https://git.focskh.duckdns.org/focskh/quick_cmd/releases/download/v0.4/QuickCmd_v0.4.zip)**
- **[⚡ QuickCmd.exe 단독 다운로드 (366 KB)](https://git.focskh.duckdns.org/focskh/quick_cmd/releases/download/v0.4/QuickCmd.exe)**
- 또는 우측/상단의 **[릴리즈 (Releases)](https://git.focskh.duckdns.org/focskh/quick_cmd/releases/tag/v0.4)** 탭에서 다운로드하실 수 있습니다.
### 2. 실행 방법
1. 원하는 폴더에 `QuickCmd.exe`를 위치시키고 실행합니다.
2. 상단 입력란에 **`입력할 문구 (A)`**(예: `!회사메일`)와 **`변환될 문구 (B)`**(예: `example@company.co.kr`)를 입력하고 **`[+ 추가]`** 버튼을 클릭합니다.
3. **`[🔒 리스트 암호화 저장]`** 버튼을 눌러 원하는 파일명(`.qvault`)과 비밀번호를 설정해 저장하면 즉시 실시간 치환이 적용됩니다.
---
## ✨ 주요 기능
### 1. 지연 시간 0ms의 즉시 상용구 자동치환 (`A → B`)
- 메모장, 웹 브라우저, 메신저, 오피스, IDE 등 **윈도우의 모든 프로그램**에서 지정한 단축어(`A`)를 타이핑하는 즉시 목표 문구(`B`)로 자동 변환됩니다.
- **한글 두벌식 자소 분해 및 IME 조합 확정 엔진**이 내장되어 있어 한글/영문/특수문자 단축어 모두 오작동이나 글자 깨짐 없이 깔끔하게 치환됩니다.
- v0.4부터 주기적 워킹셋 페이지아웃 타이머와 마우스 훅을 제거하여 **일반 타이핑 시 키 입력 지연 현상이 전혀 발생하지 않습니다 (Zero Keystroke Lag).**
### 2. 군사급 리스트 암호화 저장 및 복원 (`AES-256 + PBKDF2`)
- 상용구 리스트를 일반 텍스트로 노출하지 않고 **PBKDF2-HMAC-SHA256 (600,000회 키 파생) + 256비트 난수 Salt + AES-256-CBC + HMAC-SHA256 무결성 검증**으로 암호화하여 `.qvault` 파일로 저장합니다.
- 프로그램을 껐다 켜도 직전에 사용한 리스트가 자동으로 복원되며, **`[📂 리스트 불러오기]`**를 통해 다른 `.qvault` 파일을 비밀번호로 복호화하여 불러올 수 있습니다.
### 3. 시스템 트레이 상주 및 윈도우 시작프로그램 등록
- 우측 상단 **`[⚙ 설정]`** 버튼(또는 트레이 아이콘 우클릭 → `설정`)에서 **`윈도우 시작프로그램에 등록`**을 체크하면 부팅 시 트레이로 조용히 자동 실행됩니다.
- 창의 `✕` 버튼을 눌러도 종료되지 않고 시스템 트레이에 상주하며, **트레이 아이콘 우클릭 → `[종료 (Exit)]`** 선택 시에만 완전히 종료됩니다.
### 4. 초경량 네이티브 C++17 설계
- 단일 실행 파일 크기 약 **374 KB (`382,976 bytes`)**, 백그라운드 동작 시 CPU 점유율 **0%**, 메모리 점유율 **약 1~2 MB** 수준의 극한 경량화를 달성했습니다.
---
## 📋 버전 히스토리 요약 (v0.4)
- **v0.4 (2026-11-06)**: 간헐적 키 입력 지연(Keystroke Lag) 현상 완벽 제거 (`EmptyWorkingSet` 타이머 제거, `WH_MOUSE_LL` 제거, `GetAsyncKeyState` 커널 콜 제거)
- **v0.3 (2026-11-03)**: 환경 설정 모달 창 및 윈도우 시작프로그램 등록/해제 기능 추가, 상단 타이틀바 1열 정렬 및 파일 표시줄 분리
- **v0.2 (2026-11-02)**: 사용자 지정 경로/파일명(`.qvault`) 암호화 저장 및 불러오기, 프리미엄 블랙 테마 및 프레임리스 커스텀 UI 적용
- **v0.1 (2026-11-02)**: 최초 릴리즈 (한글/영문 즉시 치환 엔진, AES-256 암호화 보관함, 시스템 트레이 상주)
> 전체 상세 변경 내역은 [HISTORY.md](HISTORY.md)에서 확인하실 수 있습니다.
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB