Reading emails and comments by Windows 7 Persian keyboard layout users, I was convinced there is no perfect ISIRI 9147 Persian keyboard layout library compilation—at least for its 64-bit edition—as if they are there, but with flaws:

Shift+Space does not provide U+200C (Zero-Width Non-Joiner).

An incorrect flag setting results in right Alt not being treated as Ctrl+Alt (AltGr).

How to Install

Download and save both the keyboard layout installer (chortkeh-install-kbdfa.cmd) and the Persian keyboard layout (kbdfa.dll) at the same folder, and run as administratorchortkeh-install-kbdfa.cmd. Then in the command-line you need to press “c” and hit Enter to continue with the installation. Please note once finished, the installer will restart your system, so save any unsaved work, and close running programs before launching the installer. Also please note you need to be an administrator to be able to modify system files.

Download Link [Updated December 19, 2015]

Copyright Notice and Legal Disclaimer

As part of proprietary software Chortkeh TransOffice, DLL files provided for download are not free software. Protected by Copyright Law, reproduction and/or manipulation of this computer program, or any portion of it, is prohibited. You are only allowed to download, install, use, uninstall (or delete) Chortkeh Persian keyboard layout DLL files.

Though permissible, direct sharing of the DLL files is not recommended. Instead, provide a link to the relevant article, so that the reader has access to the original material and the potential updates.

While Microsoft accepts no obligations or technical support in case of producing such keyboard layouts using MSKLC, Microsoft should not be held responsible for any loss or damage of any sort, because Chortkeh Persian keyboard layout DLL files are not produced by MSKLC.

Chortkeh Persian keyboard layout is distributed “as is”, with no obligations or technical support from Chortkeh, and Chortkeh is not responsible for any damage, nor guaranteeing the functionality of the software.

I’m learning Persian, and I’m curious: What is the purpose of the zero-width joiner (اتصال مجازی U+200D) character, on the upper left key? I understand the need for the zero-width NON-joiner on Shift+Space, for typing things like دیده‌ام, but I don’t know why one would need a joiner character.

When one is dealing with Perso-Arabic alphabet as stand-alone letters rather than transforming glyphs which literally join together to make words, Perso-Arabic alphabet are being shown as their isolated form.

But an exception to this rule is U+0647: Arabic Letter Heh (ه), where its initial (چسبانِ اول) form U+FEEB: Arabic Letter Heh Initial Form (ﻫ) is preferred as its isolated (تنها) form rather than its official U+FEE9: Arabic Letter Heh Isolated Form (ﻩ).

If you take a look at Iranian (and Arab states’) license plates which include letter Heh, you can clearly see it’s been preferably printed as Heh’s initial form (ﻫ), while all other letters follow the general rule of being printed as their isolated form.

Logical reason behind this exception is for Heh not to be confused with similarly looking U+0665: Arabic-Indic Digit Five (٥) — which itself is different from U+06F5: Extended Arabic-Indic Digit Five (۵).

Now, to produce an initial form of Heh using keyboard, one needs to type in a Heh (an “I” keystroke) followed by a U+200D: Zero-Width Joiner (ZWJ):

ه + ZWJ = ﻫ

The ZWJ which comes after Heh, tells letter Heh to transform into its initial form (glyph). Without the ZWJ, letter Heh, not followed by a joiner letter, would simply stay at its isolated form (glyph).

A ZWJ before a Persian letter, transforms it into final (چسبانِ آخر) form:

‪ZWJ + ه‬ = ﻪ

Another trick with two ZWJs is to produce a Persian letter’s medial (وسط) form: