# 텍스트 삽입 핵심 패턴 ## ClipboardPaste 의사코드 (NativeHelper.dll에서 추출) ```pseudocode function clipboardPaste(text): // 1. 기존 클립보드 저장 (모든 포맷 열거) savedClipboard = saveClipboard() // EnumClipboardFormats → GetClipboardData // 2. 클립보드에 텍스트 설정 OpenClipboard(NULL) EmptyClipboard() hMem = GlobalAlloc(GMEM_MOVEABLE, size) memcpy(GlobalLock(hMem), text, size) SetClipboardData(CF_UNICODETEXT, hMem) CloseClipboard() // 3. Ctrl+V 시뮬레이션 SendInput([KeyDown(VK_CONTROL), KeyDown(VK_V), KeyUp(VK_V), KeyUp(VK_CONTROL)]) Sleep(delay) // 4. 클립보드 복원 restoreClipboard(savedClipboard) ``` ## 삽입 전략 (TextOperationStrategy) - insertMethod: 'clipboard' (기본) | 'keyboard' - selectMethod: 'clipboard' | 'ax' | 'none' - verifyMode: 'auto' | 'skip' - 앱별 레벨(level0-3): bundleId 기반 오버라이드 ## EditMonitor (삽입 검증) - 삽입 후 5초 대기 → 커서 주변 텍스트 재캡처 - before_input / system_input / after_input 비교 - 서버 corrections → 사전 자동 추가 ## D3RO-VOICE 적용 - @nut-tree/nut-js의 keyboard.type() 또는 clipboard + keyboard.pressKey(Key.LeftControl, Key.V) - electron clipboard API로 save/restore - 검증은 초기에는 skip, 추후 UI Automation 추가 가능