Фикс вставки текста из глобальной диктовки OpenAI Codex Desktop при русской раскладке клавиатуры на macOS.
Codex Desktop после диктовки кладёт распознанный текст в clipboard и вызывает paste через AppleScript:
tell application "System Events" to keystroke "v" using command downНа английской раскладке это работает как Cmd+V. На русской раскладке символ "v" не маппится на физическую клавишу V, поэтому вставка не происходит — голос записывается, текст распознаётся, но не вставляется.
Upstream issue: openai/codex#19710
Небольшой one-shot AppleScript, который запускается только когда файл ~/.codex/transcription-history.jsonl изменяется (то есть когда завершается диктовка). Проверяет русскую раскладку и вставляет текст через key code 9 (физическая клавиша V, независима от раскладки).
Чем отличается от оригинального фикса
| Оригинал | Этот фикс | |
|---|---|---|
| Механизм | Polling каждые 50мс (20 раз/сек) | macOS WatchPaths (kernel-level событие) |
| Нагрузка | Постоянная (tail, python3 спавнятся непрерывно) |
Нулевая, пока нет диктовки |
| Запуск | RunAtLoad + бесконечный цикл |
Запускается один раз при изменении файла |
| Архитектура | Daemon (всегда работает) | One-shot (запустился, сделал, завершился) |
cd ~/Documents/codex-ru-dictation-fix
chmod +x install.sh uninstall.sh
./install.shПосле установки добавьте приложение в Accessibility:
System Settings → Privacy & Security → Accessibility → + → /Applications/Codex RU Dictation Fix.app
Без этого macOS не разрешит скрипту отправлять нажатия клавиш.
./uninstall.shПри необходимости удалите приложение из Accessibility вручную.
- Диктуете текст (Fn или другая горячая клавиша)
- Codex записывает результат в
~/.codex/transcription-history.jsonl - macOS kernel замечает изменение файла и запускает
Codex RU Dictation Fix.app - Скрипт проверяет: русская раскладка? этот
idтранскрипции ещё не обрабатывался? - Если активное приложение — сам Codex (
com.openai.codex), скрипт помечаетidобработанным и ничего не вставляет: Codex уже вставляет текст сам, иначе получится дубль. - Для остальных приложений отправляет
Cmd+Vчерезkey code 9(раскладко-независимо) - Скрипт завершается. Никакого фонового процесса до следующей диктовки.
- macOS 13+
- OpenAI Codex Desktop с настроенной глобальной диктовкой
- Русская раскладка клавиатуры в системе
~/.codex/log/codex-ru-dictation-fix.log