Skip to content

Releases: WhisKeySwitch/Switcher3way

Switcher3way 1.5.1

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 31 Aug 11:00

A fix release for two defects that 1.5.0's jargon rescue brought to light — both found in real typing, both now covered by tests.

Words ending in a consonant pile are gibberish again

Ireland typed on the Russian layout comes out as Шкудфтв, and 1.5.0 read that as a plausible Russian word — it has a vowel, and its four-consonant tail sat right at the limit meant for real words like взгляд. But взгляд piles its consonants at the start: essentially nothing in English, Ukrainian or Russian ends in four. Words like this now convert as they should.

The app no longer believes a dictionary that is answering wrong

A whole line typed in the wrong layout stayed unconverted, and the diagnostic log showed the app contradicting itself — the record said the Ukrainian reading was a valid word, the decision said no language matched it. Two causes, both fixed:

  • The same word was checked twice per decision, and macOS's spell checker can answer differently between the two calls. One check per decision now.
  • macOS's spell checker goes through spells of answering wrong in both directions — rejecting ordinary words, accepting keyboard mash. Each language is now spot-checked with a known word and a known non-word; a language that fails is benched until it recovers, and the check is repeated at the moment of acting, so a wrong answer can never turn a name into nonsense. Nothing converts on a dictionary that is misbehaving — the app does nothing rather than something wrong, and says so in the log.

Install: download the DMG, drag Switcher3way to Applications. Unnotarized — first launch needs right-click → Open. Updating in-app keeps your permissions.

SHA256 (Switcher3way-1.5.1.dmg): cac4e074a3b38d6131958ba18850d92be829b84b024ec89c32d5ecdba9034349

Switcher3way for Windows 0.5.0 (preview)

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 31 Aug 07:12
ead65ce

Switcher3way for Windows — direct-download preview. If you can use the
Microsoft Store version, prefer it: it is signed by
Microsoft, needs no prerequisite, and updates itself.

Words no dictionary knows now get converted too. Until this release, a name or a piece of jargon
typed in the wrong layout stayed as gibberish and had to be fixed by hand.

New — names and jargon typed in the wrong layout

The app decided what to convert by asking a dictionary: if the keystrokes spell a real word in
another language, they were meant for that language. That rule is exactly right for ordinary words
and exactly wrong for everything a dictionary has never heard of — product names, tech jargon, proper
nouns. Kyiv typed while the Ukrainian layout is active comes out as Лншм, and no dictionary
anywhere validates either form, so nothing happened. Every such word cost you a manual fix.

The signal the app was missing is shape, not vocabulary. A word typed in the wrong layout is not
merely unknown — it is unpronounceable in the language it landed in, while exactly one of the
alternatives is a perfectly ordinary word shape for its own language. Лншм is not a possible
Ukrainian word; Kyiv is an entirely normal English one. That asymmetry is what a person spots
instantly, and the app now checks it.

So when no dictionary recognises a word in any language, the app looks at its shape instead, and
converts only when exactly one language could plausibly have produced it.

What deliberately still keeps. This is a weaker signal than a dictionary match, so everything
that guarded conversion before guards it here too — and the thresholds were chosen by measuring
against real words that must not move, not by taste. Kyiv typed in the English layout, PeopleOps,
SSO, npm, code identifiers and vowel-less abbreviations like хз all stay exactly as you typed
them. Verified end to end on this build: five such words, zero touched.

A rescued word is also held more loosely than a dictionary match — it will not decide what language
the rest of your sentence is in, and a later word can still correct it.

A note for Ukrainian and Russian typists. On Windows this mostly helps in one direction. The
dictionaries shipped with the app already know a good deal of Ukrainian and Russian vocabulary, so
jargon like апка or тенанту was usually converted already. What was not handled — and now is —
are Latin names and terms typed while a Cyrillic layout is active.

Install

  1. Install the Windows App Runtime 1.6
    once — this channel needs it. The app tells you if it is missing. .NET is bundled; you do not
    need to install it.
  2. Download the MSI below and double-click it, then approve the User Account Control prompt.
  3. This build is not code-signed, so SmartScreen will warn — More info → Run anyway.
  4. Launch Switcher3way from the Start menu. It lives in the notification area; Windows 11 hides new
    tray icons, so expand it with the ^ chevron if you cannot see the flag.
  5. Add a second keyboard layout if you have not: Settings → Time & language → Language & region →
    Add a language → Ukrainian or Russian. Switcher3way converts between the layouts Windows
    has installed, so with only one there is nothing for it to convert between — the app tells you so
    rather than sitting silent.

Verify the download

SHA-256 of Switcher3way-0.5.0-win-x64.msi:

8fab71fcf78f01f49d7ec2740cfa05ff6751d731922de2192b2f2b222b2f1cfd
(Get-FileHash .\Switcher3way-0.5.0-win-x64.msi -Algorithm SHA256).Hash

The in-app updater checks this same checksum before installing anything.

Known limitations

  • Not code-signed — SmartScreen warns on first run. The Store build is signed by Microsoft.
  • x64 only. No arm64 build yet.
  • A word finished with Enter or Tab is not auto-converted: the app cannot re-type those
    characters, so rather than attempt a replacement that cannot land it leaves the word alone. The
    trigger still converts it.
  • Cannot rewrite text inside windows running as administrator unless Switcher3way is also running
    as administrator — Windows blocks synthesized input from a lower integrity level. The app reports
    this rather than silently doing nothing.
  • Password fields are deliberately excluded from processing.
  • Replacing a very long selection — near the 200-character limit — still takes a few seconds, because
    erasing the old text remains one keystroke per character. Going faster was tried and measured, and
    every faster method lost keystrokes; the delay is what the receiving application needs.
  • In applications that expose no text to accessibility tools, the app cannot check its own work. It
    says so in the debug log and behaves as before rather than guessing.

Free and open source under the MIT License — https://github.com/WhisKeySwitch/Switcher3way

Switcher3way 1.5.0

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 29 Aug 12:40

This release exists for one reason: jargon and names the dictionaries don't know now convert too.

The words no dictionary could rescue

Slang, tech loanwords and names — апка, айді, Kyiv — are valid in no dictionary, so typing them in the wrong layout left gibberish on screen (fgrf, fqls, Лншм), and every one cost a manual selection-convert. Auto-fix now reads the shape instead: when what you typed is unpronounceable gibberish in the layout it landed in, but its reading in another layout looks like a real word, it converts.

  • fgrfапка — Ukrainian/Russian jargon uses your language for ambiguous words setting (set it to Do not convert and this stays off too)
  • Лншм typed in a Cyrillic layout → Kyiv — a unique winner converts outright, in either direction

Precision first, as always

The rescue runs behind every existing guard: it never touches words that look plausible in the layout you typed them in (Kyiv, npm, ctrl, acronyms, code), never overrides the typo guard, and a rescued word undoes with one trigger tap like any conversion. Measured before shipping: zero false conversions across an adversarial keep-side fixture on both the macOS and Windows decision cores.

The same logic lands in the Windows app with its next release.


Install: download the DMG, drag Switcher3way to Applications. Unnotarized — first launch needs right-click → Open. Updating in-app keeps your permissions (same signing identity).

SHA256 (Switcher3way-1.5.0.dmg): ab3f6b48d017ba3f08400dd0e8f7be397fde12a99df99adbd2d500a0c6469997

Switcher3way for Windows 0.4.1 (preview)

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 25 Aug 09:20
0fca19a

Switcher3way for Windows — direct-download preview. If you can use the
Microsoft Store version, prefer it: it is signed by
Microsoft, needs no prerequisite, and updates itself.

This release stops the app interrupting you at the end of every line, and stops it blaming a
problem it had not diagnosed. If you finish sentences with Enter — which is to say, if you type —
update.

Fixed — the app no longer attempts a conversion it cannot complete

Finishing a word with Enter could never be converted. Not since the app was written. What
happened instead was that it tried: erased your word, typed the replacement, discovered the result
was wrong, put your text back, and told you the window "may be running as administrator". Every line.

The cause is small and complete. When the app converts a word it replaces the word and the character
that ended it
, and it types every character as a Unicode code point. That is exactly right for a
space and useless for Enter — a Windows text box ignores it — so the replacement always arrived one
character short and the check added in 0.4.0 correctly refused it.

This was never a working feature that broke. It only became visible in 0.4.0, when the app started
reading back what it had written: before that the same rewrite reported success and left your text
however it fell.

So the app now declines. A word finished with Enter or Tab is left alone, quietly. Nothing you see
changes — it was never converted either way — but the rewrite that ran, failed, undid itself and
interrupted you is gone. Words finished with a space convert exactly as before, and the trigger is
unaffected.

Re-pressing Enter to put the line break back was considered and rejected: it would work in a text
editor and misfire in a chat box, where Enter has already sent the message and pressing it again
would send another. Nothing tells those apart in advance, so the app does not guess.

Fixed — failure messages that describe what actually failed

Every rewrite failure was reported as "Can't change text in this window — it may be running as
administrator."
That is true for exactly one of them. A conversion refused in an ordinary text editor
sent you looking for elevation you do not have, while the real behaviour — the app checked its own
work, disliked the result, and put your original back — went unmentioned.

A conversion that does not land now says so, and says your text was put back. Administrator rights
are named only when that is genuinely the cause.

Fixed — settings that cannot be read are no longer discarded in silence

If the settings file could not be read — a truncated write after a crash, a disk error, a file from a
newer version — the app quietly started with defaults and then saved them over the top, usually within
seconds of launching and without you touching anything. Your exception lists, denied apps, trigger key
and language preference were gone, with nothing said and nothing logged, because the debug-log switch
that would have recorded it lives in the file that failed to load.

The unreadable file is now kept as settings.json.bad, the failure is recorded whatever the log
setting says, and you are told.

Install

  1. Install the Windows App Runtime 1.6
    once — this channel needs it. The app tells you if it is missing. .NET is bundled; you do not
    need to install it.
  2. Download the MSI below and double-click it, then approve the User Account Control prompt.
  3. This build is not code-signed, so SmartScreen will warn — More info → Run anyway.
  4. Launch Switcher3way from the Start menu. It lives in the notification area; Windows 11 hides new
    tray icons, so expand it with the ^ chevron if you cannot see the flag.
  5. Add a second keyboard layout if you have not: Settings → Time & language → Language & region →
    Add a language → Ukrainian or Russian. Switcher3way converts between the layouts Windows
    has installed, so with only one there is nothing for it to convert between — the app tells you so
    rather than sitting silent.

Verify the download

SHA-256 of Switcher3way-0.4.1-win-x64.msi:

1b17870d50f2b3d5ae9ba02142a9c0d53395251385c66c4eb16250687363f9b0
(Get-FileHash .\Switcher3way-0.4.1-win-x64.msi -Algorithm SHA256).Hash

The in-app updater checks this same checksum before installing anything.

Known limitations

  • Not code-signed — SmartScreen warns on first run. The Store build is signed by Microsoft.
  • x64 only. No arm64 build yet.
  • A word finished with Enter or Tab is not auto-converted, for the reason above. The trigger still
    converts it if the text is still on screen.
  • Cannot rewrite text inside windows running as administrator unless Switcher3way is also running
    as administrator — Windows blocks synthesized input from a lower integrity level. The app reports
    this rather than silently doing nothing.
  • Password fields are deliberately excluded from processing.
  • Replacing a very long selection — near the 200-character limit — still takes a few seconds, because
    erasing the old text remains one keystroke per character. Going faster was tried and measured, and
    every faster method lost keystrokes; the delay is what the receiving application needs.
  • In applications that expose no text to accessibility tools, the app cannot check its own work. It
    says so in the debug log and behaves as before rather than guessing.

Free and open source under the MIT License — https://github.com/WhisKeySwitch/Switcher3way

Switcher3way for Windows 0.4.0 (preview)

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 24 Aug 06:01
d89bc81

Switcher3way for Windows — direct-download preview. If you can use the
Microsoft Store version, prefer it: it is signed by
Microsoft, needs no prerequisite, and updates itself.

This release stops the app converting your typos. If you write Ukrainian or Russian and have ever
watched a mistyped word jump into English — taking the keyboard layout with it, so the rest of the
sentence came out in the wrong alphabet — this is the fix. Update.

Fixed — a fumbled key is no longer read as the wrong keyboard

A user went back to a competitor over this, and they were right to:

every typo or mistake makes switch to EN from UK … quite big text with some crap in english layout
here and there

The app used to reason: this is not a word in the language you are typing, but it is a word in
another one, so your keyboard must be wrong. That reasoning has no way to express the far more common
explanation — you are writing your own language and you missed a key. So it converted typos, moved the
layout, and left English debris scattered through a long document.

Two things were going wrong, and both are now measured rather than assumed:

  • Short words carried no information. 160 of the 676 possible two-letter Latin strings are in the
    English dictionary — ft, bf, kw, lb — almost all abbreviations nobody types as a word. A
    mistyped two-letter Ukrainian word therefore had roughly a one-in-four chance of "being English".
  • Ukrainian typos land in Russian constantly. програмапрограмма, аджедаже,
    колегамиколлегами are all real Russian words, and they are long, so no rule about word length
    could have caught them.

What the app does now:

  • It asks whether it is a typo first. Before accepting that a word belongs to another language, it
    checks whether the language you are already typing holds a real word one keystroke away — a dropped
    letter, a doubled one, a wrong one, two letters swapped. If it does, the simpler story is that you
    missed a key, and the word is left alone.
  • It refuses to judge very short words on their own, and uses the sentence around them instead. A
    two- or three-letter word is held, untouched, until a longer word settles which language you are
    writing; then it is converted along with it. In a message where every word is short — як ти?
    two words agreeing with each other settle it between them.
  • Correcting a whole sentence typed in the wrong layout still works exactly as before. This was the
    hard part: measured one word at a time the new caution looks ruinous, and measured across a paragraph
    it costs nothing, because the held words are picked up by the word that resolves the sentence.

Measured over natural prose with realistic typos: the share of typos converted went from 2.9% to 0%,
spurious layout switches from 8 per page to none, and correcting text typed in the wrong layout is
unchanged.

One deliberate trade: a single short word typed in the wrong layout, with nothing around it and no
second word to agree with, is no longer corrected automatically — on the evidence available it cannot be
told apart from a typo, so the app declines instead of guessing. The trigger still converts it.

Fixed — a conversion that does not land is now undone, not reported as done

The rewrite already checked that the replacement it typed had arrived. It did not check that the text it
was replacing had actually gone — so a replacement that landed correctly beside the old text passed
as a success. Removal is now verified by position as well as content, and the two failures are told
apart, because they need opposite repairs: text that landed wrong is erased and the original restored,
while text that landed beside the original has only the insertion removed. Nothing you can see changes
unless a rewrite fails; when one does, you get your text back instead of a mess built on top of it.

Also

  • The debug log now records every decision, including the decision to leave a word alone, with the
    reason. Leaving text untouched is this app's most common action and it looks identical to the app not
    running — which made the typo guard impossible to verify by watching the screen.

Install

  1. Install the Windows App Runtime 1.6
    once — this channel needs it. The app tells you if it is missing. .NET is bundled; you do not
    need to install it.
  2. Download the MSI below and double-click it, then approve the User Account Control prompt.
  3. This build is not code-signed, so SmartScreen will warn — More info → Run anyway.
  4. Launch Switcher3way from the Start menu. It lives in the notification area; Windows 11 hides new
    tray icons, so expand it with the ^ chevron if you cannot see the flag.
  5. Add a second keyboard layout if you have not: Settings → Time & language → Language & region →
    Add a language → Ukrainian or Russian. Switcher3way converts between the layouts Windows
    has installed, so with only one there is nothing for it to convert between — the app tells you so
    rather than sitting silent.

Verify the download

SHA-256 of Switcher3way-0.4.0-win-x64.msi:

8a33baacd6c0d13658abee3923cab8020c3bc25e022c26578350343799be7bfa
(Get-FileHash .\Switcher3way-0.4.0-win-x64.msi -Algorithm SHA256).Hash

The in-app updater checks this same checksum before installing anything.

Known limitations

  • Not code-signed — SmartScreen warns on first run. The Store build is signed by Microsoft.
  • x64 only. No arm64 build yet.
  • Cannot rewrite text inside windows running as administrator unless Switcher3way is also running
    as administrator — Windows blocks synthesized input from a lower integrity level. The app reports
    this rather than silently doing nothing.
  • Password fields are deliberately excluded from processing.
  • Replacing a very long selection — near the 200-character limit — still takes a few seconds, because
    erasing the old text remains one keystroke per character. Going faster was tried and measured, and
    every faster method lost keystrokes; the delay is what the receiving application needs.
  • In applications that expose no text to accessibility tools, the app cannot check its own work. It
    says so in the debug log and behaves as before rather than guessing.

Free and open source under the MIT License — https://github.com/WhisKeySwitch/Switcher3way

Switcher3way 1.4.0

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 23 Aug 14:46

This release exists for one reason: a typo is no longer read as the wrong keyboard layout.

Typos are left alone

Until now, mistyping one letter could cost you the whole sentence: даже fumbled on the Ukrainian layout reads as a "valid English word" through the QWERTY mapping, so auto-fix converted the word and switched your layout, and everything you typed after it came out wrong. One user described ending up with "quite big text with some crap in english layout here and there" — and left. She was right.

Auto-fix now asks the obvious question first: is this one key away from a real word in the language being typed? If it is, it's a typo, not the wrong keyboard — the text and the layout stay put. Very short words (under six letters) are no longer judged on their own at all: a dictionary hit at that length is mostly abbreviation noise, so they follow the language the surrounding phrase has settled into, and a message made only of short words is decided by the words agreeing with each other.

Measured on natural prose with real fumbles: wrongly converted typos went from 2.9% to 0%, with recovery of genuinely wrong-layout text unchanged. Words you type in the wrong layout still convert exactly as before.

Every "left alone" decision now also records a plain-language reason in the debug log (Settings → Advanced), so "it did nothing" is checkable.

Українською

Помилка друку більше не сприймається як неправильна розкладка. Раніше одна схибована літера (даже, ае, ща…) могла перетворити слово на латиницю і перемкнути розкладку — і решта речення виходила не тією мовою. Тепер програма спершу питає: чи це слово за одну клавішу від справжнього слова мови, якою ви пишете? Якщо так — це одруківка, і текст та розкладку не чіпають. Дуже короткі слова більше не оцінюються поодинці — вони йдуть за мовою фрази. Слова, справді набрані в чужій розкладці, конвертуються як і раніше.

По-русски

Опечатка больше не принимается за неправильную раскладку. Раньше одна смазанная буква могла превратить слово в латиницу и переключить раскладку — и остаток предложения выходил не на том языке. Теперь программа сначала спрашивает: не находится ли это слово в одной клавише от настоящего слова языка, на котором вы пишете? Если да — это опечатка, и текст с раскладкой не трогают. Очень короткие слова больше не оцениваются поодиночке — они следуют за языком фразы. Слова, действительно набранные в чужой раскладке, конвертируются как прежде.

Downloads and updates moved home

Releases now live on the main repository — WhisKeySwitch/Switcher3way. This version checks for updates there. Older versions keep checking the old address, so 1.4.0 is published in both places — installing it carries you across.


SHA-256 (Switcher3way-1.4.0.dmg): 55640407f150f498827628047059874ed1b599ca205921261e6a6574f4bf4da2

Unnotarized: on first launch right-click → Open. Updating from 1.3.0 in-app keeps your permissions (same signing identity).

Switcher3way for Windows 0.3.0 (preview)

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 23 Aug 12:20
71d8f94

Switcher3way for Windows — direct-download preview. If you can use the
Microsoft Store version, prefer it: it is signed by
Microsoft, needs no prerequisite, and updates itself.

This release fixes a conversion that could damage text while reporting success. If you use the trigger
on selected text, update.

Fixed — a conversion that landed wrong looked like one that worked

  • Cycling a selection through the layouts could corrupt it. Convert a selected phrase, tap again for
    the next layout, tap again to come back — and the text could return mangled, with runs of characters
    replaced by whichever character followed them. Worse, the app believed it had succeeded, so every
    further tap converted the damage instead of the original.
  • The app now checks its own work. After replacing text it reads back what actually landed and
    compares it with what it meant to write. A replacement that does not match is reported as a failure,
    the previous text is put back, and the cycle stops rather than building on a bad result.
  • Long replacements are pasted, not typed. Inserting a long phrase one keystroke at a time was both
    the cause of the corruption and the reason it was slow: replacing a sentence took a second and a half,
    and a 200-character selection took six seconds. It is now a single paste — about twice as fast, and
    reliable. Your clipboard is borrowed for that instant and handed straight back; short conversions
    still type, and never touch it.
  • The trigger no longer converts text you did not select. It asked the system for the selection by
    copying, and treated any change to the clipboard as proof that its copy had worked — so another
    program writing to the clipboard at the wrong moment could feed it text you never highlighted, which
    it would then convert and type at the cursor.

Install

  1. Install the Windows App Runtime 1.6
    once — this channel needs it. The app tells you if it is missing. .NET is bundled; you do not
    need to install it.
  2. Download the MSI below and double-click it, then approve the User Account Control prompt.
  3. This build is not code-signed, so SmartScreen will warn — More info → Run anyway.
  4. Launch Switcher3way from the Start menu. It lives in the notification area; Windows 11 hides new
    tray icons, so expand it with the ^ chevron if you cannot see the flag.
  5. Add a second keyboard layout if you have not: Settings → Time & language → Language & region →
    Add a language → Ukrainian or Russian. Switcher3way converts between the layouts Windows
    has installed, so with only one there is nothing for it to convert between — the app tells you so
    rather than sitting silent.

Verify the download

SHA-256 of Switcher3way-0.3.0-win-x64.msi:

87bb55246d58b2c12f51fd55a8e5cf285af8b705f5fee7abc3b70381f6d8276a
(Get-FileHash .\Switcher3way-0.3.0-win-x64.msi -Algorithm SHA256).Hash

The in-app updater checks this same checksum before installing anything.

Known limitations

  • Not code-signed — SmartScreen warns on first run. The Store build is signed by Microsoft.
  • x64 only. No arm64 build yet.
  • Cannot rewrite text inside windows running as administrator unless Switcher3way is also running
    as administrator — Windows blocks synthesized input from a lower integrity level. The app reports
    this rather than silently doing nothing.
  • Password fields are deliberately excluded from processing.
  • Replacing a very long selection — near the 200-character limit — still takes a few seconds, because
    erasing the old text remains one keystroke per character.
  • In applications that expose no text to accessibility tools, the app cannot check its own work. It
    says so in the debug log and behaves as before rather than guessing.

Free and open source under the MIT License — https://github.com/WhisKeySwitch/Switcher3way

Switcher3way for Windows 0.2.9 (preview)

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 23 Aug 12:20
bf08c50

Switcher3way for Windows — direct-download preview. If you can use the
Microsoft Store version, prefer it: it is signed by
Microsoft, needs no prerequisite, and updates itself.

This release fixes text loss. If you use the trigger on selected text, update.

Fixed — the trigger could erase text it never looked at

  • Converting a selection could delete more than you selected, including text on the line above it.
    The app erases the text it recorded you typing; if the cursor had moved since — you pressed an arrow
    key, Home, or End, or selected with Shift+arrows — it erased that many characters wherever the cursor
    now was. Everything buffered is now discarded the moment the cursor moves, so a conversion can only
    rewrite the words it actually saw you type.
  • Select-all then trigger could replace the whole document. Ctrl+A was being recorded as if you
    had typed the letter "a", so the trigger converted that "a" — and its first backspace took the entire
    selection with it. Keyboard shortcuts are no longer mistaken for typing. This also stops Alt+Tab
    from finishing a word behind your back.
  • When text is selected, the trigger now always converts the selection rather than the last word
    you typed. What it changes is what you highlighted.

New since 0.2.7

  • The trigger always answers. When it cannot convert anything — only one keyboard layout installed,
    nothing typed or selected, the text already correct, a selection over 200 characters — it now says so
    in a small chip next to the cursor as well as a notification, instead of appearing dead.
  • The debug log records why a conversion did nothing, and whether reading a selection succeeded, so
    "it did nothing" is diagnosable instead of silent.

Install

  1. Install the Windows App Runtime 1.6
    once — this channel needs it. The app tells you if it is missing. .NET is bundled; you do not
    need to install it.
  2. Download the MSI below and double-click it, then approve the User Account Control prompt.
  3. This build is not code-signed, so SmartScreen will warn — More info → Run anyway.
  4. Launch Switcher3way from the Start menu. It lives in the notification area; Windows 11 hides new
    tray icons, so expand it with the ^ chevron if you cannot see the flag.
  5. Add a second keyboard layout if you have not: Settings → Time & language → Language & region →
    Add a language → Ukrainian or Russian. Switcher3way converts between the layouts Windows
    has installed, so with only one there is nothing for it to convert between — the app now tells you
    so rather than sitting silent.

Verify the download

SHA-256 of Switcher3way-0.2.9-win-x64.msi:

dca9a645695976d7aa5852ae80a71a94625f8955d2d608f9dd8210f64aa51ac4
(Get-FileHash .\Switcher3way-0.2.9-win-x64.msi -Algorithm SHA256).Hash

The in-app updater checks this same checksum before installing anything.

Known limitations

  • Not code-signed — SmartScreen warns on first run. The Store build is signed by Microsoft.
  • x64 only. No arm64 build yet.
  • Cannot rewrite text inside windows running as administrator unless Switcher3way is also running
    as administrator — Windows blocks synthesized input from a lower integrity level. The app reports
    this rather than silently doing nothing.
  • Password fields are deliberately excluded from processing.
  • Cycling a converted selection past a full loop of layouts can corrupt the text on the fourth trigger
    press. Diagnosed and being fixed; until then, a selection you have cycled all the way back to the
    original is best left alone.

Free and open source under the MIT License — https://github.com/WhisKeySwitch/Switcher3way

Switcher3way for Windows 0.2.7 (preview)

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 23 Aug 12:20

Switcher3way for Windows — 0.2.7 (preview)

Now works over Remote Desktop, in virtual machines, and with remapped keyboards

If your keystrokes reach Windows through anything other than a directly attached keyboard —
Remote Desktop, a virtual machine, a remote-support tool like AnyDesk or TeamViewer, a
keyboard remapper, or an accessibility input tool — Switcher3way could not see them. It did nothing
at all, and the trigger appeared dead.

The cause: to avoid reacting to the corrections it types itself, the app ignored everything Windows marks
as synthesized, and all of the above are marked that way. It now marks only its own keystrokes and
ignores just those. Everything else counts as real typing, because it is — someone typing into a remote
session on a physical keyboard makes exactly the wrong-layout mistakes this app exists to fix.

One consequence worth knowing: text expanders, macro tools and password-manager auto-type are now visible
to the app too. Password fields are still left alone, but if a snippet tool inserts text in another
language you may see it corrected. Exclude that application in Settings → Auto-fix → Apps if it gets
in the way.

Found by Microsoft Store certification, testing on a tablet using the on-screen keyboard — where the app
was equally inert.

Install

  1. Install the Windows App Runtime 1.6 (once).
  2. Download Switcher3way-0.2.7-win-x64.msi below, double-click it, approve the UAC prompt.
  3. This build isn't code-signed, so SmartScreen may warn — More info → Run anyway.
  4. Launch Switcher3way from the Start menu; it lives in the notification area.

Before it can do anything: add a second keyboard layout in Windows — Settings → Time & language →
Language & region → Add a language → Ukrainian or Russian, alongside English. Switcher3way
converts a word from one installed layout to another, so with a single layout there is nothing to convert
between. Since 0.2.6 the app tells you this instead of staying silent.

Requirements: Windows 10 1809+ / 11, 64-bit. Settings carry over.

Recent releases

  • 0.2.6 — the trigger always responds, saying why when it has nothing to convert.
  • 0.2.5 — password fields that are not masked (a "show password" toggle) are left alone; debug
    logging no longer records keystrokes.
  • 0.2.4 — browser password fields left alone at all.

Known limitations

  • Unsigned → SmartScreen warning on first run. The Store version won't have this.
  • Needs the Windows App Runtime (above); the Store version bundles it.
  • Password detection relies on what a field tells Windows about itself. A password box that is neither
    masked nor labelled as one cannot be recognised — exclude that browser in Settings → Auto-fix → Apps.
  • Thirteen of the sixteen interface languages are only partly translated (marked in the picker).
  • x64 only; on Windows-on-ARM it runs under emulation, untested.

Verify your download

Switcher3way-0.2.7-win-x64.msi
SHA-256: e45289488ac3bde654d0c33008eca87f036ee5bf44009bb3d35b6d2edb364535

Get-FileHash .\Switcher3way-0.2.7-win-x64.msi -Algorithm SHA256

📘 User Guide ·
🔒 Privacy · MIT License

Switcher3way 1.3.0

Choose a tag to compare

@WhisKeySwitch WhisKeySwitch released this 23 Aug 12:20

This release started as a port of four things the Windows build had and macOS didn't. One of them turned out to be a security fix.

Password fields are now properly protected

Until now the app relied on a single macOS signal — secure input — to know it was in a password field. That signal is advisory and is not set by:

  • a login form with a "show password" toggle, while the password is revealed;
  • a site that masks its own input in JavaScript rather than using a real password field;
  • some Electron apps.

In all three, auto-fix would happily rewrite what you typed into a credential box.

Switcher3way now also inspects the focused field directly: whether macOS reports it as a secure text field, and whether it is labelled as a password — in a dozen languages, matched against whatever the page calls it. Any one of those is enough to leave it alone. Auto-fix, the trigger, and the on-screen badge are all suppressed there.

It deliberately errs toward doing nothing: a box labelled "password" is left alone even if it isn't one.

Also: the opt-in debug log never records which keys you pressed — only that a keystroke was buffered. If you have had logging switched on and want that history gone, delete ~/Library/Logs/Switcher3w/.

You can now see what was corrected

A conversion used to be invisible — the text simply changed under you. A small badge now appears by the cursor showing what you typed, struck through, and what replaced it, plus your trigger key as a reminder of how to undo it.

On by default; turn it off in Settings → General → Show what was corrected.

Notifications instead of a dialog in your way

The "always leave this word alone?" prompt used to be a modal dialog, popping up mid-typing right after the app had already interrupted you by rewriting a word. It is now a notification with an Add to exceptions button, and ignoring it costs you nothing.

A rewrite the app genuinely could not apply now says so, instead of looking like the app is broken.

Two changes to how the trigger behaves

Both are things the app claimed to do and didn't:

It now reaches every layout. After auto-fix corrected a word, tapping the trigger only toggled between the correction and what you typed — a third layout was unreachable. Type dblyj, let it become видно in Ukrainian, and tapping now walks Russian → your original text → Ukrainian again.

It now picks the right layout for words Ukrainian and Russian spell the same. Any word without і/ї/є or ы/э/ъ looks identical in both, and the trigger used to pick whichever layout came first in your input-source order — so a Russian-only word like хорошо could leave you typing Ukrainian. It now follows the dictionary, and for words that exist in both languages it follows Language for ambiguous words in Settings → Auto-fix, the same preference auto-fix uses.

Worth knowing: because the trigger now cycles through every layout, cancelling an auto-fix is no longer always a single tap — with three layouts you pass through the third on the way back to your original text.

Under the hood

The detection logic — the part that decides whether to touch your text at all — now has an automated test suite covering the soft gates, the three-way decision, phrase corrections, and dictionary quality. Two of the defects fixed above were found by testing this release, not by users.


Install: open the DMG and drag the app to Applications. This build is not notarized, so on a Mac that has never run it, right-click the app → Open the first time.

Updating from 1.2.0: use Check for Updates… in the menu. The update is verified against the checksum below and installed only if it carries the same signing certificate, which is what keeps your Accessibility and Input Monitoring permissions intact.

Switcher3way-1.3.0.dmg
SHA-256: 95d327adef89606c2f2226e2f43065d4fcd9d3e3ae65b40dafa521e7e1758049