ÿþ<html> <head> <title>Lekhini - an Indic script editor</title> </head> <body> <H2><center>Lekhini - an Indic script editor</center></H2> <center> <form name=frmTelugu> Edit in Telugu <input type=radio name=language checked onClick="setLanguageMapper('Telugu')"> Hindi<input type=radio name=language onClick="setLanguageMapper('Hindi')"> <P> <textarea name="display" rows=10 cols=50 style="font-size:18pt"></textarea><br> </font> </form> </center>Type in the above Text area, by following the keyboard layout given below, you will see Telugu/Hindi text in it. Make sure you have installed Pothana2000.ttf (Developed by Dr. Desikachari - he did a great job of creating a truely Unicode font) font, Mangal.volt.ttf (this one is developed by Microsoft) and have IE 5.5+. If you did not see Telugu/Hindi script correctly displayed then check for usp10.dll in winnt/system32 (for NT/2000) or windows/system (for 98/ME) directory. This should be of version 1.04... (for 98/ME) or 1.4... (for Win2000) <p> <center>Keyboard Mapping for Telugu/Hindi (for that matter any other Indic script, except Tamil) <br> (Note: You must have installed Pothana2000 and Mangal or any font which have unicode compliance fonts for Telugu and Hindi, in order to see this properly)<br> (Shifted - top to bottom )<br> ~ ! @ # $ % ^ & * ( ) _ + <br> ~ ! @ # $ % ^ & * ( ) _ + <br> <p> Q W E R T Y U I O P { } <br> <P style="font-size:18pt"> ` %  1    + a <br> ` %  1    + a <br> </P> A S D F G H J K L : " <br> <P style="font-size:18pt">  6 '   9   3 : " <br>  6 ' F  9   3 : "<br> </P> Z X C V B N M < > ? | <br> <P style="font-size:18pt"> "  M 7   - #  < > ? | <br> "  M 7   - #  < > ?<br> </P> (unshifted - top to bottom ) <br> ` 1 2 3 4 5 6 7 8 9 0 - = <br> ` 1 2 3 4 5 6 7 8 9 0 - = <br> <p> q w e r t y u i o p [ ] <br> <P style="font-size:18pt"> $  0  /   *   <br> $  0  /   *   <br> </P> a s d f g h j k l ; ' <br> <P style="font-size:18pt">  8 &   M   2 ; ' <br>  8 &   M   2 ; '<br> </P> z x c v b n m , . / \ <br> <P style="font-size:18pt"> ! 7  5 , ( . , . / \ <br> ! 7  5 , ( . , . /<br> </P> (With '\' preceding - top to bottom ) <br> 1 2 3 4 5 6 7 8 9 0 <br> <P style="font-size:18pt"> g h i j k l m n o f <br> g h i j k l m n o f <br> </P> a/A i I u U q r e E Y o O [ <br> <P style="font-size:18pt"> > ? @ A B C D F G H J K L <br> > ? @ A B C D F G H J K L <br> </P> </center> <p> <B>Note:</b><br> For guninthamu/matra (instead of using Right ALT key, as specified by Dr. Desikachari) first press '\'(back slash, Dr. Desikachari's recommendation, first I used '^' symbol)then guninthamu.<br> <p> <B>Known Limitations:</B><br> Presently you can not edit in between the text, it always appends at the end. To insert text in between, edit, cut and paste it. Difficult act though. <p> <B>Credits & Copyrights:</B><br> Pothana2000 font was developed by Dr. Tirumala K Desikachari. He took a great initiative to develop this unicode compliance font, where as all others are using ASCII positions to represent Telugu alphabet. <br> Please visit Dr. Desikachari's <a href="http://www.kavya-nandanam.com/"> > 5 M / (  & (  (Kavyanandanam)</a> for more Telugu literature composed using Pothana2000 font. And can download this font and keyboard driver for Windows 2000. <P> Mangal font is developed by Microsoft Corp. to test and develop uniscribe scripting engine to render OTL (Open Type Layout) fonts. To get this font either you should have Windows 2000 system or need to be a member of VOLT community (http://communities.msn.com/MicrosoftVOLTuserscommunity) and get the VOLT supplemental files. <br>To download Bharathi font for Telugu script, developed by me <a href="BharathiTeluguFont.zip">click here</a> <hr> <center><table border=0 cellpadding=10 cellspacing=10><tr> <td><a href="index.html">Home</a></td> <td><a href="teluguPagesLinks.html">Pages in Telugu script</a></td> </tr></table></center> <script language="JavaScript"> <!-- // if (document.layers) document.captureEvents(Event.KEYPRESS); // needed if you wish to cancel the key document.frmTelugu.onkeypress = TeluguKeyMapper; var gunintamu = false; function setLanguageMapper (language) { if (language == "Telugu") document.frmTelugu.onkeypress = TeluguKeyMapper; else if (language == "Hindi") document.frmTelugu.onkeypress = HindiKeyMapper; } function TeluguKeyMapper(e) { if (document.layers) Key = e.which; else Key = window.event.keyCode; switch (Key) { case 32 : Key = ' '; break; case 92 : gunintamu = true; window.event.returnValue=false; break; case 81 : Key = '\u0c60'; break; case 87 : Key = '\u0c25' break; case 69 : if (gunintamu == true) { Key = '\u0c47' gunintamu = false; } else Key = '\u0c0F' break; case 82 : Key = '\u0c31' break; case 84 : Key = '\u0c20' break; case 89 : if (gunintamu == true) { Key = '\u0c48' gunintamu = false; } else Key = '\u0c10' break; case 85 : if (gunintamu == true) { Key = '\u0c42'; gunintamu = false; } else Key = '\u0c0A' break; case 73 : if (gunintamu == true) { Key = '\u0c40'; gunintamu = false; } else Key = '\u0c08' break; case 79 : if (gunintamu == true) { Key = '\u0c4b'; gunintamu = false; } else Key = '\u0c13' break; case 80 : Key = '\u0c2B' break; case 123 : Key = '\u0c0C' break; case 125 : Key = '\u0c61' break; case 65 : if (gunintamu == true) { Key = '\u0c3E'; gunintamu = false; } else Key = '\u0c06' break; case 83 : Key = '\u0c36' break; case 68 : Key = '\u0c27' break; case 69 : Key = '\u0c01' break; case 71 : Key = '\u0c18' break; case 72 : Key = '\u0c39' break; case 74 : Key = '\u0c1D' break; case 75 : Key = '\u0c16' break; case 76 : Key = '\u0c33' break; case 90 : Key = '\u0c22' break; case 88 : Key = '\u0c15\u0c4D\u0c37' break; case 67 : Key = '\u0c1B' break; case 86 : Key = '\u0c1E' break; case 66 : Key = '\u0c2D' break; case 78 : Key = '\u0c23' break; case 77 : Key = '\u0c19' break; case 113 : if (gunintamu == true) { Key = '\u0c43' gunintamu = false; } else Key = '\u0c0B' break; case 119 : Key = '\u0c24' break; case 101 : if (gunintamu == true) { Key = '\u0c46' gunintamu = false; } else Key = '\u0c0E' break; case 114 : if (gunintamu == true) { Key = '\u0c44' gunintamu = false; } else Key = '\u0c30' break; case 116 : Key = '\u0c1F' break; case 121 : Key = '\u0c2F' break; case 117 : if (gunintamu == true) { Key = '\u0c41' gunintamu = false; } else Key = '\u0c09' break; case 105 : if (gunintamu == true) { Key = '\u0c3F' gunintamu = false; } else Key = '\u0c07' break; case 111 : if (gunintamu == true) { Key = '\u0c4A' gunintamu = false; } else Key = '\u0c12' break; case 112 : Key = '\u0c2A' break; case 91 : if (gunintamu == true) { Key = '\u0c4C' gunintamu = false; } else Key = '\u0c14' break; case 93 : Key = '\u0c03' break; case 97 : if (gunintamu == true) { Key = '\u0c3E' gunintamu = false; } else Key = '\u0c05' break; case 115 : Key = '\u0c38' break; case 100 : Key = '\u0c26' break; case 102 : Key = '\u0c02' break; case 103 : Key = '\u0c17' break; case 104 : Key = '\u0c4D' break; case 106 : Key = '\u0c1c' break; case 107 : Key = '\u0c15' break; case 108 : Key = '\u0c32' break; case 122 : Key = '\u0c21' break; case 120 : Key = '\u0c37' break; case 99 : Key = '\u0c1A' break; case 118 : Key = '\u0c35' break; case 98 : Key = '\u0c2C' break; case 110 : Key = '\u0c28' break; case 109 : Key = '\u0c2E' break; // map Telugu numbers case 48 : if (gunintamu == true) { Key = '\u0c66' gunintamu = false; } break; case 49 : if (gunintamu == true) { Key = '\u0c67' gunintamu = false; } break; case 50 : if (gunintamu == true) { Key = '\u0c68' gunintamu = false; } break; case 51 : if (gunintamu == true) { Key = '\u0c69' gunintamu = false; } break; case 52 : if (gunintamu == true) { Key = '\u0c6a' gunintamu = false; } break; case 53 : if (gunintamu == true) { Key = '\u0c6b' gunintamu = false; } break; case 54 : if (gunintamu == true) { Key = '\u0c6c' gunintamu = false; } break; case 55 : if (gunintamu == true) { Key = '\u0c6d' gunintamu = false; } break; case 56 : if (gunintamu == true) { Key = '\u0c6e' gunintamu = false; } break; case 57 : if (gunintamu == true) { Key = '\u0c6f' gunintamu = false; } break; default: return; } if (gunintamu == false) { if (Key == 13) document.frmTelugu.display.value = document.frmTelugu.display.value+'\n'; else document.frmTelugu.display.value = document.frmTelugu.display.value+Key; } window.event.returnValue=false; } function HindiKeyMapper(e) { if (document.layers) Key = e.which; else Key = window.event.keyCode; switch (Key) { case 32 : Key = ' '; break; case 92 : gunintamu = true; window.event.returnValue=false; break; case 81 : Key = '\u0960' break; case 87 : Key = '\u0925' break; case 69 : if (gunintamu == true) { Key = '\u0947' gunintamu = false; } else Key = '\u090F' break; case 82 : Key = '\u0931' break; case 84 : Key = '\u0920' break; case 89 : if (gunintamu == true) { Key = '\u0948' gunintamu = false; } else Key = '\u0910' break; case 85 : if (gunintamu == true) { Key = '\u0942'; gunintamu = false; } else Key = '\u090A' break; case 73 : if (gunintamu == true) { Key = '\u0940'; gunintamu = false; } else Key = '\u0908' break; case 79 : if (gunintamu == true) { Key = '\u094b'; gunintamu = false; } else Key = '\u0913' break; case 80 : Key = '\u092B' break; case 123 : Key = '\u090C' break; case 125 : Key = '\u0961' break; case 65 : if (gunintamu == true) { Key = '\u093E'; gunintamu = false; } else Key = '\u0906' break; case 83 : Key = '\u0936' break; case 68 : Key = '\u0927' break; case 69 : Key = '\u0901' break; case 71 : Key = '\u0918' break; case 72 : Key = '\u0939' break; case 74 : Key = '\u091D' break; case 75 : Key = '\u0916' break; case 76 : Key = '\u0933' break; case 90 : Key = '\u0922' break; case 88 : Key = '\u0915\u094D\u0937' break; case 67 : Key = '\u091B' break; case 86 : Key = '\u091E' break; case 66 : Key = '\u092D' break; case 78 : Key = '\u0923' break; case 77 : Key = '\u0919' break; case 113 : if (gunintamu == true) { Key = '\u0943' gunintamu = false; } else Key = '\u090B' break; case 119 : Key = '\u0924' break; case 101 : if (gunintamu == true) { Key = '\u0946' gunintamu = false; } else Key = '\u090E' break; case 114 : if (gunintamu == true) { Key = '\u0944' gunintamu = false; } else Key = '\u0930' break; case 116 : Key = '\u091F' break; case 121 : Key = '\u092F' break; case 117 : if (gunintamu == true) { Key = '\u0941' gunintamu = false; } else Key = '\u0909' break; case 105 : if (gunintamu == true) { Key = '\u093F' gunintamu = false; } else Key = '\u0907' break; case 111 : if (gunintamu == true) { Key = '\u094A' gunintamu = false; } else Key = '\u0912' break; case 112 : Key = '\u092A' break; case 91 : if (gunintamu == true) { Key = '\u094C' gunintamu = false; } else Key = '\u0914' break; case 93 : Key = '\u0903' break; case 97 : if (gunintamu == true) { Key = '\u093E' gunintamu = false; } else Key = '\u0905' break; case 115 : Key = '\u0938' break; case 100 : Key = '\u0926' break; case 102 : Key = '\u0902' break; case 103 : Key = '\u0917' break; case 104 : Key = '\u094D' break; case 106 : Key = '\u091c' break; case 107 : Key = '\u0915' break; case 108 : Key = '\u0932' break; case 122 : Key = '\u0921' break; case 120 : Key = '\u0937' break; case 99 : Key = '\u091A' break; case 118 : Key = '\u0935' break; case 98 : Key = '\u092C' break; case 110 : Key = '\u0928' break; case 109 : Key = '\u092E' break; // map Hindi numbers case 48 : if (gunintamu == true) { Key = '\u0966' gunintamu = false; } break; case 49 : if (gunintamu == true) { Key = '\u0967' gunintamu = false; } break; case 50 : if (gunintamu == true) { Key = '\u0968' gunintamu = false; } break; case 51 : if (gunintamu == true) { Key = '\u0969' gunintamu = false; } break; case 52 : if (gunintamu == true) { Key = '\u096a' gunintamu = false; } break; case 53 : if (gunintamu == true) { Key = '\u096b' gunintamu = false; } break; case 54 : if (gunintamu == true) { Key = '\u096c' gunintamu = false; } break; case 55 : if (gunintamu == true) { Key = '\u096d' gunintamu = false; } break; case 56 : if (gunintamu == true) { Key = '\u096e' gunintamu = false; } break; case 57 : if (gunintamu == true) { Key = '\u096f' gunintamu = false; } break; default: return; } if (gunintamu == false) { if (Key == 13) document.frmTelugu.display.value = document.frmTelugu.display.value+'\n'; else document.frmTelugu.display.value = document.frmTelugu.display.value+Key; } window.event.returnValue=false; } //--> </script> </body> </html>