import os, re

patterns = [
    r'keybd_event',
    r'SendInput',
    r'mouse_event',
    r'SetCursorPos',
]

results = {}
for root, dirs, files in os.walk('.'):
    if any(x in root for x in ('.git', '.venv', '__pycache__', 'build', 'bin', 'docs', 'archive')):
        continue
    for file in files:
        if file.endswith('.py'):
            path = os.path.join(root, file)
            with open(path, 'r', encoding='utf-8', errors='ignore') as f:
                for line_no, line in enumerate(f, 1):
                    for pat in patterns:
                        if re.search(pat, line):
                            results.setdefault(path, []).append((line_no, pat, line.strip()))

with open(r'scratch\input_scan_results.txt', 'w', encoding='utf-8') as out:
    for path, matches in sorted(results.items()):
        out.write(f"=== {path} ({len(matches)} matches) ===\n")
        for line_no, pat, content in matches:
            out.write(f"  L{line_no:4d} [{pat}]: {content[:100]}\n")
        out.write("\n")
print(f"Scanned {len(results)} files. Written to scratch/input_scan_results.txt")
