Skip to content

Latest commit

 

History

History
121 lines (92 loc) · 5.97 KB

README.md

File metadata and controls

121 lines (92 loc) · 5.97 KB

SS Pen

CI

화면 위에 바로 판서하는 윈도우용 한국어 주석 도구. 모니터마다 투명 오버레이를 띄워 펜·형광펜·도형·텍스트를 그리고, 전역 단축키로 도구를 바꾸며, 화면을 캡처해 복사·저장·핀 고정한다.

  • WPF / .NET 10 (net10.0-windows), 앱 프로젝트 NuGet 의존성 0개
  • 모든 OS 연동은 직접 작성한 Win32 P/Invoke (src/SSPen/Interop/)
  • 멀티 모니터 · PerMonitorV2 DPI 인식 · 음수 가상 화면 원점 지원

주요 기능

기능 설명
판서 펜 · 형광펜 · 지우개, 굵기 5단계, 바로가기 색상 6칸
도형 선 · 화살표 · 사각형 · 타원 · 표 · 텍스트, Shift 스냅(수평/수직/정비율)
선택 필기내용 선택 후 이동 · 크기 조절 · 회전 · 삭제, 모니터 간 이동. 여러 개를 고르면 하나의 그룹으로 조작(모서리 4핸들 + 회전 1핸들), 휠로 크기 조절, 요소를 정확히 겨냥하지 않아도 잡힌다
보드 화이트보드 / 블랙보드 토글, 슬라이드 전환
페이딩 잉크 0.1~5초 후 스스로 사라지는 잉크 (도구와 조합되는 토글)
캡처 영역 캡처 → 클립보드 복사 · PNG 저장 · 화면에 핀 고정(클릭 통과·확대)
클릭 통과 오버레이를 켠 채로 아래 창을 그대로 조작
트레이 트레이 아이콘으로 판서 켜기/끄기 · 툴바 보이기 · 업데이트 확인 · 설정 · 종료
툴바 설정 메뉴 툴바의 설정 버튼을 누르면 설정 · 도구 막대 닫기 · 프로그램 종료 메뉴가 뜬다

단축키

기본값이며 설정 창에서 재지정할 수 있다.

조합 동작 조합 동작
Alt+Shift+1 표시 토글 Alt+Shift+L 선
Alt+Shift+2 클릭 통과 Alt+Shift+A 화살표
Alt+Shift+3 펜 Alt+Shift+U 사각형
Alt+Shift+4 형광펜 Alt+Shift+E 타원
Alt+Shift+5 지우개 Alt+Shift+T 텍스트
Alt+Shift+6 실행 취소 Alt+Shift+W 화이트보드
Alt+Shift+7 전체 지우기 Alt+Shift+B 블랙보드
Alt+Shift+0 툴바 토글 Alt+Shift+F 페이딩 잉크
Alt+Shift+[ 굵기 감소 Alt+Shift+S 캡처
Alt+Shift+] 굵기 증가 Alt+Shift+V 필기내용 선택
Ctrl+Shift+1~6 바로가기 색상 Alt+Shift+D 선택 삭제

선택 도구로 무언가를 고른 동안에는 수식키 없는 아래 키가 다른 앱보다 먼저 SS Pen에 잡힌다. 선택이 없거나 다른 도구일 때는 잡지 않으므로 평소 사용에는 영향이 없다.

키 동작
Esc 선택 해제 → 클릭 통과로 전환
Delete / Backspace 선택한 요소 일괄 삭제
마우스 휠 선택한 요소 크기 조절 (커서가 선택 안이면 커서 기준, 밖이면 중심 기준)

선택 바깥을 제자리에서 한 번 클릭해도 해제되며, 해제되는 순간 클릭 통과가 켜진다.

요구 사항

  • Windows 10 1809 이상 (x64)
  • 개발 시: .NET SDK 10
  • 설치 프로그램 빌드 시: Inno Setup 6 (winget install JRSoftware.InnoSetup)

빌드 · 실행

dotnet build SSPen.sln -c Debug
dotnet run --project src/SSPen

테스트

# 단위 테스트 — 헤드리스 안전, 어디서나 실행 가능
dotnet test tests/SSPen.Tests/SSPen.Tests.csproj

# 통합 테스트 — 대화형 데스크톱이 필요하며 토폴로지는 동적으로 열거한다
dotnet test tests/SSPen.IntegrationTests/SSPen.IntegrationTests.csproj

# E2E 사용자 워크플로 테스트 — 실제 창을 띄워 화면을 점유한다
dotnet test tests/SSPen.E2ETests/SSPen.E2ETests.csproj

dotnet test SSPen.sln 은 통합·E2E 테스트까지 같이 돌리므로 일반 환경에서는 단위 테스트 프로젝트만 지정한다.

배포

# self-contained win-x64 게시
dotnet publish src/SSPen/SSPen.csproj -c Release -r win-x64 --self-contained true -o publish/win-x64

# 게시 + 자체 포함 검증 + Inno Setup 설치 프로그램까지 한 번에
powershell -ExecutionPolicy Bypass -File build/publish.ps1

v* 태그를 밀면 Release 워크플로가 self-contained 게시 · 설치 프로그램 · 포터블 zip 을 만들어 GitHub 릴리스에 올린다.

프로젝트 구조

src/SSPen/
  Annotation/   도구 상태(AppState), 요소 모델, 모니터별 오버레이, 입력 상태 기계, 선택/변형, 언두, 페이딩
  Shell/        툴바 · 설정 창 · 트레이 · 전역 핫키 · 문자열 테이블
  Interop/      Win32 P/Invoke 와 정책 래퍼(좌표계 · 모니터 토폴로지 · 창 스타일 · 캡처)
  Settings/     설정 POCO · JSON 영속화 · AppState 양방향 동기화 · 로그인 시 시작
  Capture/      캡처 세션 상태 기계 · BitBlt · 영역 오버레이 · 클립보드/PNG 출력
  Pin/          핀 고정 창 (클릭 통과 · 확대)
  Updates/      GitHub 릴리스 업데이트 확인·설치 (유일한 네트워크 코드)
  Diagnostics/  일자별 롤링 파일 로그
tests/          단위 테스트 · 머신 바인딩 통합 테스트 · E2E 사용자 워크플로 테스트
build/          게시 · 아이콘 생성 스크립트
installer/      Inno Setup 6 스크립트

설계 규칙과 코딩 컨벤션은 AGENTS.md 에 정리되어 있다.

사용자 데이터 위치

경로 내용
%APPDATA%\SS Pen\settings.json 설정 (손상 시 .bad 로 격리 후 기본값 재생성)
%APPDATA%\SS Pen\logs\sspen-yyyyMMdd.log 일자별 로그
사진\SS Pen\ 캡처 저장 기본 폴더 (설정에서 변경 가능)