The CyrFlip desktop app works standalone — it puts the layout marker on the system cursor and next to the text caret everywhere, and transliterates mistyped text with one hotkey. If you use VS Code, the optional VS Code extension adds the same marker precisely at the Monaco editor caret. Here's how to set them up.
The app is the brain - it knows the active layout. The extension is just a display surface for VS Code, because VS Code draws its own caret and isn't keen on sharing its whereabouts with the outside world.
CyrFlip.exe (tray app) %LOCALAPPDATA%\CyrFlip\ VS Code extension
detects the layout ──writes──▶ layout.txt ──watches──▶ draws the marker
at the editor caret
The app must be running for the extension to show anything - the extension only reads what the app publishes. Without VS Code you still get the tray icon, the mouse-cursor marker, and the transliteration hotkey everywhere.
Pick any option:
winget install SerZhyAle.CyrFlip
CyrFlip.exe. Nothing to install; it runs on stock Windows 10/11.On launch, CyrFlip sits in the system tray (no window). The tray icon shows the active layout. Right-click it to show the clipboard-history strip, enable or pause history, change the indicator, or open Settings. Settings contains hotkeys, autostart, privacy controls and diagnostics.
Turn on Start with Windows so the app - and therefore the layout marker everywhere, including in VS Code - is always available after a reboot.
The VS Code extension is not required for the app to work. Skip this step entirely if you don't use VS Code. Install it only if you want the layout marker to appear exactly at the caret inside VS Code. Choose one:
.vsix file - get
cyrflip-vscode-<version>.vsix from the
vscode-extension folder,
then in VS Code: Extensions ▸ ⋯ ▸ Install from VSIX.., or from a terminal:
code --install-extension cyrflip-vscode-<version>.vsix
After installing, run Developer: Reload Window (Ctrl+Shift+P). The extension activates on startup - no configuration needed.
EN/RU/UK marker follows your caret, and the status
bar shows ⌨ EN, ⌨ DE, ⌨ ZH - whatever is active.hELLO wORLD?
Select it and press Ctrl+Shift+F11 -
CyrFlip swaps UPPER ↔ lower case in place. It has its own configurable hotkey, and an
optional Synchronize CapsLock after case correction toggle sets the CapsLock
key to match the corrected text - off when it ends in a small letter, on when it ends in a
capital - so you can keep typing exactly as it now reads.When CapsLock is on, a thin frame appears around the
EN/RU/UK marker on the mouse cursor, the text caret and the
tray icon - so the CapsLock state is visible right where you type.
Clipboard history is off until you enable it from the tray menu. It keeps recent Unicode text in a small topmost strip. Click an item to use it; pin items you want to keep or delete individual entries. Press Ctrl+Shift+F10 to show or hide the strip.
History is stored locally and protected with Windows DPAPI for your Windows account. Pause capture, clear the history, or disable it entirely in the tray menu or Settings.
Right-click the tray icon and choose Settings… (or double-click the icon). Every change applies at once - there is nothing to restart and nothing to save.
| Tab | What lives there |
|---|---|
| General | Start with Windows; keep the computer awake and keep the screen on (both are remembered - a switch left on keeps the machine awake after a restart too, and CyrFlip will not watch your battery for you); the interface language - 13 to choose from. |
| Indicators | The I-beam cursor marker (off by default), the caret marker (on), the compact dot style, change the layout after converting text, and synchronize CapsLock after the case fix. |
| Hotkeys | A master switch plus a separate on/off and chord for the case fix and the clipboard manager - so a machine can keep only the one chord it needs. Also yield hotkeys to the remote desktop: while an mstsc/msrdc window is focused the chord is passed to the remote session, which is what you want when CyrFlip runs on both ends of an RDP connection. The context menu lives here too: its on/off switch and the mouse chord that opens it. |
| Layout conversions | One table holding every chord that converts text between layouts. EN ⇄ RU on Ctrl+Shift+F12 is created on the first run and can be edited or deleted like any other row; add as many pairs as you like, each with its own chord and switch. |
| Windows languages | Windows' own input settings, without opening the Windows pane: install / reorder / remove keyboard layouts (nothing is downloaded - the layouts ship with Windows), the cycle chord (Alt+Shift, Ctrl+Shift, ` or off), and direct per-language shortcuts that Windows handles itself, so they keep working when CyrFlip is closed - and, unlike the built-in Windows dialog, they are not limited to Ctrl+Shift+digit. Both sections snapshot your pre-CyrFlip state once and can restore it. |
| Clipboard | History on/off, pause capture, whether the manager window opens at startup, its transparency, full-history search, and clearing everything. |
| Translation | The optional local translator - see the section below. |
| Quick launch | The optional scenario launcher - see the section below. |
| About & Advanced | The build version (the same YY.M.D.HHmm stamp the release ZIP carries, so you can tell at a glance whether a fix is in your copy; a Store build says so too), links, the caret-position diagnostics report, and Send logs to the author.. - it packs CyrFlip's own logs into one archive and opens a message that you send yourself. |
A Windows-language change usually takes effect immediately, but Windows occasionally only settles it after signing out and back in. The Microsoft Store build runs in a container, so Windows may redirect those registry writes into the package - the tab says so and links to the Windows settings.
An opt-in module that absorbs OneClickRunner into CyrFlip - one tray process instead of two. It is off by default: until you enable it on Settings → Quick launch, CyrFlip behaves exactly as before - no extra tray entry and no Jump List tasks.
yt-dlp tool must be on PATH). The
settings table adds, edits, clones, reorders, searches, exports and imports them.%APPDATA%\CyrFlip\Scenarios,
format-compatible with OneClickRunner. Turning the module off clears the tray and Jump List but keeps the
files for the next enable.%APPDATA%\OneClickRunner\Scenarios); the originals are never modified, and the
"Import from OneClickRunner…" button repeats the import any time. .ps1 runs via PowerShell
with a one-off -ExecutionPolicy Bypass, .bat/.cmd via
cmd.exe; elevation is requested only by scenarios marked "run as administrator".Select text anywhere in Windows, press the chord, and the translation appears in a small window next to the mouse pointer, filling in as the model writes it. The translating is done by Ollama - a free program you install once on your own computer. CyrFlip does not bundle it, has no account and no key, and sends nothing to the author or to any cloud service. It is off by default: until you enable it on Settings → Translation, no chord is bound, there is no tray entry, and CyrFlip opens no network connection at all.
http://localhost:11434 by default,
your own machine, so the selection never leaves the computer. The tab says plainly that entering another
address sends the selected text to that machine.aya-expanse:8b (~4.7 GB, the default - the best translation of those tested) and
gemma2:9b (~5 GB). Models under 4 GB failed the Russian and Ukrainian check outright,
so gemma2:2b (~1.5 GB) is there only for a machine short on space, and it will make mistakes. In the
Microsoft Store build the install button only opens ollama.com - a Store app must not download
and run an installer.Worth knowing before you start: the quality is the local model's; the first translation after a cold start takes a while, because the model has to load; and Ollama plus a model are a multi-gigabyte download you make once. The model is held in memory by the Ollama process, not by CyrFlip - the app itself stays within its 50 MB budget.
Everything CyrFlip can do to a selection lives behind a hotkey. This module puts the same commands on the mouse: hold Ctrl and right-click a selection, and CyrFlip's own menu opens at the pointer - Copy / Cut / Paste, then your layout conversions, the case fix and your translation rows, then Quick launch and the clipboard history, then Settings. It is off by default, and while it is off the mouse hook is not installed at all: a hook that sits in the path of every mouse move on the machine has no business existing for a feature nobody switched on.
This module reads no text and stores nothing. It watches for its own chord and, while its menu is open, for a click outside it - a menu that belongs to a background process never hears the click that should dismiss it, so CyrFlip closes it itself.
The interface is available in English, Русский, Українська, Deutsch, Italiano, Español, Français, Português, العربية, हिन्दी, বাংলা, اردو and 中文. A fresh install follows the Windows display language and falls back to English; Arabic and Urdu are mirrored right-to-left. Translations into languages the author does not speak are machine-made and not proofread - corrections are very welcome on GitHub.
The two letters name the language: US and Dvorak both read EN, because a badge a few pixels wide has no room for "US-International". The colour names the layout - each of the 25 keyboard layouts of the 13 curated languages has its own shade of its language's colour, so Russian is always red but Russian Typewriter is a different red. In the compact dot style that colour is the whole marker.
Any other layout - a Polish keyboard, a Japanese IME - keeps its language's letters (PL, JA, TR) and gets one neutral colour: there is no honest way to hand out distinct, recognisable colours for the ~218 layouts Windows ships.
| Language | Marker | Keyboard layout | Colour |
|---|---|---|---|
| English | EN | US 00000409 | #4DA3FF |
EN | US-International 00020409 | #0A58FF | |
EN | US-Dvorak 00010409 | #C2E3F4 | |
| Chinese | ZH | Chinese (Simplified) - US keyboard 00000804 | #F3B33D |
ZH | Chinese (Traditional) - US keyboard 00000404 | #FAEAA7 | |
| Hindi | HI | Devanagari - INSCRIPT 00000439 | #E68742 |
HI | Hindi Traditional 00010439 | #F0B88F | |
| Spanish | ES | Spanish 0000040A | #F06E9C |
ES | Latin American 0000080A | #E92D8F | |
| French | FR | French 0000040C | #8D7CF2 |
FR | Canadian French 00001009 | #633BEC | |
| Arabic | AR | Arabic (101) 00000401 | #35C6B4 |
AR | Arabic (102) AZERTY 00020401 | #8BE0C7 | |
| Bengali | BN | Bangla - INSCRIPT 00000445 | #C67CDA |
| Portuguese | PT | Portuguese (Brazil ABNT) 00000416 | #46B978 |
PT | Portuguese 00000816 | #96C0A1 | |
| Russian | RU | Russian 00000419 | #FF5A5A |
RU | Russian (Typewriter) 00010419 | #FF1313 | |
| Urdu | UR | Urdu 00000420 | #E5A3C7 |
| German | DE | German 00000407 | #D8D14A |
DE | German (IBM) 00010407 | #CED4A5 | |
| Italian | IT | Italian 00000410 | #7FB2E5 |
IT | Italian (142) 00010410 | #6587B7 | |
| Ukrainian | UK | Ukrainian 00000422 | #5AD86A |
UK | Ukrainian (Enhanced) 00020422 | #3FD039 | |
| anything else | PL, JA, TR .. | any other Windows layout | #9AA6B2 |
The marker beside the caret and on the mouse pointer is drawn translucent, so the text under it stays readable; the tray icon and the I-beam itself stay solid. The same colours are used by the VS Code extension, so a layout looks the same in the editor as it does everywhere else.
| Surface | Shown by | Where |
|---|---|---|
| Mouse text cursor (I-beam) | App | Everywhere you can type |
| Marker next to the text caret | App | Classic Win32 / UI-Automation text fields |
| Marker at the editor caret | Extension | VS Code code editors (precise) |
| Status-bar indicator | Extension | VS Code, everywhere in the window |
| Tray icon | App | Always, in the notification area |
Inside VS Code, webviews and widgets - the integrated terminal, search boxes, chat panels, the Command Palette - can't host editor decorations, so the caret marker can't appear there. The status-bar indicator, the app's mouse-cursor marker and the app's own caret marker - which does work in those panels - still show the layout.
You never get both markers at once: while you are working in the editor the extension
draws the marker and the app hides its own. The extension says so through a file beside
layout.txt, and that claim lasts 5 seconds after the last keystroke or click in the editor -
which is why the app's marker comes back in the chat panel, the terminal and the search boxes. With the
app running and no extension installed, nothing changes.
%LOCALAPPDATA%\CyrFlip\layout.txt;
Microsoft Store → %ProgramData%\CyrFlip\layout.txt.
The status-bar indicator is the quickest way to tell the extension is reading the file. Try
Developer: Reload Window.