{"id":50699121,"url":"https://github.com/walteryaron/kright","last_synced_at":"2026-06-09T08:01:18.248Z","repository":{"id":363309621,"uuid":"1247826187","full_name":"walteryaron/Kright","owner":"walteryaron","description":"Keyboard done right — a lightweight menu-bar / tray app that fixes text typed in the wrong keyboard layout. macOS \u0026 Windows. Private, offline, open source.","archived":false,"fork":false,"pushed_at":"2026-06-08T10:07:04.000Z","size":992,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T11:26:34.128Z","etag":null,"topics":["csharp","dotnet","hebrew","keyboard","keyboard-layout","layout-switcher","macos","macos-app","menu-bar","open-source","productivity","swift","system-tray","windows","windows-app","wpf"],"latest_commit_sha":null,"homepage":"https://github.com/walteryaron/Kright/releases","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/walteryaron.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-23T20:44:46.000Z","updated_at":"2026-06-08T10:07:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/walteryaron/Kright","commit_stats":null,"previous_names":["walteryaron/kright"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/walteryaron/Kright","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walteryaron%2FKright","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walteryaron%2FKright/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walteryaron%2FKright/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walteryaron%2FKright/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/walteryaron","download_url":"https://codeload.github.com/walteryaron/Kright/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walteryaron%2FKright/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34096955,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","hebrew","keyboard","keyboard-layout","layout-switcher","macos","macos-app","menu-bar","open-source","productivity","swift","system-tray","windows","windows-app","wpf"],"created_at":"2026-06-09T08:00:54.715Z","updated_at":"2026-06-09T08:01:18.242Z","avatar_url":"https://github.com/walteryaron.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/logo.png\" alt=\"Kright logo\" width=\"128\" height=\"128\" /\u003e\n\n# Kright\n\n**Keyboard done right.** · by [Walter Apps LTD](#made-by)\n\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-555?logo=apple\u0026logoColor=white)](#)\n[![macOS](https://img.shields.io/badge/macOS-Swift%20%2B%20SwiftUI-FA7343?logo=swift\u0026logoColor=white)](Mac/)\n[![Windows](https://img.shields.io/badge/Windows-C%23%20.NET%208-512BD4?logo=dotnet\u0026logoColor=white)](Windows/)\n[![Release](https://img.shields.io/github/v/release/walteryaron/Kright?label=release\u0026color=brightgreen)](https://github.com/walteryaron/Kright/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n\n\u003cimg src=\"assets/demo.gif\" alt=\"Kright fixing wrong-layout text in place\" width=\"574\" /\u003e\n\n\u003c/div\u003e\n\nA lightweight **native desktop keyboard utility** for **macOS and Windows** that\nruns from the menu bar / system tray. Its main job: fix text you typed in the\n**wrong keyboard layout** (e.g. you meant `exit` but typed `קסןא` because Hebrew\nwas active) — with a global hotkey, in place, in any app. It can also\n**auto-switch the keyboard to English** when you focus an email / URL / password\nfield.\n\nThere is **no shared/cross-platform code** — each OS has its own native app:\n\n| Platform | Stack | Folder |\n|----------|-------|--------|\n| macOS    | Swift + SwiftUI | [`Mac/`](Mac/) |\n| Windows  | C# + WPF (.NET 8) | [`Windows/`](Windows/) |\n\n## Download\n\nGrab the latest **signed** build — no build tools required:\n\n| Platform | Download |\n|----------|----------|\n| **macOS** 13+ | [**Kright.dmg**](https://github.com/walteryaron/Kright/releases/latest/download/Kright.dmg) |\n| **Windows** 10+ | [**Latest installer (.exe)**](https://github.com/walteryaron/Kright/releases/latest) |\n\nOr browse [all releases](https://github.com/walteryaron/Kright/releases). Once\ninstalled, Kright **keeps itself up to date automatically** (signed in-app\nupdates — see the [changelog](CHANGELOG.md)).\n\n## Features\n\n- **Wrong-layout fix** — converts the focused field's last word using the\n  *real* installed keyboard layouts (macOS `UCKeyTranslate` / Windows\n  `ToUnicodeEx`), so it matches exactly what your keyboard types, for any\n  language pair.\n- **Global hotkey** — fix in place from anywhere (default `⌃⌥K` on macOS,\n  `Ctrl+Alt+K` on Windows), configurable in Settings.\n- **Terminal / console support** — when a field rejects accessibility writes\n  (Terminal, iTerm, cmd, PowerShell), it falls back to simulated keystrokes.\n- **Switches the keyboard after a fix** — so you keep typing in the corrected\n  language instead of producing more gibberish.\n- **Auto-fix mode** (opt-in) — convert wrong-layout words automatically as you\n  finish them (on Space / Tab), no hotkey needed.\n- **Auto keyboard language** — optionally switch to a Latin layout on email / URL\n  / password fields (only when the current layout is non-Latin).\n- **Private by design** — no network, nothing stored, and password / secure\n  fields are never read (you can watch capture pause in the Key Log).\n\n## How the App Works\n\nKright runs quietly in the **menu bar** (macOS) / **system tray** (Windows) and\nstarts when you log in. It passively watches the keys you type — never recording\nthem — only so it knows the exact characters of the word you're typing right now.\nWhen you press the magic key combination, it converts that text from the wrong\nlayout to the right one, **in place**, and switches your keyboard to the corrected\nlanguage so you can keep going.\n\nThe basic steps:\n\n1. Type some text using an incorrect layout (you meant Hebrew, but English was\n   active → gibberish — or the other way around).\n2. Realize your mistake.\n3. Press the magic key combination (default **⌃⌥K** on macOS, **Ctrl+Alt+K** on\n   Windows — configurable in Settings).\n4. Kright replaces the wrong-layout text with the correct text **and switches the\n   keyboard** to match.\n5. Keep typing — you're now in the right layout. Profit.\n\n**No need to select the text first** — Kright already knows what you just typed,\nso there's no Ctrl+A / ⌘A step. It uses your *real* installed keyboard layouts to\ntranslate, so the result matches exactly what your keyboard produces, for any\nlanguage pair. It looks at the current layout to decide how to convert, so don't\nchange the layout before pressing the hotkey — Kright changes it for you.\n\n**How it puts the text back:** in normal editable fields it writes the correction\ndirectly through the OS accessibility API — the clipboard is never touched. In\nterminals / consoles that don't allow that, it falls back to simulating\nkeystrokes: it deletes the wrong text and pastes the correction, saving and\nrestoring whatever was on your clipboard around it. (It can't guarantee\nrestoration, and non-text clipboard data — a file or a picture — isn't restored.)\n\n**Auto-fix mode** (opt-in): instead of pressing the hotkey, turn this on and\nKright checks each word as you finish it (on Space / Tab). If it looks like\nwrong-layout gibberish, it converts it and switches the keyboard automatically.\n\nEverything happens **on your device** — no network, nothing stored, and\npassword / secure fields are never read. See the [changelog](CHANGELOG.md).\n\n## For developers\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBuild \u0026amp; run from source\u003c/b\u003e\u003c/summary\u003e\n\n**macOS** (needs Xcode + [XcodeGen](https://github.com/yonaskolb/XcodeGen)):\n```sh\ncd Mac\nxcodegen generate\nxcodebuild -project Kright.xcodeproj -scheme Kright -configuration Debug -derivedDataPath build build\nopen build/Build/Products/Debug/Kright.app\n```\nGrant **Accessibility** permission (System Settings → Privacy \u0026 Security →\nAccessibility → enable Kright).\n\n**Windows** (needs the .NET 8 SDK — see [`Windows/README.md`](Windows/README.md)):\n```powershell\ncd Windows\ndotnet build\ndotnet run\n```\n\n### Tests\n\nPure-logic unit tests (conversion tables, script + language detection):\n```sh\n# macOS (XCTest)\ncd Mac \u0026\u0026 xcodebuild test -project Kright.xcodeproj -scheme Kright -destination 'platform=macOS'\n```\n```powershell\n# Windows (xUnit) — run on Windows; the WPF app only builds there\ndotnet test Windows/Tests/Kright.Tests.csproj\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePackaging installers\u003c/b\u003e\u003c/summary\u003e\n\n**macOS — `.dmg`** (run on a Mac with Xcode):\n```sh\nbrew install create-dmg       # one-time: styled \"drag to Applications\" window\ncd Mac\n./scripts/build-dmg.sh        # → build/Kright.dmg\n```\nThe DMG shows a custom background (`scripts/gen-dmg-bg.swift`: light panel + a\n\"›\" chevron) with the app icon left and Applications right. `create-dmg` drives\nFinder to author the window — on the **first run it prompts \"Terminal wants to\ncontrol Finder\"; approve it** (the layout can't be written otherwise on macOS\n26+). It falls back to `dmgbuild` (headless, but its background may not render on\nmacOS 26) or a plain DMG if neither tool is installed.\nIf a **Developer ID Application** certificate and a stored notary profile\n(`kright-notary`) are present, the script automatically signs (hardened runtime),\n**notarizes**, and **staples** the DMG, so it opens with a normal double-click\nanywhere. The one-time setup (create the cert in Xcode; `notarytool\nstore-credentials`) is documented at the bottom of `scripts/build-dmg.sh`.\nWithout them it falls back to a dev-signed DMG whose first launch needs a\nright-click → Open.\n\n**Windows — installer `.exe`** (run on Windows; needs the\n[.NET 8 SDK](https://dotnet.microsoft.com/download) and\n[Inno Setup 6](https://jrsoftware.org/isdl.php)):\n```powershell\ncd Windows\npowershell -ExecutionPolicy Bypass -File .\\build-installer.ps1\n# → installer\\output\\KrightSetup-1.0.1.exe\n```\nThis publishes a **self-contained** x64 build (the .NET runtime is bundled, so\nend users install nothing extra) and wraps it in a per-user installer (no UAC),\nwith optional \"start at login\".\n\n\u003c/details\u003e\n\n## Privacy\n\n**Kright doesn't collect your keystrokes — nothing is recorded, stored, or sent\nanywhere. No internet. No cloud. No AI service. No telemetry. Nothing.**\nEverything happens on your own device, and only to fix the word you just typed. Password and secure fields are\nnever read. Because the whole app is open source, every one of these claims is\nverifiable in this repo.\n\n## Common Questions\n\n**Does Kright record, log, or upload my keystrokes?**\nNo — never. It looks at only the current word, in memory, to correct the layout.\nNothing you type is written to disk, and it makes **zero** network requests.\n\n**Does it use the internet, a cloud, or an AI service?**\nNo. There is no networking code anywhere in the app — no internet, no cloud, no\nAI, no analytics. It works fully offline. (Detection uses a tiny on-device\nstatistical model, not a remote service.)\n\n**Can it see my passwords?**\nNo. The moment a password or secure field is focused, Kright stops listening\nentirely — you can watch this live in the Key Log (\"Paused — not capturing\"). On\nmacOS the operating system *also* blocks every app from reading secure fields.\n\n**Does it work in any app?**\nYes — browsers, native apps, and terminals/consoles (it falls back to simulated\nkeystrokes where direct edits aren't allowed).\n\n**Which languages does it support?**\nThe wrong-layout fix works for any installed non-Latin ⇄ Latin layout pair (it\nreads your real layouts). The smart \"is this gibberish?\" detection (used by the\nconfidence verdict and Auto-fix mode) ships on-device models for **English,\nHebrew, Russian, Ukrainian, Bulgarian, Serbian, Macedonian, Greek, Persian,\nArmenian, and Georgian** — adding a language is just bundling one more table.\n\n**Is it open source?**\nYes — the entire app is in this repository, so you can confirm the privacy claims\nyourself.\n\n## Made by\n\n**Walter Apps LTD** — Kright, *keyboard done right*.\n\n## License\n\nMIT License · Copyright © 2026 Walter Apps LTD. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalteryaron%2Fkright","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwalteryaron%2Fkright","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalteryaron%2Fkright/lists"}