Emacs input-methods that support Persian/Farsi editing. Quail package for inputting Persian/Farsi keyboard
- persian-input-method: شیوههایِ درج به فارسی
- Overview
- farsi-transliterate-banan
- farsi-isiri-9147
- Maintenance And Support:
persian.el contains a collection of input methods for Persian languages (Farsi, Urdu, Pashto/Afghanic, …)
At this time, the following input methods are specified:
- (farsi-isiri-9149) Persian Keyboard based on Islamic Republic of Iran's ISIRI-9147
- (farsi-transliterate-banan) An intuitive transliteration keyboard for Farsi
Additional documentation for these input methods can be found at: http://www.persoarabic.org/PLPC/120036
Persian input-methods are distributed with emacs. No installation is required.
Options -> Multilingual Environment -> Select Input Method
Then choose either of:
farsi-transliterate-banan
farsi-isiri-9147
(call-interactively 'set-input-method)
(set-input-method "farsi-isiri-9147" t)
(set-input-method "farsi-transliterate-banan" t)
Given a Qwerty keyboard, use Persian-to-Latin transliteration knowledge to reverse transliterate in persian
See http://www.persoarabic.org/PLPC/120036 document for more complete documentation of keyboard bindings and usage instructions.
ISIRI-9147 Persian keyboard is generally not well suited for Iranian-Expatriates working/living in the West.
The qwerty keyboard is usually second nature to Persian speaking expatriates and they don't want to learn/adapt to ISIRI-9147. They expect software to adapt to them.
That is what the ``Banan Multi-Character (Reverse) Transliteration Persian Input Method'' does.
The typical profile of the user is assumed to be one who:
- can write in farsi (not just speak it).
- is fully comfortable with a qwerty latin keyboard.
- is not familiar with isir-9147 and does not wish to be trained.
- communicates and writes in a mixed globish/persian – not pure persian.
- is intuitively familiar with transliteration of farsi/persian into latin based on two letter phonetic mapping to persian characters (e.g., gh ق – kh خ – sh ش – ch چ – zh ژ.
This transliteration keyboard is designed to be intuitive such that mapping are easy and natural to remember for a persian writer. It is designed to be equivalent in capability to farsi-isiri-9147 and provide for inputting all characters enumerated in ISIRI-6219.
farsi-transliterate-banan is of course phonetic oriented. But it is very different from pinglish. Pinglish is word oriented where you sound out the word with latin letters – including the vowels. farsi-transliterate-banan is letter oriented where you enter the latin letter/letters closest to the persian letter. And usually omit vowels.
For some persian characters there are multiple ways of inputting the same character. For example both ``i'' and ``y'' produce ی. For یک ``yk'', ``y'' is more natural and for این ``ain'', ``i'' is more natural.
The more frequently used keys are mapped to lower case. The less frequently used letter moves to upper case. For example: ``s'' is س and ``S'' is ص. ``h'' is ه and ``H'' is ح.
Multi-character input is based on \, &, and / prefix characters. The letter 'h' is used as a postfix for the following two character mappings: gh ق – kh خ – sh ش – ch چ – zh ژ – Th ة – Yh ى.
Prefix letter \ is used for two character inputs when an alternate form of a letter is desired for example '­' is: '÷' when '-' is: '-'.
Prefix letter & is used for multi-character inputs when special characters are desired based on their abbreviate name. For example you can enter to enter the ``LEFT-TO-RIGHT MARK'' character.
Prefix letter / is used to provide two characters. / is: ``ZERO WIDTH NON-JOINER'' and // is /.
The letter 'h' is used in a number of two character postfix mappings, for example ``sh'' ش. So if you need the sequence of ``s'' and ``h'' you need to repeat the ``s''. For example: سهم = 's' 's' 'h' 'm'.
The keyboard mapping defined here is based on:
فنّاوریِ اطلاعات - چیدمان حروف و علائم فارسی بر صفحه کلید رایانه استاندارد ملی ایران ۹۱۴۷ − چاپ اول
Institute of Standards and Industrial Research of Iran Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards ISIRI 9147 – 1st edition Published at: http://www.isiri.org/portal/files/std/9147.pdf Re-Published at: http://www.persoarabic.org/Repub/fpf-isiri-9147
Specification of Iran's Persian Character Set is also relevant:
فنّاوریِ اطلاعات – تبادل و شیوهی نمایش اطلاعاتِ فارسی بر اساس یونی کُد استاندارد ملی ایران ۶۲۱۹ −− نسخهی نهایی
Institute of Standards and Industrial Research of Iran Information Technology – Persian Information Interchange and Display Mechanism, using Unicode ISIRI-6219 Final Version Published at: http://www.isiri.org/portal/files/std/6219.htm Re-Published at: http://www.persoarabic.org/Repub/fpf-isiri-6219
Layers 1, 2 and 3 of ISIRI-9147 are fully implemented with the exception of the Backslash, Alt-Backslash, Shift-Space and Alt-Space keys.
The Backslash key is used to replace کلید با دگر ساز راست – the Alt or Meta key.
Layer 3 is then entered with the Backslash key and Layer 3 is implemented as two letter keys as specified in ISIRI-9147.
The character corresponding to Backslash is entered with Backslash-Backslash. Alt-Backslash has been moved to Backslash-r. Alt-Space has been moved to Backslash-t. Shift-Space has been moved to Backslash-y.
With these modifications, farsi-isiri-9147 is a full implementation of ISIRI-9147. Additionally, these modifications allow for this implementation to be ascii input stream based – in addition to being a keyboard layout.
If a key on Layer 1 was reserved to replace دگر ساز راست (the Alt or Meta key), then farsi-isiri-9147 could have claimed full compliance – without the need for the above description. Perhaps this can be considered a flaw in the base ISIRI-9147 specification to be addressed in the next revision.
Note: the rows of keys below are enclosed in Left-To-Right Override embedding, to prevent them from being reordered by the Emacs display engine.
+----------------------------------------------------------------+
| ۱! | ۲٬ | ۳٫ | ۴﷼ | ۵٪ | ۶× | ۷، | ۸* | ۹( | ۰) | -ـ | =+ | `÷ |
+----------------------------------------------------------------+
| ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج{ | چ} |
+------------------------------------------------------------+
| شؤ | سئ | یي | بإ | لأ | اآ | تة | ن« | م» | ک: | گ؛ | \| |
+-----------------------------------------------------------+
| ظك | طٓ| زژ | رٰ| ذB | دٔ| پء | و< | .> | /؟ |
+-------------------------------------------+
Mohsen BANAN – http://mohsen.1.banan.byname.net/contact