برنامه‌نويس، انيماتور و علاقمند به هوش مصنوعي

شبیه‌ساز الگوریتم کلونی مورچه‌ها (AntSim V1.0)

|
در گذشته در مطلبی با عنوان "شبیه‌ساز الگوریتم کلونی مورچه‌ها (Ant Farm Simulator)" یک شبیه ساز طبیعی از این الگوریتم را معرفی نموده بودم و این بار یک شبیه ساز کاربردی از الگوریتم کلونی مورچه‌ها، با نام AntSim را معرفی میکنم.

الگوریتم کلونی مورچه‌ها در این برنامه با جزئیات فراوان و در نظر گرفتن پارامترهای بسیاری از اندازه فرومون، مورچه‌ها، منابع غذایی، سرعت اجرای الگوریتم، نوع نقشه‌ها و ... شبیه سازی شده است.

با استفاده از قابلیتهای ذخیره و بازیابی و طراحی نقشه در این برنامه به راحتی میتوان کارایی الگوریتم را در حالات متفاوت بررسی نموده و نقاط ضعف و قوت الگوریتم در اندازه‌های متفاوت از پارامترهای ورودی را نمایان نمود.

ant colony simulator AntSim
قابلیت بسیار مفید دیگری که در این برنامه وجود دارد، پنجره Statistics است که در پنج نمودار مختلف، نحوه اجرا و جزئیات الگوریتم را ثبت کرده و نمایش میدهد.

تمام صفحه (Fullscreen) و اندازه ثابت (Fixed size) کردن انیمیشنهای Flash

|
یکی از رایج ترین مشکلاتی که انیماتورهای تازه‌کار فلش با آن روبرو می‌شوند، Fullscreen کردن stage و ثابت نگاه داشتن اندازه آن است.

با توجه به محتوای پروژه و حالات متفاوتی که در این باره ممکن است مورد نیاز باشد، (مثلا عدم نمایش منوها در حالت تمام صفحه، Resize شدن خودکار Stage به یک اندازه دلخواه و با کلید دلخواه، غیر فعال کردن دکمه Esc در بعضی حالات و ...) روشهای متفاوتی مورد استفاده قرار می‌گیرد.

در ساده‌ترین حالت، با استفاده از دستور fscommand با قالب:

fscommand(command:String, parameters:String) : Void;

و پارامتر fullscreen این کار انجام می‌شود:

fscommand("fullscreen", true);

جهت ساخت یک رویداد resize برای stage و فعال کردن آن هم میتوان از addListener به این شکل استفاده کرد:

var StResizer:Object = new Object();
StResizer.onResize = function()
{
fscommand("fullscreen", true);
};
Stage.addListener(StResizer);

برای غیر فعال کردن Esc و جلوگیری از resize شدن stage در حین فشردن Esc هم از پارامتر trapallkeys به این صورت استفاده می‌شود:

fscommand("trapallkeys", true);


تنها نکته مهمی که در این مورد قابل توجه است، عمل نکردن trapallkeys در FlashPlayer 9 است. برای رفع این مشکل، می‌بایست انیمیشن مورد نظر را با نسخه دیگری به غیر از 9 (مثلا نسخه 8) کامپایل کرد، که به این منظور کافی است در تنظیمات ساخت انیمیشن، نسخه مورد نظر منظور گردد.

نگاهی اجمالی بر مقابله با مهندسی معکوس کدهای .Net

|

مقابله با روشهای مهندسی معکوس و حفاظت از کدهای .Net بخشی از مباحث و موضوعات داغ و مهم تمام مجامع برنامه‌نویسی هستد.
اگر به خاطر داشته باشید در گذشته مطلبی با عنوان "محافظت از کدهای داتنت DotNet Obfuscation Tools" منتشر کردم که حاوی اسلایدهای بخشی از تحقیقاتم در رابطه با این موضوع بود، که البته هنوز فرصت نگارش متن کامل آن بدست نیامده است.

در حال حاضر بخشی از متن آن را تحت یک مقاله کوتاه با عنوان "نگاهی اجمالی بر مقابله با مهندسی معکوس کدهای .Net" آماده کرده‌ام که می‌تواند مورد استفاده دوستان قرار بگیرد:


دریافت مقاله نگاهی اجمالی بر مقابله با مهندسی معکوس کدهای .Net

تعیین URL انگلیسی دلخواه برای نوشته‌های فارسی در بلاگر

|
یکی از مشکلاتی که اکثر وبلاگ فارسی نویسان در بلاگر، با آن دست به گریبان هستند، مطالب و نوشته‌هایی با عناوین فارسی هستند.
بلاگر در هنگام انتشار مطالب، URL آن نوشته را بر اساس کلمات انگلیسی موجود در عنوان آن نوشته انتخاب می‌کند.

اما زمانی که عنوان مطلب کاملا فارسی باشد (فاقد هیچ کلمه انگلیسی)، کلمه نامانوس "blog-post" به عنوان URL مطلب انتخاب خواهد شد، که از نظر SEO یک نقطه ضعف بسیار مهم تلقی می‌شود.
مخصوصا با توجه به اینکه بلاگر URL نوشته‌های منتشر شده را به صورت ماهیانه دسته‌بندی میکند، در صورت وجود یک "blog-post" دیگر در آن ماه، آدرس مطلب جدید به شکل "blog-post_##" شماره خواهد خورد.

با توجه به اینکه URL ها در رتبه‌بندی مطالب در نتایج جستجو، تاثیر بسیار زیادی دارند، می‌بایست این مشکل را با انتصاب یک URL انگلیسی با معنا و مناسب به نوشته‌های فارسی (مثلا ترجمه انگلیسی عنوان آن) حل نمود.

روشی که بنده برای حل این مشکل به کار می‌برم، در 2 گام بسیار ساده خلاصه می‌شود:

1. عنوان انگلیسی مورد نظر را در ویرایشگر بلاگر به جای عنوان فارسی نوشته، جایگزین کرده و آن نوشته را منتشر کنید. (انتشار نهایی نه ذخیره کردن مطلب) با اینکار کلمات انگلیسی موجود در عنوان، مسقیما به عنوان URL آن مطلب ثبت می‌شوند.

2. حال مطلب منتشر شده را ویرایش کرده و عنوان فارسی را به جای عنوان انگلیسی جایگزین و دوباره نوشته را منتشر کنید. (URL انگلیسی ساخته شده تغییر نخواهد کرد)

نکاتی در رابطه با طراحی رابط گرافیکی کاربر (GUI)

|
  • از دکمه‌ها، آیکونها، کادرها و تصاویر زیبا استفاده کنید.

  • هیچگاه آیکونهای موجود و دردسترس خود را بین دکمه‌های گرافیکی و Toolbar تقسیم نکنید، بلکه با توجه به محتوا و کار آن دکمه، به دنبال زیباترین و بهترین آیکون جستجو کنید.

  • از امتحان کردن ترکیب رنگهای متفاوت ترسی نداشته باشید (از رنگهای لایت و ملایم استفاده کنید). ایده جذاب و مناسب به راحتی خلق نخواهد شد.

  • اصوات را فراموش نکنید (یعنی نه کاملا). هرچند که تا کنون کمتر برنامه‌نویسی را دیده‌ام که به ایجاد اصوات و جلوه‌های صوتی سفارشی برایDesktop Application خود فکر کند، اما اصوات مناسب و بجا، زیبایی خاصی به برنامه خواهند داد. (البته ممکن است کاربر مذکور پس از شنیدن اصوات مورد نظر، تصور کند که EasterEgg برنامه شما را پیدا کرده است.)

  • در صورت امکان (با توجه به محتوای برنامه) از پوسته (Skin) استفاده کنید. البته منظور من به هیچ وجه استفاده از پوسته‌های عجیب و غریبی که گاها در بعضی از ابزارها و tools ها دیده می‌شوند نیست.
    فکر نمیکنم هیچ کارمند یا کاربری (ایرانی) تمایل به استفاده از یک برنامه اداری با پوسته MacOS یا Win3.1 داشته باشد. همچنین گرد کردن (اینقدر که گاها دکمه مستطیل را به بیضی تبدیل می‌کنند) و شفافیت بیش از حد دکمه‌ها و فرمها، نتیجه‌ای معکوس خواهد داشت. استفاده از پوسته به شرطی مجاز است که کاربری برنامه را مختل نکند.

  • کاربر بیچاره باید بتواند فرق بین یک Checkbox یا RadioButton انتخاب شده و انتخاب نشده را تشخیص بدهد. باید بتواند یک کنترل غیرفعال (Disable) را از روی رنگ آن تشخیص بدهد. پس لطفا از Skin های بدرنگ و عجیب پرهیز کنید.

  • در صورت لزوم از فضای Titlebar هم استفاده کنید. مثلا ایجاد دکمه‌ای برای دسته بندی موضوعی اعمال مهم برنامه، یا AlwaysOnTop و غیره. البته این روش بیشتر در مورد برنامه‌هایی با مخاطب خاص توصیه میشود. مثلا در یک برنامه مدیریتی، مهندسی، صنعتی سطح بالا و ... که تعداد کنترلهای موجود و ضروری در یک صفحه خیلی زیاد باشد، وجود یک دکمه میانبر در Titlebar میتواند راهگشا باشد. (البته شکل و رنگ آن، تضادی با نمای Titebar نداشته باشد)

  • خود را به استفاده از کادرهای محاوره‌ای استاندارد محدود نکنید. اگر برنامه شما نیاز به یک کادر Open، Save، Save As یا Print با امکانات خاص دارد، خودتان آن را طراحی کنید.

  • به عادتهای کاربران در روش تعامل با برنامه‌ها احترام بگذارید. درست است که نوآوری و خلاقیت، لازمه موفقیت هستند، اما اجبار کاربران به دست کشیدن از عادات خود در روش کار با برنامه‌ها، گاها نتیجه مطلوبی نخواهد داشت. به عنوان مثال ممکن است در پرو‌ژه‌ای بهینه‌ترین حالت طراحی یک فرم، انتقال Tab Control به سمت راست (عمودی) یا پایین و یا AddresBar در کنار StatusBar باشد، اما آیا بهینگی ترکیب‌بندی فرم، ارزش نارضایتی کاربر از UI را دارد.

  • با توجه به پیچیدگی برنامه و سطح مخاطب، در مورد وجود Hint در کنترلها تصمیم بگیرید.

  • وقت کاربر را تلف نکنید. آیا واقعا نیازی هست که نمایش Splash Screen ده ثانیه طول بکشد. شاید بهتر باشد Splash را حذف کرده و در عوض لوگوی خود را با شکلی ساده در پس زمینه برنامه قرار بدهید. (اگر ممکن نبود، به اعلام وجود در صفحه About قانع باشید)

  • تا جای ممکن از فرمهای Fullscreen پرهیز کنید (خصوصا Fullscreen+AlwaysOnTop). به خاطر داشته باشید برنامه شما یک Application است نه یک OS.

  • در تغییر فونتهای پیشفرض نمایش برنامه، خلاقیت به خرج ندهید. اصولا فونت Tahoma برای انواع متنهای فارسی و انگلیسی، بارها امتحان خود را با موفقیت پس داده است.

  • استفاده از خاصیت Align و Anchors در کنترلها به منظور قابلیت Resize و همچنین استفاده از Panel و Splitter برای جابه‌جایی پذیری اقلام، ضروری هستند. به یاد داشته باشید که برنامه شما، با تغییر وضوح صفحه (Resolution) کارایی خود را از دست ندهد.

  • در انتخاب محتوای MessageDialog ها میانه‌روی کنید. نه آنقدر متن را کوتاه کنید که مفهوم Dialog بودن زیر سوال برود و نه آنقدر طولانی و تخصصی که گویا فقط مهندسین نرم‌افزار کاربر آن برنامه هستند. (مثلا نیازی به اعلام خطا در کار با ConnectionString به کارمند اداره پست وجود ندارد)

  • شیوه راهبری (Navigation) برنامه و مسیر کلیکهای کاربر را بهینه کنید. دکمه‌ها، کادرها یا گزینه‌های پرکاربرد می‌بایست در نزدیکی یکدیگر قرار بگیرند.

  • حتما از میانبرهای صفحه کلید (Shortcut keys) استفاده کنید. تمام دکمه‌ها و کنترلها باید Tab پذیر و قابل Focus باشند. به یاد داشته باشید که کاربران حرفه‌ای بیشتر از صفحه کلید استفاده می‌کنند تا موشواره.

  • اگر از شیوه "تک فرمی" و "محوریت برنامه بر روی یک فرم" استفاده میکنید (مثلا وجود یک فرم اصلی (Main) که جداول (Grids) و کنترلهای درون آن به شکل پویا تغییر می‌کنند) میبایست متنی را برای اعلام موقعیت فعلی کاربر در نظر بگیرید. به عبارتی، کاربری که تازه از راه رسیده، باید بتواند تشخیص دهد که Grid موجود در صفحه، اقلام کالای انبار را نمایش می‌دهد یا اجناس فروخته شده را.

  • از تابع AnimateWindow در برنامه‌ای استفاده کنید که کاربران آن به شما نخندند.

  • طراحی واسط را یک کار ساده و پیش پا افتاده تلقی نکنید، در صورت امکان با یک گرافیست یا طراح در مورد ترکیب بندی و رنگ‌بندی UI مشورت کنید.

  • در صورت امکان بهتر است خود آن گرافیست یا طراح با توجه به نظرات شما، واسط کاربری را طراحی نماید. بالاخره هر کاری را باید به دست متخصص آن سپرد. (قرار نیست هر کدنویسی، طراح هم باشد).

  • اگر فکر میکنید که یک طراح هم هستید، حتما قبل از شروع طراحی در محیط توسعه، ابتدا واسط کاربری را بر روی کاغذ ترسیم کنید. به این منظور از انوع کاغذهای Storyboard یا شطرنجی موجود میتوان استفاده نمود. همچنین بخش طراحی UI در Visio کمک زیادی به شما خواهد کرد.

  • طراحی واسط کاربری بر روی کاغذ، به شکل شگفت‌آوری مشکلات و نارسایی‌های UI در تعامل با کاربر را نمایان خواهد ساخت.

ایجاد فایلهای شخصی و خصوصی با Microsoft Private Folder

|

برنامه Microsoft Private Folder عنوان یکی از پروژه‌های نیمه تمام شرکت مایکروسافت است که به همراه Windows Genuine Advantage جهت استفاده در ویندوز XP ارائه می‌شده است.

با استفاده از این برنامه، یک پوشه اختصاصی با نام "My Private Folder" برای هر حساب کاربری و در Desktop کاربر نمایش داده شده که با اجرای آن در اولین بار کلمه عبور مورد نظر کاربر را دریافت کرده و پس از آن در اجراهای بعدی، در صورت ورود کلمه عبور، محتوای آن نمایش داده می‌شود.
این برنامه از یک سرویس سیستمی با نام "prfldrsvc" و عنوان "Private Folder Service" و رمزنگاری مبتنی بر تک کلید استفاده می‌کند.

کاملا واضح است که دلیل نیمه تمام ماندن این پروژه، مغایرت شیوه رمزنگاری آن با سیاست و خط مشی سیستم رمزنگاری EFS در ویندوز است و به همین دلیل هیچ نسخه‌ای از این برنامه، برای استفاده در ویندوز ویستا ارائه نشد.

در هر صورت، هنوز نسخه 1.0 این نرم‌افزار برای استفاده در ویندوز XP موجود بوده و امتحان کردن آن خالی از لطف نیست.


پ.ن: تا زمانی که از وجود کلمه "Microsoft" در نام این برنامه مطمئن نشده بودم، باور نمی‌کردم که این ابزار محصول شرکت Microsoft باشد.

فارسی کردن همه منوها و پنجره‌های ویندوز XP با Persian interface pack

|
با نصب بسته Persian interface pack بر روی ویندوز XP میتوان تمام منوهای برنامه‌ها و ابزارهای داخلی ویندوز، به علاوه پیامها و پنجره‌های استاندارد را به زبان فارسی تبدیل نمود.
همچنین پس از نصب این بسته، قابلیت نمایش راست به چپ (Right to Left) یا Mirror View برای تمامی پنجره‌ها فعال می‌شود. (ضمنا عنوان دکمه Start هم به "آغاز" تبدیل میشود)

در عین جالب بودن این تجربه، به دلیل عادت به حالت "چپ به راست" فعلی ویندوز، کار کردن در یک محیط "راست به چپ" بسیار سخت و طاقت فرسا بود. (اما ارزش یک بار تجربه کردن را داشت)

تصاویری از محیط ویندوز پس از نصب بسته Microsoft Windows® XP Persian Interface Pack:

پنجره Set program access and defaults:

پنجره Set program access and defaults
پنجره برنامه Control Panel:

پنجره Control Panel
پنجره Paint:

پنجره برنامه Paint
پنجره User Accounts:

پنجره User Accounts

بازیابی Registry تخریب شده در ویندوز XP

|
گاهی اوقات رجیستری ویندوز به شکلی صدمه میبیند که روند بارگذاری سیستم عامل به طور کامل مختل می‌شود. در این موارد به هیچ وجه نمیتوان از ابزارهای معمول مانند System Restore یا انواع ابزارهای تعمیر رجیستری استفاده کرد.

در این مواقع روند بارگذاری ویندوز تا بعد از صفحه Welcome انجام پذیرفته و بعد از آن (احتمالا با نمایش Wallpaper) بدون نمایش پنجره Login از کار می‌افتد. حتی در صورت انتخاب SafeMode نیز، پس از بارگذاری آخرین درایور (معمولا Mup.sys) و شروع به بارگذاری GUI ویندوز، سیستم عامل از کار خواهد افتاد.
در این مواقع بحرانی تنها راه بازیابی رجیستری، جایگزینی دستی فایلهای Hive رجیستری با نسخه‌های پشتیبان است که از محیطی خارج از سیستم عامل مانند Recovery Console یا یک سیستم عامل دیگر (اگر از چند سیستم عامل همزمان بر روی سیستم خود استفاده میکنید) و یا انواع commander های Bootable مانند ERD Commander و ... میبایست انجام شود.

فایلهای Hive رجیستری ویندوز در مسیر %Windir%\system32\config و تحت نامهای system، software، sam، security و default قرار دارند. (همگی فاقد پسوند هستند)

نسخه‌های پشتیبان رجیستری که توسط System Restore تهیه میشوند نیز در درایو نصب ویندوز و در مسیر زیر قرار دارند:
X:\System Volume Information\_restore{کلید هگزادسیمال مربوطه}\

در این دایرکتوری تمام Restore Point های تهیه شده توسط System Restore در فولدرهایی با نام RP# ذخیره شده‌اند که عددی که پس از RP آمده است نماینده زمان و ترتیب تاریخ ایجاد آنهاست. (بیشترین عدد = آخرین نسخه پشتیبان)

نهایتا در فولدر RP مورد نظر (مثلا RP13) فولدر دیگری با نام Snapshot وجود دارد که حاوی نسخه‌های پشتیبان Hive های رجیستری است. این فایلها را با اسامی زیر در مسیر ذکر شده خواهید یافت:
X:\System Volume Information\_restore{...}\ RP13\snapshot\_REGISTRY_MACHINE_SAM
X:\System Volume Information\_restore{...}\ RP13\snapshot\_REGISTRY_MACHINE_SECURITY
X:\System Volume Information\_restore{...}\ RP13\snapshot\_REGISTRY_MACHINE_SYSTEM
X:\System Volume Information\_restore{...}\ RP13\snapshot\_REGISTRY_MACHINE_SOFTWARE
X:\System Volume Information\_restore{...}\ RP13\snapshot\_REGISTRY_USER_.DEFAULT

حال برای جایگزینی backup های فوق با فایلهای اصلی رجیستری، ابتدا از 5 فایل system، software، sam، security و default در مسیر %Windir%\system32\config یک کپی (فقط جهت اطمینان) تهیه کرده و پس از حذف آنها، یک کپی از فایلهای موجود در RP پشتیبان را به این ترتیب تغییر نام داده و در مسیر %Windir%\system32\config جایگزین کنید:

تغییر نام _REGISTRY_MACHINE_SAM به sam
تغییر نام _REGISTRY_MACHINE_SECURITY به security
تغییر نام _REGISTRY_MACHINE_SYSTEM به system
تغییر نام _REGISTRY_MACHINE_SOFTWARE به software
تغییر نام _REGISTRY_USER_.DEFAULT به default

بعد از اینکار با راه‌اندازی مجدد سیستم، فایلهای جایگزین شده به جای رجیستری تخریب شده بارگذاری خواهند شد.


نکته 1: در صورتی که بخواهید از درون یک سیستم عامل دیگر به محتوای "System Volume Information" دسترسی پیدا کنید، ممکن است با خطای عدم دسترسی یا Access Denied مواجه شوید که برای حل آن با استفاده از Security Tab در Properties فولدر مربوطه، میبایست Permission های user خود را اضافه کنید.

نکته 2: برای نصب Recovery Console ویندوز، میبایست فایل winnt32.exe در CD نصب ویندوز را با پارامتر “i386\winnt32.exe /cmdcons” اجرا کنید

نکته 3: در صورتی که هیچ Restore Point ای در "System Volume Information" موجود نباشد (مثلا به دلیل غیر فعال کردن System Restore و پاک کردن RP ها توسط Disk Cleanup در دوران عافیت)، میتوانید از اولین نسخه پشتیبان فایلهای رجیستری که در حین نصب ویندوز در مسیر %WINDIR%\repair قرار میگیرد جهت جایگزینی استفاده کنید. (این پشتیبان در حالت صفر سیستم ساخته شده است و دارای هیچ یک از تنظیمات کاربر نیست)


پ.ن: اگر به خاطر داشته باشید، در زمان ویندوزهای Desktop (یعنی 9x و ME) جایگزینی و پشتیبانگیری از رجیستری به سادگی توسط دستور ScanReg انجام میشد، که البته تخریب آن نیز به همان سادگی امکان پذیر بود.

پیاده‌سازی مسئله فروشنده دوره‌گرد با الگوریتم ژنتیک GATSP 1.7 Beta

|
الگوریتم ژنتیک یکی از معروفترین الگوریتمهای متاهیوریستیک است که تا کنون کتب و مقالات بسیار زیادی در مورد انواع آن (مثل Sequntial GA، Adaptive GA، Genetic Programming و ...)، روشهای پیاده‌سازی و بهینه‌سازی در آن منتشر شده است.
من هم مدت زیادی در مورد انواع اپراتورهای بهینه و روشهای نوین پیاده‌سازی GA مطالعه کرده‌ام، که ماحصل یکی از آن مطالعات، پیاده‌سازی مسئله TSP در الگوریتم ژنتیک بوده است که البته متاسفانه هنوز فرصت تکمیل این پروژه را بدست نیاورده‌ام.

در حال حاضر در این برنامه روشها و امکانات زیر پیاده‌سازی شده‌اند (این برنامه به تدریج تکمیل خواهد گشت):
  • روشهای انتخاب کروموزومها: Roulette wheel, Tournament Random/Unique, Ranking Linear/Biased و ...
  • متدهای ترکیب: 1-point, 2-point, Uniform, GST, GSX, Greedy 1pt, PMX, Circular و ...
  • بهینه‌سازی محلی Sengoku-Yoshihara
  • امکان ذخیره و بازیابی نقشه‌های TSP
  • امکان تعیین و تغییر تمامی پارامترها مثل نرخهای جهش، ترکیب، انتخاب و ... در حین اجرای الگوریتم و به شکل داینامیک
  • امکان رسم نمودار پیشرفت الگوریتم بر اساس مقادیر برازش در هر نسل، به منظور مقایسه کارایی و کاربرد الگوریتمها در مواردی مانند همگرایی زودرس، همگرایی دیررس، تاثیر نرخ جهش و ...

هدف اصلی از پیاده‌سازی این برنامه مقایسه کارایی الگوریتم Genetic و برخی اپراتورهای بهینه شده، در حالتهای Steady-State و Dynamic بوده است.





دیگر مطالب مرتبط با متاهیوریستیک:

دریافت کیبورد فارسی اصلاح شده برای ویندوز

|
همانطور که میدانید در کیبورد استاندارد فارسی (1256) موجود در ویندوز به جای حروف فارسی "ک" و "ی" از حروف عربی "ك" و "ي" استفاده شده است. همینطور برخی از حروف دیگر مانند "پ"، "ژ" و نیم‌فاصله در مکان درست خود قرار ندارند.

برای حل این مشکل میتوانید از این کیبورد فارسی اصلاح شده استفاده نمایید که علاوه بر تصحیح حروف "ی" و "ک"، حرف "ژ" در مکان "\"، حرف "پ" در مکان "~" و نیم‌فاصله در مکان SHIFT+Z قرار گرفته است.
برای نصب این کیبورد فارسی، پس از اجرا و نصب فایل LayoutFA.msi به مسیر زیر رفته:

Control Pane\ Regional and Language Options\ Languages\ Details

ابتدا کیبورد فارسی موجود در لیست را انتخاب و حذف (Remove) نموده و سپس با زدن دکمه Add زبان Farsi و از بخش Keyboard Layout/IME گزینه Farsi (Corrected) را انتخاب کنید.

به منظور تغییر کد و مکان حروف این کیبورد و یا هر کیبورد موجود دیگری می‌توان از ابزار Microsoft Keyboard Layout Creator (MSKLC) استفاده نمود.