Smart keyboard-layout converter for Windows.
Select text you typed in the wrong layout and press F10. TypeFix copies the selection, maps it to the other layout, and pastes it back. The default pair is English (US QWERTY) and Persian (ISIRI 9147), including the Shift layer.
TypeFix is a small Windows desktop app. It stays in the system tray and listens for the global F10 hotkey.
- You select mistyped text in any app (the target window must stay focused).
- You press F10.
- TypeFix sends Ctrl+C, detects which layout the characters belong to, converts them, pastes the result with Ctrl+V, and restores your previous clipboard.
Example: Persian typed on an English layout, such as slhm, becomes سلام. The same key works in the other direction.
Closing the window hides TypeFix in the tray. It keeps running until you right-click the tray icon and choose Exit.
- Global F10 hotkey (no modifier keys)
- Automatic direction detection between layout pairs
- English ↔ Persian (ISIRI 9147), including Shift characters such as
ژ,آ,ئ, ZWNJ, and؟ - Arabic letter normalization (
ي→ی,ك→ک) on the Persian layout, so scoring stays consistent - Built-in pairs with English: فارسی، العربية، Français، Italiano، Español، Türkçe، 中文 (Zhuyin)، 한국어. Only the selected layout is active, and F10 uses that one
- Interface languages: English, فارسی, العربية, Français, Italiano, Español, Türkçe, 中文, 한국어
- Import more pairs as JSON
- Export every installed layout to a zip file
- Run at Windows sign-in (current user)
- System tray, with a balloon tip the first time the window is closed
| OS | Windows 10 or later (64-bit) |
| To build | .NET 10 SDK |
| To run a framework-dependent build | .NET 10 Desktop Runtime |
| IDE (optional) | Visual Studio 2022 or later, with the .NET desktop development workload |
This project targets net10.0-windows and uses WPF plus Windows Forms. It does not run on Linux or macOS.
Check the SDK:
dotnet --versionYou need a 10.x SDK.
From the repository root:
dotnet restore
dotnet build -c ReleaseOr open TypeFix.sln in Visual Studio and build Release.
Output:
bin\Release\net10.0-windows\TypeFix.exe
The Persian ↔ English layout is embedded in the app. A debug build may still copy TypeFix.ico next to the executable; a published single-file build does not need it.
Development:
dotnet run -c ReleaseOr start TypeFix.exe from the build folder above. In Visual Studio, press F5.
After it starts:
- Select text in another window.
- Press F10.
- If F10 is already taken, the status line reports that the hotkey could not be registered. Close the other app and restart TypeFix.
Run at startup: open the app, go to General, and turn on Run TypeFix automatically on Windows startup. This writes a value under HKCU\Software\Microsoft\Windows\CurrentVersion\Run.
Publish produces a folder you can zip and share. The publish folder is gitignored, so it is not committed. One publish is one CPU architecture: an x64 build does not also contain x86 or Arm64.
Use the self-contained single-file build. It compiles the app and bundles the .NET runtime and native libraries, so the target PC does not need a separate .NET install. That is the complete package.
The usual one is 64-bit:
dotnet publish -p:PublishProfile=win-x64Output: publish\win-x64\
Profiles live in Properties/PublishProfiles/. Each one is Release, self-contained, single-file, and compressed.
| Profile | Command | Output | Use it for |
|---|---|---|---|
win-x64 |
dotnet publish -p:PublishProfile=win-x64 |
publish\win-x64\ |
64-bit Windows. This is the build to share. |
win-x86 |
dotnet publish -p:PublishProfile=win-x86 |
publish\win-x86\ |
32-bit Windows only. |
win-arm64 |
dotnet publish -p:PublishProfile=win-arm64 |
publish\win-arm64\ |
Windows on ARM (native). |
One command for all three complete packages:
foreach ($p in 'win-x64','win-x86','win-arm64') { dotnet publish -p:PublishProfile=$p; if ($LASTEXITCODE -ne 0) { break } }win-x86 also runs on 64-bit Windows, but it is the 32-bit app (slower, and limited to about 2 GB of memory). Prefer win-x64 unless the PC is actually 32-bit. Windows 11 on ARM can emulate win-x64; ship win-arm64 when you want the native build for those PCs.
These folders are smaller because they leave the runtime out. The target PC must have the .NET 10 Desktop Runtime of the same architecture.
foreach ($r in 'win-x64','win-x86','win-arm64') { dotnet publish .\TypeFix.csproj -c Release -r $r --self-contained false -o ".\publish\framework-dependent\$r"; if ($LASTEXITCODE -ne 0) { break } }For a self-contained publish, ship TypeFix.exe by itself. The default layout is inside the executable. Layouts a person imports are saved under %AppData%\TypeFix\layouts, not next to the exe. A framework-dependent build is still a folder, because it leaves the runtime out.
Build a separate setup program for each architecture (self-contained, so the target PC does not need a separate .NET install). This requires Inno Setup 6.
.\installer\build-installer.ps1Output:
| File | Installs on |
|---|---|
installer\output\TypeFix-1.0.0-Setup-x64.exe |
64-bit Windows |
installer\output\TypeFix-1.0.0-Setup-x86.exe |
32-bit Windows (also runs on 64-bit Windows as a 32-bit app) |
installer\output\TypeFix-1.0.0-Setup-arm64.exe |
Windows on ARM |
Running that setup installs TypeFix for the current user in %LOCALAPPDATA%\Programs\TypeFix, adds a Start menu shortcut, and registers an uninstall entry in Settings → Apps. The setup wizard offers the same languages as the app: English, فارسی, العربية, Français, Italiano, Español, Türkçe, 中文, and 한국어. On the last page, Create a desktop shortcut and Launch TypeFix are both checked by default. A silent install does both unless you pass /NODESKTOPICON or /NOLAUNCH.
To install for yourself without the setup program, copy the publish folder anywhere (for example %LOCALAPPDATA%\TypeFix) and run TypeFix.exe. Enable startup from General after you place the exe in its final folder, so Windows launches that path.
| Action | Result |
|---|---|
| Select text, press F10 | Convert the selection and paste it back |
| Close the window | Hide to the tray; conversion still works |
| Left-click the tray icon | Show the window |
| Tray menu → Exit | Quit |
| General or Settings → choose a layout | F10 uses that pair. Only one layout is on |
| Import | Add a .json layout file, or a zip of them |
| Export all | Save every installed layout to a zip file |
Overlapping F10 presses are ignored while a conversion is in progress. If the text does not match a configured layout, it is left unchanged.
Each language pair is one JSON file, in the same shape as the built-in Persian ↔ English layout. Put a clear Name on it, such as Arabic ↔ English. Import that file from General or Settings. Only the selected file is used.
Each pair maps two layouts by key position: the character at index n in layout 1 is the same physical key as index n in layout 2.
{
"Id": "en-fa",
"Name": "Persian ↔ English",
"LayoutPairs": [
{
"Name": "English-Persian",
"Id": "en-fa",
"Layout1Name": "English",
"Layout2Name": "Persian",
"Layout1Chars": "qwertyuiop[]asdfghjkl;'zxcvbnm,./",
"Layout2Chars": "ضصثقفغعهخحجچشسیبلاتنمکگظطزرذدئو./",
"Layout1ShiftChars": "QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?",
"Layout2ShiftChars": "..."
}
]
}Rules:
Layout1CharsandLayout2Charsmust be the same length. A file with unequal lengths is rejected.- Shift strings are optional. If you set them, each must be the same length as its base string.
- Characters that appear in both layouts (for example
.and/) are not used to guess direction. - Import the file in the app. It becomes the active layout immediately.
- Export all writes every installed layout, including the built-in pair, into one zip.
The built-in pair is Persian ↔ English (ISIRI 9147), including the Shift layer. It stays in the app and cannot be removed.
One JSON file is one switch pair, such as Chinese ↔ English or Arabic ↔ English. Name is the label in the list. Only one file can be on. F10 converts with that pair and does not cycle through the others.
TypeFix maps one character per physical key. The character at index n in Layout1Chars is the same key as index n in Layout2Chars, so the two strings must be the same length. Shared characters such as . and / are not used to guess direction. Shift strings are optional. If you add them, each must be the same length as its own base string.
Use the same key order as the built-in file:
qwertyuiop[]asdfghjkl;'zxcvbnm,./
That is the US QWERTY letter block, left to right, row by row.
- Click Export all and open the Persian file, or copy the example below.
- Set
IdandName.Nameis what the app shows, for exampleChinese ↔ English. - Put the first layout in
Layout1Charsand the other layout inLayout2Chars, one character per key, in the order above. - Save the file as
.json. - In General or Settings, click Import and choose that file. It becomes the active layout.
- Select text and press F10. To switch pairs, select another row in the list. Only the selected row is used.
Export all writes every installed layout, including the built-in pair, into one zip you can share.
This sample is only four keys, so you can see the alignment. It is not a full Chinese keyboard. A Pinyin input method is not a key-by-key layout, so it does not belong in this file. If each key on your layout types one character, list that character on the matching key.
If q should become 你, w → 好, e → 世, and r → 界:
{
"Id": "en-zh",
"Name": "Chinese ↔ English",
"LayoutPairs": [
{
"Id": "en-zh",
"Name": "English-Chinese",
"Layout1Name": "English",
"Layout2Name": "Chinese",
"Layout1Chars": "qwer",
"Layout2Chars": "你好世界"
}
]
}qwer and 你好世界 are both length 4. Extend both strings together until they cover the keys you care about. Arabic, French, Russian, and any other character-per-key layout use these same steps. The About page in the app repeats this guide and can copy a full-length starter whose Layout2Chars still matches English, so F10 changes nothing until you replace those characters.
TypeFix.sln
TypeFix.csproj
App.xaml / App.xaml.cs application entry
MainWindow.xaml / .xaml.cs window, tray, hotkey, startup
LanguageEngine.cs layout scoring and conversion
LayoutCatalog.cs built-in layout plus imported files
LayoutManagerControl.xaml pick, import, and export layouts
Models/LayoutConfig.cs JSON root
Models/LayoutPair.cs one layout pair
TypeFixLayouts.json built-in Persian ↔ English layout, embedded in the app
TypeFix.ico window and tray icon
The Links section shows Website and GitHub labels. Website opens https://typefix.ir. GitHub opens https://github.com/sa2ncom/TypeFix. The Support development card opens https://typefix.ir/donate.
| Symptom | What to check |
|---|---|
| F10 does nothing | Another program owns F10. The status line shows a registration error. |
| Text is not replaced | The target window lost focus, or the selection did not match a layout pair. |
| Import fails | JSON syntax, or a pair whose character strings differ in length. |
| App does not start | For a framework-dependent build, install the .NET 10 Desktop Runtime. |
TypeFix is released under the MIT License.
The interface uses Vazirmatn, copyright The Vazirmatn Project Authors, under the SIL Open Font License 1.1. The font stays under that license. The MIT license covers the application code.
TypeFix یک برنامهٔ کوچک دسکتاپ برای ویندوز است. در system tray میماند و میانبر سراسری F10 را گوش میدهد.
۱. متنی را که با چیدمان اشتباه تایپ شده در هر برنامهای انتخاب میکنید (پنجرهٔ مقصد باید فعال بماند). ۲. F10 را میزنید. ۳. برنامه با Ctrl+C متن را برمیدارد، تشخیص میدهد کاراکترها متعلق به کدام چیدماناند، تبدیلشان میکند، نتیجه را با Ctrl+V میچسباند، و کلیپبورد قبلی را برمیگرداند.
مثال: اگر «سلام» را با چیدمان انگلیسی تایپ کرده باشید (slhm)، بعد از انتخاب و زدن F10 به «سلام» تبدیل میشود. همین کلید در جهت برعکس هم کار میکند.
بستن پنجره برنامه را در tray مخفی میکند. تا وقتی از منوی راستکلیک آیکون tray، Exit را نزنید، برنامه باز میماند.
- میانبر سراسری F10 (بدون کلید همراه)
- تشخیص خودکار جهت تبدیل بین جفتچیدمانها
- انگلیسی ↔ فارسی (استاندارد ISIRI 9147)، بههمراه لایهٔ Shift مثل
ژ،آ،ئ، نیمفاصله و؟ - یکسانسازی حروف عربی (
يبهیوكبهک) فقط در چیدمان فارسی، تا تشخیص جهت بههم نریزد - جفتهای داخلی با English: فارسی، العربية، Français، Italiano، Español، Türkçe، 中文 (注音)، 한국어. فقط چیدمان انتخابشده روشن است و F10 همان را به کار میبرد
- زبان رابط: English، فارسی، العربية، Français، Italiano، Español، Türkçe، 中文، 한국어
- وارد کردن جفتهای دیگر با فایل JSON
- خروجی گرفتن از همهٔ چیدمانهای نصبشده در یک فایل zip
- اجرا هنگام ورود به ویندوز (کاربر جاری)
- system tray، با یک راهنمای کوتاه اولین باری که پنجره بسته میشود
| سیستمعامل | ویندوز ۱۰ یا جدیدتر (۶۴بیتی) |
| برای ساخت | SDK داتنت ۱۰ |
| برای اجرای نسخهٔ وابسته به فریمورک | رانتایم دسکتاپ داتنت ۱۰ |
| محیط توسعه (اختیاری) | ویژوال استودیو ۲۰۲۲ یا جدیدتر، با بار کاری .NET desktop development |
هدف پروژه net10.0-windows است و از WPF و Windows Forms استفاده میکند. روی لینوکس و مک اجرا نمیشود.
بررسی SDK:
dotnet --versiondotnet restore
dotnet build -c Releaseیا TypeFix.sln را در ویژوال استودیو باز کنید و پیکربندی Release را بسازید.
خروجی:
bin\Release\net10.0-windows\TypeFix.exe
چیدمان فارسی ↔ انگلیسی داخل خود برنامه است. ساختِ توسعه ممکن است TypeFix.ico را کنار اجرایی کپی کند؛ انتشار تکفایل به آن نیاز ندارد.
هنگام توسعه:
dotnet run -c Releaseیا TypeFix.exe را از پوشهٔ ساخت بالا اجرا کنید. در ویژوال استودیو کلید F5 را بزنید.
بعد از بالا آمدن برنامه:
۱. در پنجرهٔ دیگری متن را انتخاب کنید. ۲. F10 را بزنید. ۳. اگر F10 از قبل گرفته شده باشد، نوار وضعیت میگوید میانبر ثبت نشده است. برنامهٔ دیگر را ببندید و TypeFix را دوباره اجرا کنید.
اجرا هنگام روشن شدن ویندوز: برنامه را باز کنید، به General بروید و گزینهٔ Run TypeFix automatically on Windows startup را روشن کنید. این کار یک مقدار در HKCU\Software\Microsoft\Windows\CurrentVersion\Run مینویسد.
دستور publish پوشهای میسازد که میتوانید فشرده کنید و به دیگران بدهید. پوشهٔ publish در git نادیده گرفته میشود و وارد مخزن نمیشود. هر انتشار فقط یک معماری پردازنده است: خروجی ۶۴بیتی، نسخهٔ ۳۲بیتی یا Arm64 را داخل خودش ندارد.
نسخهٔ مستقل و تکفایل را بسازید. این حالت خود برنامه را کامپایل میکند و رانتایم داتنت و کتابخانههای بومی را هم کنارش میگذارد، پس رایانهٔ مقصد به نصب جداگانهٔ داتنت نیاز ندارد. این همان بستهٔ کامل است.
نسخهٔ معمول ۶۴بیتی است:
dotnet publish -p:PublishProfile=win-x64خروجی: publish\win-x64\
پروفایلها در Properties/PublishProfiles/ هستند. هر کدام Release، مستقل، تکفایل و فشردهشده است.
| پروفایل | دستور | خروجی | برای چه سیستمی |
|---|---|---|---|
win-x64 |
dotnet publish -p:PublishProfile=win-x64 |
publish\win-x64\ |
ویندوز ۶۴بیتی. همین را به دیگران بدهید. |
win-x86 |
dotnet publish -p:PublishProfile=win-x86 |
publish\win-x86\ |
فقط ویندوز ۳۲بیتی. |
win-arm64 |
dotnet publish -p:PublishProfile=win-arm64 |
publish\win-arm64\ |
ویندوز روی پردازندهٔ ARM (بومی). |
یک دستور برای هر سه بستهٔ کامل:
foreach ($p in 'win-x64','win-x86','win-arm64') { dotnet publish -p:PublishProfile=$p; if ($LASTEXITCODE -ne 0) { break } }win-x86 روی ویندوز ۶۴بیتی هم اجرا میشود، ولی برنامهٔ ۳۲بیتی است (کندتر، و حافظهاش حدود ۲ گیگابایت سقف دارد). مگر رایانه واقعاً ۳۲بیتی باشد، win-x64 را انتخاب کنید. ویندوز ۱۱ روی ARM میتواند win-x64 را شبیهسازی کند؛ اگر برای آن رایانهها نسخهٔ بومی میخواهید، win-arm64 را بسازید.
این پوشهها کوچکترند چون رانتایم داخلشان نیست. رایانهٔ مقصد باید رانتایم دسکتاپ داتنت ۱۰ را با همان معماری نصب داشته باشد.
foreach ($r in 'win-x64','win-x86','win-arm64') { dotnet publish .\TypeFix.csproj -c Release -r $r --self-contained false -o ".\publish\framework-dependent\$r"; if ($LASTEXITCODE -ne 0) { break } }در انتشارِ خودکفا فقط TypeFix.exe را بفرستید. چیدمان پیشفرض داخل اجرایی است. چیدمانهایی که کاربر وارد میکند در %AppData%\TypeFix\layouts ذخیره میشوند، نه کنار فایل exe. نسخهٔ وابسته به فریمورک همچنان یک پوشه است، چون رانتایم همراهش نیست.
برای هر معماری یک برنامهٔ نصب جدا بسازید (خودکفا، تا رایانهٔ مقصد به نصب جداگانهٔ داتنت نیاز نداشته باشد). برای ساخت، Inno Setup 6 لازم است.
.\installer\build-installer.ps1خروجی:
| فایل | نصب روی |
|---|---|
installer\output\TypeFix-1.0.0-Setup-x64.exe |
ویندوز ۶۴بیتی |
installer\output\TypeFix-1.0.0-Setup-x86.exe |
ویندوز ۳۲بیتی (روی ویندوز ۶۴بیتی هم بهصورت برنامهٔ ۳۲بیتی اجرا میشود) |
installer\output\TypeFix-1.0.0-Setup-arm64.exe |
ویندوز روی پردازندهٔ ARM |
اجرای این فایل، TypeFix را برای کاربر جاری در %LOCALAPPDATA%\Programs\TypeFix نصب میکند، میانبر منوی استارت میسازد، و حذف برنامه را در Settings → Apps ثبت میکند. زبانهای نصب همان زبانهای برنامه است: English، فارسی، العربية، Français، Italiano، Español، Türkçe، 中文 و 한국어. در صفحهٔ پایانی، ساخت میانبر روی دسکتاپ و اجرای TypeFix هر دو بهطور پیشفرض تیک خوردهاند. نصب بیصدا هم هر دو را انجام میدهد، مگر اینکه /NODESKTOPICON یا /NOLAUNCH را بدهید.
برای نصب بدون برنامهٔ نصب، پوشهٔ انتشار را هر جا خواستید کپی کنید (مثلاً %LOCALAPPDATA%\TypeFix) و TypeFix.exe را اجرا کنید. گزینهٔ اجرا هنگام ورود را بعد از قرار دادن فایل در مسیر نهایی روشن کنید تا ویندوز همان مسیر را باز کند.
| کار | نتیجه |
|---|---|
| انتخاب متن و زدن F10 | تبدیل انتخاب و چسباندن نتیجه |
| بستن پنجره | رفتن به tray؛ تبدیل همچنان کار میکند |
| کلیک چپ روی آیکون tray | نمایش پنجره |
| منوی tray → Exit | خروج |
| عمومی یا تنظیمات → انتخاب چیدمان | F10 همان جفت را به کار میبرد. فقط یکی روشن است |
| وارد کردن | افزودن یک فایل .json یا یک zip از آنها |
| خروجی همه | ذخیرهٔ همهٔ چیدمانهای نصبشده در یک zip |
اگر هنگام یک تبدیل دوباره F10 زده شود، فشار اضافه نادیده گرفته میشود. اگر متن با هیچ جفتچیدمانی جور نباشد، دستنخورده میماند.
هر جفت زبان یک فایل JSON است، با همان شکل چیدمان داخلی فارسی ↔ انگلیسی. روی آن یک Name روشن بگذارید، مثل Arabic ↔ English. فایل را از صفحهٔ عمومی یا تنظیمات وارد کنید. فقط فایل انتخابشده استفاده میشود.
هر جفت، دو چیدمان را بر اساس جای کلید به هم وصل میکند: نویسهٔ اندیس n در چیدمان اول همان کلید فیزیکی اندیس n در چیدمان دوم است.
{
"Id": "en-fa",
"Name": "Persian ↔ English",
"LayoutPairs": [
{
"Name": "English-Persian",
"Id": "en-fa",
"Layout1Name": "English",
"Layout2Name": "Persian",
"Layout1Chars": "qwertyuiop[]asdfghjkl;'zxcvbnm,./",
"Layout2Chars": "ضصثقفغعهخحجچشسیبلاتنمکگظطزرذدئو./",
"Layout1ShiftChars": "QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?",
"Layout2ShiftChars": "..."
}
]
}قواعد:
- طول
Layout1CharsوLayout2Charsباید برابر باشد. فایلی که طولهایش فرق کند رد میشود. - رشتههای Shift اختیاریاند. اگر بگذاریدشان، طول هر کدام باید با رشتهٔ پایهٔ خودش یکی باشد.
- نویسههای مشترک هر دو چیدمان (مثل
.و/) برای حدس زدن جهت استفاده نمیشوند. - فایل را در برنامه وارد کنید. همان لحظه چیدمان فعال میشود.
- خروجی همه، همهٔ چیدمانهای نصبشده از جمله جفت داخلی را در یک zip مینویسد.
جفت داخلی فارسی ↔ انگلیسی (ISIRI 9147) است، از جمله لایهٔ Shift. داخل برنامه میماند و حذف نمیشود.
هر فایل JSON یک جفت سوییچ است، مثل چینی ↔ انگلیسی یا عربی ↔ انگلیسی. Name نامی است که در لیست دیده میشود. فقط یک فایل میتواند روشن باشد. F10 با همان جفت تبدیل میکند و بین بقیه نمیچرخد.
TypeFix هر کلید فیزیکی را به یک نویسه وصل میکند. نویسهٔ اندیس n در Layout1Chars همان کلید اندیس n در Layout2Chars است، پس طول دو رشته باید برابر باشد. نویسههای مشترک مثل . و / برای حدس زدن جهت استفاده نمیشوند. رشتههای Shift اختیاریاند. اگر بگذاریدشان، طول هر کدام باید با رشتهٔ پایهٔ خودش یکی باشد.
ترتیب کلیدها را مثل فایل داخلی نگه دارید:
qwertyuiop[]asdfghjkl;'zxcvbnm,./
این بلوک حروف QWERTY آمریکایی است، از چپ به راست و ردیف به ردیف.
- خروجی همه را بزنید و فایل فارسی را باز کنید، یا نمونهٔ زیر را کپی کنید.
IdوNameرا بگذارید.Nameهمان چیزی است که برنامه نشان میدهد، مثلاًChinese ↔ English.- چیدمان اول را در
Layout1Charsو چیدمان دوم را درLayout2Charsبنویسید، هر کلید یک نویسه، با ترتیب بالا. - فایل را با پسوند
.jsonذخیره کنید. - در عمومی یا تنظیمات، وارد کردن را بزنید و همان فایل را انتخاب کنید. همان لحظه فعال میشود.
- متن را انتخاب کنید و F10 را بزنید. برای عوض کردن جفت، ردیف دیگری را در لیست انتخاب کنید. فقط ردیف انتخابشده استفاده میشود.
خروجی همه همهٔ چیدمانهای نصبشده، از جمله جفت داخلی، را در یک zip میریزد تا بتوانید بفرستید.
این نمونه فقط چهار کلید است تا ردیف شدن نویسهها معلوم باشد. صفحهکلید کامل چینی نیست. ورودی پینیین چیدمان کلیدبهکلید نیست و داخل این فایل نمیآید. اگر روی چیدمان شما هر کلید یک نویسه میدهد، همان نویسه را روی کلید متناظر بنویسید.
اگر q باید 你 شود، w به 好، e به 世 و r به 界:
{
"Id": "en-zh",
"Name": "Chinese ↔ English",
"LayoutPairs": [
{
"Id": "en-zh",
"Name": "English-Chinese",
"Layout1Name": "English",
"Layout2Name": "Chinese",
"Layout1Chars": "qwer",
"Layout2Chars": "你好世界"
}
]
}طول qwer و 你好世界 هر دو ۴ است. هر دو رشته را با هم ادامه دهید تا کلیدهایی که میخواهید پوشش داده شوند. عربی، فرانسه، روسی و هر چیدمان حرفبهکلید دیگر با همین قدمها ساخته میشوند. صفحهٔ درباره در برنامه همین راهنما را نشان میدهد و میتواند یک نمونهٔ کامل کپی کند که Layout2Chars آن هنوز انگلیسی است، تا وقتی نویسهها را عوض نکردهاید F10 چیزی را تغییر ندهد.
TypeFix.sln
TypeFix.csproj
App.xaml / App.xaml.cs ورود برنامه
MainWindow.xaml / .xaml.cs پنجره، tray، میانبر، اجرای خودکار
LanguageEngine.cs امتیازدهی چیدمان و تبدیل
LayoutCatalog.cs چیدمان داخلی و فایلهای واردشده
LayoutManagerControl.xaml انتخاب، وارد کردن و خروجی چیدمانها
Models/LayoutConfig.cs ریشهٔ JSON
Models/LayoutPair.cs یک جفت چیدمان
TypeFixLayouts.json چیدمان داخلی فارسی ↔ انگلیسی، داخل برنامه
TypeFix.ico آیکون پنجره و tray
بخش Links فقط برچسبهای Website و GitHub را نشان میدهد. Website نشانی https://typefix.ir را باز میکند و GitHub نشانی https://github.com/sa2ncom/TypeFix را. کارت Support development نشانی https://typefix.ir/donate را باز میکند.
| نشانه | چه چیزی را بررسی کنید |
|---|---|
| F10 هیچ کاری نمیکند | برنامهٔ دیگری F10 را گرفته است. نوار وضعیت خطای ثبت میانبر را نشان میدهد. |
| متن عوض نمیشود | پنجرهٔ مقصد فوکوس را از دست داده، یا انتخاب با هیچ جفتچیدمانی جور نبوده است. |
| وارد کردن خطا میدهد | خطای نحوی JSON، یا جفتی که طول رشتههای نویسهاش برابر نیست. |
| برنامه بالا نمیآید | برای نسخهٔ وابسته به فریمورک، رانتایم دسکتاپ داتنت ۱۰ را نصب کنید. |
TypeFix تحت مجوز MIT منتشر شده است.
رابط برنامه از فونت Vazirmatn استفاده میکند. حق نشر این فونت برای The Vazirmatn Project Authors است و تحت SIL Open Font License 1.1 قرار دارد. خود فونت با همان مجوز میماند. مجوز MIT فقط کد برنامه را پوشش میدهد.
