Persian/Farsi Keyboard Input Method for emacs24 -- quail-persian-isiri9147.el

Mohsen BANAN <[email protected]> Tue, 26 Apr 2011 00:56:27 -0700
Newsgroups gmane.emacs.devel,gmane.emacs.bidi
Organization ByStar Federation of Autonomous Libre Services -- http://www.by-star.net
Message-ID <[email protected]>
Attached below is a quail file that I have
developed for Persian/Farsi keybaord input.

I'd like for it to become part of emacs24.

Would you kindly please include it in emacs?

Thanks.

...Mohsen

;;; quail-persian-isiri9147.el  --- Quail package for inputting Persian/Far=
si keyboard	-*- coding: utf-8;-*-

;; Author: Mohsen BANAN  <[email protected]>
;; Keywords: input method, Farsi, Persian, keyboard

;;
;; This is a Halaal Poly-Existential intended to remain perpetually Halaal.=
=20
;;
;; Copyleft Mohsen BANAN -- Subject to GPLv3.
;;=20
;; The author wishes for this file to become part of emacs24=20
;; and is happy to transfer copyright to FSF as needed.
;;

;;; Commentary:
;;
;; The keyboard mapping defined here is based on:
;;
;;   Institute of Standards and Industrial Research of Iran
;;   Information Technology =E2=80=93 Layout of Persian Letters and Symbols=
 on Computer Keyboards
;;   ISIRI 9147
;;   http://www.isiri.org/UserStd/DownloadStd.aspx?id=3D9147
;;
;; The mappings here have not been adequately tested yet.
;; At this time. this is intended to be a starting point.
;;
;;
;;;

;;; Code:

(require 'quail)

(quail-define-package
 "farsi" "Farsi" " =D9=81" nil "Farsi input method.

Based on Farsi table in X Keyboard Configuration DB.
" nil t t t t nil nil nil nil nil t)

;;  =D8=B0=D9=91 1! 2@ 3# 4$ 5% 6^ 7& 8* 9) 0( -_ =3D+
;;      =D8=B6=D9=8E =D8=B5=D9=8B =D8=AB=D9=8F =D9=82=D9=8C =D9=81=EF=BB=B9=
 =D8=BA=D8=A5 =D8=B9` =D9=87=C3=B7 =D8=AE=C3=97 =D8=AD=D8=9B =D8=AC< =D8=AF=
> <>
;;       =D8=B4=D9=90 =D8=B3=D9=8D =D9=8A] =D8=A8[ =D9=84=EF=BB=B7 =D8=A7=
=D8=A3 =D8=AA=D9=80 =D9=86=D8=8C =D9=85/ =D9=83: =D8=B7"
;;        =D8=A6~ =D8=A1=D9=92 =D8=A4} =D8=B1{ =EF=BB=BB=EF=BB=B5 =D9=89=D8=
=A2 =D8=A9' =D9=88, =D8=B2. =D8=B8=D8=9F
;;

(quail-define-rules
 ("`" ?=D8=B0)
 ("~" ?=D9=91)

 ("Q" ?=D9=8E)
 ("W" ?=D9=8B)
 ("E" ?=D9=8F)
 ("R" ?=D9=8C)
 ("T" ["=D9=84=D8=A5"])
 ("Y" ?=D8=A5)
 ("U" ?`)
 ("I" ?=C3=B7)
 ("O" ?=C3=97)
 ("P" ?=D8=9B)
 ("{" ?<)
 ("}" ?>)

 ("A" ?=D9=90)
 ("S" ?=D9=8D)
 ("D" ?\])
 ("F" ?\[)
 ("G" ["=D9=84=D8=A3"])
 ("H" ?=D8=A3)
 ("J" ?=D9=80)
 ("K" ?=D8=8C)
 ("L" ?/)

 ("Z" ?~)
 ("X" ?=D9=92)
 ("C" ?})
 ("V" ?{)
 ("B" ["=D9=84=D8=A2"])
 ("N" ?=D8=A2)
 ("M" ?')
 ("<" ?,)
 (">" ?.)
 ("?" ?=D8=9F)

 ("q" ?=D8=B6)
 ("w" ?=D8=B5)
 ("e" ?=D8=AB)
 ("r" ?=D9=82)
 ("t" ?=D9=81)
 ("y" ?=D8=BA)
 ("u" ?=D8=B9)
 ("i" ?=D9=87)
 ("o" ?=D8=AE)
 ("p" ?=D8=AD)
 ("[" ?=D8=AC)
 ("]" ?=D8=AF)

 ("a" ?=D8=B4)
 ("s" ?=D8=B3)
 ("d" ?=D9=8A)
 ("f" ?=D8=A8)
 ("g" ?=D9=84)
 ("h" ?=D8=A7)
 ("j" ?=D8=AA)
 ("k" ?=D9=86)
 ("l" ?=D9=85)
 (";" ?=D9=83)
 ("'" ?=D8=B7)

 ("z" ?=D8=A6)
 ("x" ?=D8=A1)
 ("c" ?=D8=A4)
 ("v" ?=D8=B1)
 ("b" ["=D9=84=D8=A7"])
 ("n" ?=D9=89)
 ("m" ?=D8=A9)
 ("," ?=D9=88)
 ("." ?=D8=B2)
 ("/" ?=D8=B8)

 ("1"  ?=DB=B1)
 ("2"  ?=DB=B2)
 ("3"  ?=DB=B3)
 ("4"  ?=DB=B4)
 ("5"  ?=DB=B5)
 ("6"  ?=DB=B6)
 ("7"  ?=DB=B7)
 ("8"  ?=DB=B8)
 ("9"  ?=DB=B9)
 ("0"  ?=DB=B0)

)


(provide 'quail-persian-isiri9147)

;;; quail-persian-isiri9147.el