*** persian.el 2012-03-06 14:31:46.412341948 -0800 --- /usr/local/share/emacs/24.0.94/leim/quail/persian.el 2012-02-13 08:13:25.000000000 -0800 *************** *** 1,9 **** ;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- ! ;; Copyright (C) 2011 Free Software Foundation, Inc. ! ;; Author: Mohsen BANAN
! ;; http://mohsen.1.banan.byname.net/contact ;; Keywords: multilingual, input method, Farsi, Persian, keyboard --- 1,9 ---- ;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- ! ;; Copyright (C) 2011-2012 Free Software Foundation, Inc. ! ;; Author: Mohsen BANAN ! ;; http://mohsen.banan.1.byname.net/contact ;; Keywords: multilingual, input method, Farsi, Persian, keyboard *************** *** 27,41 **** ;;; Commentary: ;; ;; This file 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 ISIR-9147 ! ;; - (farsi-transliterate-banan) An intuitive transliteration keyboard for Farsi ! ;; ! ;; Additional documentaion for these inpput methods can be found at: ! ;; http://www.persoarabic.org/PLPC/120036 ;; ;;; Code: --- 27,38 ---- ;;; Commentary: ;; ;; This file contains a collection of input methods for ! ;; Persian languages - Farsi, Urdu, Pashto (Afghani), ... ;; ;; At this time, the following input methods are specified: ;; ! ;; - (farsi) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147 ! ;; - (farsi-translit) Intuitive transliteration keyboard layout for Persian ;; ;;; Code: *************** *** 45,96 **** ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-isiri-9147 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; 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 ! ;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 ! ;; ! ;; The specification is also republished at ! ;; http://www.farsiweb.ir/wiki/Image:Isiri-9147.pdf ! ;; and various other sites. ! ;; ! ;; ISIRI-6219 is also relevant. ! ;; ! ;; 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. ;; (quail-define-package ! "farsi-isiri-9147" "Farsi" " ف" nil "Farsi input method. ! Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards. " nil t t t t nil nil nil nil nil t) ;; +----------------------------------------------------------------+ --- 42,73 ---- ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; 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 ! ;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 ! ;; ! ;; Only layers 1 and 2 of ISIRI-9147 are applicable to emacs. ! ;; ! ;; This input method was built using the Farsi table in X Keyboard Configuration Data Base. ! ;; ! ;; 0) Selected gnome keyboard "USA" ! ;; 1) Created a list of all keys ! ;; 2) Selected gnome keyboard "Iran" ! ;; 3) For each key just press it and get the mapped persian character ;; (quail-define-package ! "farsi" "Farsi" " ف" nil "Farsi input method. ! Based on ISIRI-9149 Layout of Persian Letters and Symbols on Computer Keyboards. " nil t t t t nil nil nil nil nil t) ;; +----------------------------------------------------------------+ *************** *** 98,106 **** ;; +----------------------------------------------------------------+ ;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج} | چ{ | ;; +------------------------------------------------------------+ ! ;; | شؤ | سئ | یي | بإ | لأ | اآ | تة | ن» | م« | ک: | گ؛ | \| | ;; +-----------------------------------------------------------+ ! ;; | ظك | طٓ| زژ | رٰ| ذB | دٔ| پء | و> | .< | /؟ | ;; +-------------------------------------------+ (quail-define-rules --- 75,83 ---- ;; +----------------------------------------------------------------+ ;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج} | چ{ | ;; +------------------------------------------------------------+ ! ;; | شؤ | سئ | یي | بإ | لأ | اآ | تة | ن» | م« | ک: | گ؛ | \| | ;; +-----------------------------------------------------------+ ! ;; | ظك | طٓ| زژ | رٰ| ذB | دٔ| پء | و> | .< | /؟ | ;; +-------------------------------------------+ (quail-define-rules *************** *** 116,122 **** ("0" ?۰) ("-" ?-) ("=" ?=) ! ("`" ?\u200D) ;; ZWJ -- ZERO WIDTH JOINER اتصال مجازى ("q" ?ض) ("w" ?ص) ("e" ?ث) --- 93,99 ---- ("0" ?۰) ("-" ?-) ("=" ?=) ! ;;("`" ?\)) ;; اتصال مجازى ("q" ?ض) ("w" ?ص) ("e" ?ث) *************** *** 140,146 **** ("l" ?م) (";" ?ک) ("'" ?گ) ! ("z" ?ظ) ("x" ?ط) ("c" ?ز) --- 117,123 ---- ("l" ?م) (";" ?ک) ("'" ?گ) ! ("\\" ?\\) ;; خط اريب وارو ("z" ?ظ) ("x" ?ط) ("c" ?ز) *************** *** 193,396 **** ("X" ?ٓ) ("C" ?ژ) ("V" ?ٰ) ! ("B" ?\u200C) ;; ZWNJ -- ZERO WIDTH NON-JOINER فاصلهٔ مجازى ("N" ?ٔ) ;; همزه فارسى بالا ("M" ?ء) ;; harf farsi hamzeh ("<" ?>) (">" ?<) ("?" ?؟) - - ;; Level 3 Entered with \ - ;; - ("\\" ?\\) ;; خط اريب وارو - ("\\\\" ?\\) - ("\\~" ?\u007E) - ("\\1" ?\u0060) - ("\\2" ?\u0040) - ("\\3" ?\u0023) - ("\\4" ?\u0024) - ("\\5" ?\u0025) - ("\\6" ?\u005E) - ("\\7" ?\u0026) - ("\\8" ?\u2022) - ("\\9" ?\u200E) - ("\\0" ?\u200F) - ("\\-" ?\u005F) - ("\\+" ?\u2212) - ("\\q" ?\u00B0) - ;;\\w" ?\u0000) - ("\\e" ?\u20AC) - ("\\r" ?\u2010) ;; replacement for Alt-BSL - ("\\t" ?\u00A0) ;; replacement for ALT-SPC - ("\\y" ?\u200C) ;; replacement for SHIFT-SPC - ;;("\\u" ?\u0000) - ("\\i" ?\u202D) - ("\\o" ?\u202E) - ("\\p" ?\u202C) - ("\\[" ?\u202A) - ("\\]" ?\u202B) - ;;("\\a" ?\u0000) - ;;("\\s" ?\u0000) - ("\\d" ?\u0649) - ;;("\\f" ?\u0000) - ;;("\\g" ?\u0000) - ("\\h" ?\u0671) - ;;("\\j" ?\u0000) - ("\\k" ?\uFD3E) - ("\\l" ?\uFD3F) - ("\\;" ?\u003B) - ("\\'" ?\u0022) - ;;("\\z" ?\u0000) - ;;("\\x" ?\u0000) - ;;("\\c" ?\u0000) - ("\\v" ?\u0656) - ("\\b" ?\u200D) - ("\\n" ?\u0655) - ("\\m" ?\u2026) - ("\\," ?\u002C) - ("\\." ?\u0027) - ("\\?" ?\u003F) - ;;("\\\\" ?\u2010) ;; Moved to backslash r to leave room for BSL-BSL ) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-transliterate-banan ! ;; ! ;; 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 qwetry 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. ! ;; - communicatates 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 inputing 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 -- ! ;; incuding 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 inputing ! ;; 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 exampe \% 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' 'r'. ! ;; (quail-define-package ! "farsi-transliterate-banan" "Farsi" "ب" t "Intuitive transliteration keyboard layout for persian/farsi. " nil t t t t nil nil nil nil nil t) (quail-define-rules ! ;;;;;;;;;;; isiri-6219 Table 5 -- جدول ۵ - حروِفِ اصلیِ فارسی ! ("W" ?ء) ;; hamzeh ! ("A" ?آ) ;; U+0622 & ARABIC LETTER ALEF WITH MADDA ABOVE & الف با کلاه ! ("a" ?ا) ;; U+0627 & ARABIC LETTER ALEF & الف ! ("\\a" ?أ) ! ("b" ?ب) ;; U+0628 & ARABIC LETTER BEH & ! ("p" ?پ) ;; U+067e & ARABIC LETTER PEH & ("t" ?ت) - ("tt" ?ت) ("c" ?ث) - ("cc" ?ث) ("j" ?ج) ("ch" ?چ) ! ("h" ?ح) ("kh" ?خ) ("d" ?د) ("Z" ?ذ) ("r" ?ر) ("z" ?ز) - ("zz" ?ز) ("zh" ?ژ) ("s" ?س) - ("ss" ?س) ("sh" ?ش) ("S" ?ص) ("x" ?ض) ("T" ?ط) - ("TT" ?ط) ("X" ?ظ) ("w" ?ع) ! ("q" ?غ) ("f" ?ف) ! ("Q" ?ق) ("gh" ?ق) ("k" ?ک) ! ("kk" ?ک) ("g" ?گ) - ("gg" ?گ) ("l" ?ل) ("m" ?م) ("n" ?ن) ("v" ?و) - ("u" ?و) ("V" ?ؤ) ("H" ?ه) ! ("y" ?ی) ! ("i" ?ی) ("I" ?ئ) - - ;;;;;;;;;;; isiri-6219 Table 6 -- جدول ۶ - حروِفِ عربی - ("F" ?إ) - ("D" ?\u0671) ;; (ucs-insert #x0671)ٱ named: حرفِ الفِ وصل - ("K" ?ك) ;; Arabic kaf - ("Th" ?ة) ;; ta marbuteh - ("Y" ?ي) - ("YY" ?ي) - ("Yh" ?ى) - - ;;;;;;;;;;; isiri-6219 Table 4 -- جدول ۴ - ارقام و علائم ریاضی - ("0" ?۰) ("1" ?۱) ("2" ?۲) ("3" ?۳) --- 170,262 ---- ("X" ?ٓ) ("C" ?ژ) ("V" ?ٰ) ! ;; ("B" ?) ;; فاصلهً مجازى ("N" ?ٔ) ;; همزه فارسى بالا ("M" ?ء) ;; harf farsi hamzeh ("<" ?>) (">" ?<) ("?" ?؟) ) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-translit ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ! ;;; This is a persian/farsi transliteration keyboard designed ! ;;; for people who: ! ;;; - Know how to write in farsi ! ;;; - Are comfortable with the qwerty keyboard ! ;;; - Are familiar with two letter phonetic mapping to persian characters ! ;;; (e.g.: gh, kh, ch, sh, zh, hh, lh) ;;; ! ;;; This translit keyboard is designed to be intuitive such that ! ;;; mapping are easy and natural to remember for a persian writer. ! ;;; For some persian characters there are multiple ways of inputting ! ;;; the same character. ! ;;; ! ;;; The letter 'h' is used for a number of two character mappings, ! ;;; this means that some character sequence inputs need to be repeated ! ;;; followed by a backspace followed by the 'h'. ! ;;; For example: سحر = 's' 's' '