diff options
Diffstat (limited to 'leim/quail/persian.el')
-rw-r--r-- | leim/quail/persian.el | 526 |
1 files changed, 0 insertions, 526 deletions
diff --git a/leim/quail/persian.el b/leim/quail/persian.el deleted file mode 100644 index 5eeb0e3d208..00000000000 --- a/leim/quail/persian.el +++ /dev/null @@ -1,526 +0,0 @@ -;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- - -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. - -;; Author: Mohsen BANAN <libre@mohsen.1.banan.byname.net> -;; X-URL: http://mohsen.1.banan.byname.net/contact - -;; Keywords: multilingual, input method, Farsi, Persian, keyboard - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. - -;;; 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 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 -;; - -;;; Code: - -(require 'quail) - -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; 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 -;; 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. -;; - - -(quail-define-package - "farsi-isiri-9147" "Persian" " ف" nil - "Farsi keyboard based on ISIRI-9147. - See http://www.persoarabic.org/PLPC/120036 for additional documentation." - nil t t t t nil nil nil nil nil t) - -;; 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 | دٔ| پء | و< | .> | /؟ | -;; +-------------------------------------------+ - -(quail-define-rules - ("1" ?۱) - ("2" ?۲) - ("3" ?۳) - ("4" ?۴) - ("5" ?۵) - ("6" ?۶) - ("7" ?۷) - ("8" ?۸) - ("9" ?۹) - ("0" ?۰) - ("-" ?-) - ("=" ?=) - ("`" ?\u200D) ;; ZWJ -- ZERO WIDTH JOINER اتصال مجازى - ("q" ?ض) - ("w" ?ص) - ("e" ?ث) - ("r" ?ق) - ("t" ?ف) - ("y" ?غ) - ("u" ?ع) - ("i" ?ه) - ("o" ?خ) - ("p" ?ح) - ("[" ?ج) - ("]" ?چ) - ("a" ?ش) - ("s" ?س) - ("d" ?ی) - ("f" ?ب) - ("g" ?ل) - ("h" ?ا) - ("j" ?ت) - ("k" ?ن) - ("l" ?م) - (";" ?ک) - ("'" ?گ) - - ("z" ?ظ) - ("x" ?ط) - ("c" ?ز) - ("v" ?ر) - ("b" ?ذ) - ("n" ?د) - ("m" ?پ) - ("," ?و) - ("." ?.) - ("/" ?/) - - ("!" ?!) - ("@" ?٬) - ("#" ?٫) - ("$" ?﷼) - ("%" ?٪) - ("^" ?×) - ("&" ?،) - ("*" ?*) - ("(" ?\)) - (")" ?\() - ("_" ?ـ) - ("+" ?+) - ("~" ?÷) - ("Q" ?ْ) ;; ساکن فارسى - ("W" ?ٌ) ;; دو پيش فارسى -- تنوين رفع - ("E" ?ٍ) ;; دو زير فارسى -- تنوين جر - ("R" ?ً) ;; دو زبر فارسى -- تنوين نصب - ("T" ?ُ) ;; پيش فارسى -- ضمه - ("Y" ?ِ) ;; زير فارسى -- کسره - ("U" ?َ) ;; زبر فارسى -- فتحه - ("I" ?ّ) ;; تشديد فارسى - ("O" ?\]) - ("P" ?\[) - ("{" ?}) - ("}" ?{) - ("A" ?ؤ) - ("S" ?ئ) - ("D" ?ي) - ("F" ?إ) - ("G" ?أ) - ("H" ?آ) - ("J" ?ة) - ("K" ?») - ("L" ?«) - (":" ?:) - ("\"" ?؛) - ("|" ?|) - ("Z" ?ك) - ("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 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'. -;; - - -(quail-define-package - "farsi-transliterate-banan" "Persian" "ب" t - "Intuitive transliteration keyboard layout for persian/farsi. - See http://www.persoarabic.org/PLPC/120036 for additional documentation." - 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" ?ح) - ("hh" ?ح) - ("kh" ?خ) - ("d" ?د) - ("Z" ?ذ) - ("r" ?ر) - ("z" ?ز) - ("zz" ?ز) - ("zh" ?ژ) - ("s" ?س) - ("ss" ?س) - ("sh" ?ش) - ("S" ?ص) - ("x" ?ض) - ("T" ?ط) - ("TT" ?ط) - ("X" ?ظ) - ("w" ?ع) - ("q" ?غ) - ("G" ?غ) - ("Gh" ?غ) - ("GG" ?غ) - ("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" ?۳) - ("4" ?۴) - ("5" ?۵) - ("6" ?۶) - ("7" ?۷) - ("8" ?۸) - ("9" ?۹) - - ("\\/" ?\u066B) ;; (ucs-insert #x066B)٫ named: ممیزِ فارسی - ("\\," ?\u066C) ;; (ucs-insert #x066C)٬ named: جداکنندهی هزارهای فارسی - ("%" ?\u066A) ;; (ucs-insert #x066A)٪ named: درصدِ فارسی - ("+" ?\u002B) ;; (ucs-insert #x002B)+ named: علامتِ بهاضافه - ("-" ?\u2212) ;; (ucs-insert #x2212)− named: علامتِ منها - ("\\*" ?\u00D7) ;; (ucs-insert #x00D7)× named: علامتِ ضرب - ("\\-" ?\u00F7) ;; (ucs-insert #x00F7)÷ named: علامتِ تقسیم - ("<" ?\u003C) ;; (ucs-insert #x003C)< named: علامتِ کوچکتر - ("=" ?\u003D) ;; (ucs-insert #x003D)= named: علامتِ مساوی - (">" ?\u003E) ;; (ucs-insert #x003E)> named: علامتِ بزرگتر - - -;;;;;;;;;;; isiri-6219 Table 2 -- جدول ۲ - علائم نقطه گذاریِ مشترک - ;;; Space - ("." ?.) ;; - (":" ?\u003A) ;; (ucs-insert #x003A): named: - ("!" ?\u0021) ;; (ucs-insert #x0021)! named: - ("\\." ?\u2026) ;; (ucs-insert #x2026)… named: - ("\\-" ?\u2010) ;; (ucs-insert #x2010)‐ named: - ("-" ?\u002D) ;; (ucs-insert #x002D)- named: - ("|" ?|) - ;;("\\\\" ?\) - ("//" ?/) - ("*" ?\u002A) ;; (ucs-insert #x002A)* named: - ("(" ?\u0028) ;; (ucs-insert #x0028)( named: - (")" ?\u0029) ;; (ucs-insert #x0029)) named: - ("[" ?\u005B) ;; (ucs-insert #x005B)[ named: - ("[" ?\u005D) ;; (ucs-insert #x005D)] named: - ("{" ?\u007B) ;; (ucs-insert #x007B){ named: - ("}" ?\u007D) ;; (ucs-insert #x007D)} named: - ("\\<" ?\u00AB) ;; (ucs-insert #x00AB)« named: - ("\\>" ?\u00BB) ;; (ucs-insert #x00BB)» named: - ("N" ?\u00AB) ;; (ucs-insert #x00AB)« named: - ("M" ?\u00BB) ;; (ucs-insert #x00BB)» named: - -;;;;;;;;;;; isiri-6219 Table 3 -- جدول ۳ - علائم نقطه گذاریِ فارسی - ("," ?،) ;; farsi - (";" ?؛) ;; - ("?" ?؟) ;; alamat soal - ("_" ?ـ) ;; - - -;;;;;;;;;;; isiri-6219 Table 1 -- جدول ۱ - نویسههای کنترلی - ;; LF - ;; CR - ("‌" ?\u200C) ;; (ucs-insert #x200C) named: فاصلهی مجازی - ("/" ?\u200C) ;; - ("‍" ?\u200D) ;; (ucs-insert #x200D) named: اتصالِ مجازی - ("J" ?\u200D) ;; - ("‎" ?\u200E) ;; (ucs-insert #x200E) named: نشانهی چپبهراست - ("‏" ?\u200F) ;; (ucs-insert #x200F) named: نشانهی راستبهچپ - ("&ls;" ?\u2028) ;; (ucs-insert #x2028)
named: جداکنندهی سطرها - ("&ps;" ?\u2028) ;; (ucs-insert #x2029)
named: جداکنندهی بندها - ("&lre;" ?\u202A) ;; (ucs-insert #x202A) named: زیرمتنِ چپبهراست - ("&rle;" ?\u202B) ;; (ucs-insert #x202B) named: زیرمتنِ راستبهچپ - ("&pdf;" ?\u202C) ;; (ucs-insert #x202C) named: پایانِ زیرمتن - ("&lro;" ?\u202D) ;; (ucs-insert #x202D) named: زیرمتنِ اکیداً چپبهراست - ("&rlo;" ?\u202D) ;; (ucs-insert #x202E) named: زیرمتنِ اکیداً راستبهچپ - ("&bom;" ?\uFEFF) ;; (ucs-insert #xFEFF) named: نشانهی ترتیبِ بایتها - - -;;;;;;;;;;; isiri-6219 Table 7 -- جدول ۷ - نشانههایِ فارسی - ("^" ?َ) ;; zbar ;; زبر فارسى - ("e" ?ِ) ;; zir زير فارسى - ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه - ("E" ?ٍ) ;; eizan ;; دو زير فارسى -- تنوين جر - ("#" ?ً) ;; دو زبر - ("O" ?ٌ) ;; دو پيش فارسى -- تنوين رفع - ("~" ?ّ) ;; tashdid ;; تشديد فارسى - ("@" ?ْ) ;; ساکن فارسى - ("U" ?\u0653) ;; (ucs-insert #x0653)ٓ named: مدِ فارسی - ("`" ?ٔ) ;; همزه فارسى بالا - ("C" ?\u0655) ;; (ucs-insert #x0655)ٕ named: همزه فارسى پایین - ("$" ?\u0670) ;; (ucs-insert #x0670)ٰ named: الفِ مقصورهی فارسی - - -;;;;;;;;;;; isiri-6219 Table 8 - Forbidden Characters -- جدول ۸ - نویسههایِ ممنوع -;; ;; he ye (ucs-insert 1728) (ucs-insert #x06c0) kills emacs-24.0.90 -;; arabic digits 0-9 - - -;;;;;;; Latin Extensions - ("\\" ?\\) ;; خط اريب وارو - ("\\\\" ?\\) - ("\\~" ?~) - ("\\@" ?@) - ("\\#" ?#) - ("\\$" ?\uFDFC) ;; (ucs-insert #xFDFC)﷼ named: - ("\\^" ?^) - ("\\1" ?1) - ("\\2" ?2) - ("\\3" ?3) - ("\\4" ?4) - ("\\5" ?5) - ("\\6" ?6) - ("\\7" ?7) - ("\\8" ?8) - ("\\9" ?9) - ("\\0" ?0) - -) - -;;; persian.el ends here |