Thaana Typing
by surfine
HTML
<input class="thaana" /><span></span>
CSS
.thaana {
direction: rtl;
text-align: right;
unicode-bidi: bidi-override;
}
JavaScript
var n = {
33: '!',
34: '"',
35: '#',
36: '$',
37: '%',
38: '&',
39: '\'',
40: ')',
41: '(',
42: '*',
43: '+',
44: '،',
45: '-',
46: '.',
47: '/',
58: ':',
59: '؛',
60: '>',
61: '=',
62: '<',
63: '؟',
64: '@',
65: 'ާ',
66: 'ޞ',
67: 'ޝ',
68: 'ޑ',
69: 'ޭ',
70: 'ﷲ',
71: 'ޣ',
72: 'ޙ',
73: 'ީ',
74: 'ޛ',
75: 'ޚ',
76: 'ޅ',
77: 'ޟ',
78: 'ޏ',
79: 'ޯ',
80: '÷',
81: 'ޤ',
82: 'ޜ',
83: 'ށ',
84: 'ޓ',
85: 'ޫ',
86: 'ޥ',
87: 'ޢ',
88: 'ޘ',
89: 'ޠ',
90: 'ޡ',
91: ']',
92: '\\',
93: '[',
94: '^',
95: '_',
96: '`',
97: 'ަ',
98: 'ބ',
99: 'ޗ',
100: 'ދ',
101: 'ެ',
102: 'ފ',
103: 'ގ',
104: 'ހ',
105: 'ި',
106: 'ޖ',
107: 'ކ',
108: 'ލ',
109: 'މ',
110: 'ނ',
111: 'ޮ',
112: 'ޕ',
113: 'ް',
114: 'ރ',
115: 'ސ',
116: 'ތ',
117: 'ު',
118: 'ވ',
119: 'އ',
120: '×',
121: 'ޔ',
122: 'ޒ',
123: '}',
124: '|',
125: '{',
126: '~'
}
var toASCII = {
'188': '44',
'109': '45',
'190': '46',
'191': '47',
'192': '96',
'220': '92',
'222': '39',
'221': '93',
'219': '91',
'173': '45',
'187': '61', //IE Key codes
'186': '59', //IE Key codes
'189': '45' //IE Key codes
}
var shiftUps = {
'39': '\'',
'44': '<',
'45': '_',
'46': '>',
'47': '؟',
'48': '(',
'49': '!',
'50': '@',
'51': '#',
'52': '$',
'53': '%',
'54': '^',
'55': '&',
'56': '*',
'57': ')',
'59': ':',
'61': '+',
'91': '}',
'92': '|',
'93': '{',
'96': '~'
};
$('.thaana').on('keydown', function(e) {
var text = $(this).val();
var val = e.keyCode;
if (toASCII.hasOwnProperty(val)) {
val = toASCII[val];
}
if (e.keyCode != 16 && e.keyCode >= 65 && e.keyCode <= 90) {
event.preventDefault();
if (!e.shiftKey) {
val = e.keyCode + 32;
}
$('.thaana').val(text + n[val]);
}
if (e.shiftKey && shiftUps.hasOwnProperty(val)) {
event.preventDefault();
val = shiftUps[val];
...