- CLAUDE.md: 프로젝트 규칙, 기술 스택, 코딩 규칙, 페이즈 로드맵 - .claude/settings.json: 권한, 강제 훅 (매 프롬프트 설계서 규칙 주입) - .claude/skills/: implement-phase, review-phase, scaffold, test-commit, debug - .claude/agents/: electron-architect, voice-pipeline-expert, ui-specialist - docs/design/00-09: 마스터 아키텍처, 서비스 명세(16개), IPC(113채널), DB스키마, UI컴포넌트, 검증리포트, 외부엔진연동, 갭분석, VoiceMode패턴, 디자인시스템, 히스토리팝업 - docs/phases/1-7+3.5: 전체 구현 페이즈 문서 - docs/re-findings/: Speakly RE 노하우 5개 문서
40 lines
1.9 KiB
Markdown
40 lines
1.9 KiB
Markdown
# NativeHelper.dll 디컴파일 결과 핵심
|
|
|
|
## Ghidra 분석: 2,692개 함수, 196,683줄 디컴파일 C코드
|
|
전체 결과: C:/tmp/ghidra_decompile_output/_all_decompiled.c
|
|
|
|
## 37개 Action 디스패치 테이블
|
|
ping, insertText, getCursorState, clipboardPaste, getActiveApp,
|
|
isAppRunning, activateApp, getClipboardText, setClipboardText, clearClipboard,
|
|
captureScreenshot, startKeyMonitoring, stopKeyMonitoring, startAppMonitoring,
|
|
stopAppMonitoring, setKeyRecordingMode, setFnKeySuppression, startEditMonitor,
|
|
stopEditMonitor, updateHotkeys, simulateKeyPress, simulateKeys,
|
|
muteSystemAudio, unmuteSystemAudio, isSystemAudioMuted,
|
|
showNotification, removeNotification, initializeNotifications, getNotificationPermission,
|
|
checkAccessibilityPermission, requestAccessibilityPermission, enableSelfAccessibility,
|
|
checkMicrophonePermission, requestMicrophonePermission,
|
|
getMicrophoneDevices, startMicrophoneCapture, stopMicrophoneCapture,
|
|
setTextOperationConfig, exploreAccessibilityTree
|
|
|
|
## 키보드 후킹 (D3RO-VOICE에서 uiohook-napi로 대체)
|
|
- WH_KEYBOARD_LL 전역 후크
|
|
- LLKHF_INJECTED 플래그로 자체 이벤트 바이패스
|
|
- Win키 핫키 시 합성 keyup 주입 (시작 메뉴 방지)
|
|
- 8초 stale key 정리
|
|
|
|
## WASAPI 캡처 (D3RO-VOICE에서 Web Audio API로 대체)
|
|
- 이벤트 구동: WaitForMultipleObjects(captureEvent, exitEvent)
|
|
- 리샘플링: 디바이스 포맷 → 24kHz mono
|
|
- XAudioProcessor: Opus 인코딩 (로컬 앱에서는 불필요)
|
|
|
|
## 대체 매핑
|
|
| Speakly (NativeHelper.dll) | D3RO-VOICE (npm 패키지) |
|
|
|---------------------------|------------------------|
|
|
| WASAPI 마이크 캡처 | Web Audio API / node-record-lpcm16 |
|
|
| Opus 인코딩 | 불필요 (PCM 직접 전달) |
|
|
| WH_KEYBOARD_LL | uiohook-napi |
|
|
| SendInput (Ctrl+V) | @nut-tree/nut-js |
|
|
| Win32 Clipboard API | electron clipboard API |
|
|
| UI Automation | 초기 미구현, 추후 추가 |
|
|
| IAudioEndpointVolume | loudness npm |
|
|
| Toast Notification | electron Notification API |
|