Blob Blame Raw
;; hi-typewriter.mim -- Devanagari input method with typewriter method
;; Copyright (C) 2005
;;   National Institute of Advanced Industrial Science and Technology (AIST)
;;   Registration Number H15PRO112

;; This file is part of the m17n contrib; a sub-part of the m17n
;; library.

;; The m17n library is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public License
;; as published by the Free Software Foundation; either version 2.1 of
;; the License, or (at your option) any later version.

;; The m17n library 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
;; Lesser General Public License for more details.

;; You should have received a copy of the GNU Lesser General Public
;; License along with the m17n library; if not, write to the Free
;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
;; 02111-1307, USA.

(input-method hi typewriter)

(description "Hindi input method with `typewriter' method.
Still experimental.
")

(title "क")

(map
 (consonant
 
  ((KP_1) "१")
  ((KP_2) "२")
  ((KP_3) "३")
  ((KP_4) "४")
  ((KP_5) "५")
  ((KP_6) "६")
  ((KP_7) "७")
  ((KP_8) "८")
  ((KP_9) "९")
  ((KP_0) "०")
  ((KP_Decimal) ".")
  ((KP_Divide) "/")
  ((KP_Multiply) "*")
  ((KP_Add) "+")
  ((KP_Subtract) "-") 
 
  ("!" ?ऍ)
  ("+" ?ऋ)
  ("Q" ?औ)
  ("W" ?ऐ)
  ("E" ?आ)
  ("R" ?ई)
  ("T" ?ऊ)
  ("Y" ?भ)
  ("y" ?ब)
  ("U" ?ङ)
  ("u" ?ह)
  ("I" ?घ)
  ("i" ?ग)
  ("O" ?ध)
  ("o" ?द)
  ("P" ?झ)
  ("p" ?ज)
  ("{" ?ढ)
  ("[" ?ड)
  ("}" ?ञ)
  ("A" ?ओ)
  ("S" ?ए)
  ("D" ?अ)
  ("F" ?इ)
  ("G" ?उ)
  ("H" ?फ)
  ("h" ?प)
  ("J" ?ऱ)
  ("j" ?र)
  ("K" ?ख)
  ("k" ?क)
  ("L" ?थ)
  ("l" ?त)
  (":" ?छ)
  (";" ?च)
  ("\"" ?ठ)
  ("'" ?ट)
  ("|" ?ऑ)
  ("~" ?ऒ)
  ("Z" ?ऎ)
  ("C" ?ण)
  ("c" ?म)
  ("V" ?ऩ)
  ("v" ?न)
  ("B" ?ऴ)
  ("b" ?व)
  ("N" ?ळ)
  ("n" ?ल)
  ("M" ?श)
  ("m" ?स)
  ("<" ?ष)
  ("/" ?य))
 (halant
  ("d" ?्))
 (vowel-I
  ("f" ?ि))
 (else
  ("1" ?१)
  ("@" ?ॅ)
  ("2" ?२)
  ("#" ?#)
  ("3" ?३)
  ("$" ?$)
  ("4" ?४)
  ("5" ?५)
  ("6" ?६)
  ("7" ?७)
  ("8" ?८)
  ("(" ?\()
  ("9" ?९)
  (")" ?\))
  ("0" ?०)
  ("_" ?ः)
  ("-" ?-)
  ("=" ?ृ)
  ("q" ?ौ)
  ("w" ?ै)
  ("e" ?ा)
  ("r" ?ी)
  ("t" ?ू)
  ("]" ?़)
  ("a" ?ो)
  ("s" ?े)
  ("g" ?ु)
  ("\\" ?ॉ)
  ("`" ?ॊ)
  ("z" ?ॆ)
  ("X" ?ँ)
  ("x" ?ं)
  ("," ?,)
  (">" ?।)
  ("." ?.)
  ("?" ?य़)))

(state
 (init
  (consonant)
  (halant)
  (else)
  (vowel-I (shift after-vowel-I)))

 (after-vowel-I
  (consonant
   ;; The current preedit is "IC".  Reorder it to "CI".
   (move @<) (delete @+) (move @>) (insert "ि")
   ;; Keep on reading the following [HC]* sequence.
   (shift after-consonant))
  (vowel-I
   ;; Delete the lastly inserted I and rehandle it in `init' state.
   (delete @-) (pushback 1) (shift init))
  (nil (shift init)))

 (after-consonant
  (halant
   ;; The current preedit is "C[HC]*IH".  Reorder it to "C[HC]*HI".
   (move @-) (delete @-) (move @>) (insert "ि")
   ;; Keep on reading the following C[HC]* sequence.
   (shift after-consonant-halant)))

 (after-consonant-halant
  (consonant
   ;; The current preedit is "C[HC]*HIC".  Reorder it to "C[HC]+I".
   (move @-) (delete @-) (move @>) (insert "ि")
   ;; Keep on reading the following [HC]* sequence.
   (shift after-consonant))))