Skip to content

Instantly share code, notes, and snippets.

@junaidpv
Last active March 29, 2018 18:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save junaidpv/867882 to your computer and use it in GitHub Desktop.
Save junaidpv/867882 to your computer and use it in GitHub Desktop.
Mozhi Malayalam rules for Keymagic
/*
@NAME = "Malayalam Mozhi"
@DESCRIPTION = "Wikipedia a Mozhi"
@TRACK_CAPSLOCK = "TRUE"
@EAT_ALL_UNUSED_KEYS = "FALSE"
@US_LAYOUT_BASED = "TRUE"
*/
// author: Junaid (http://junaid.site)
// version: 1.1
// License: GPLv3, CC-SA-BY 3.0
$consonants = 'കഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശഷസഹളഴറ'
$vowels = 'അആഇഈഉഊഋൠഌൡഎഏഐഒഓഔ'
$vowelsigns = 'ാിീുൂൃൄൢൣെേൈൊോൗ'
// special for m
$consonants[*] + 'm' => $1 + 'ം'
$vowels[*] + 'm' => $1 + 'ം'
$consonants[*] + $vowelsigns[*] + 'm' => $1 + $2 + 'ം'
$chills = 'ൺൻർൽൾൿം'
$chillSource = 'NnrlLcm'
$chillBases = 'ണനരലളകമ'
// produce chill
$chillSource[*] => $chills[$1]
$chills[*] + U200C + $chillSource[*] => $1 + $chills[$3]
// chill breakers
$chills[*] + '~' => $chillBases[$1] + '്'
$chills[*] + 'a' => $chillBases[$1]
$chills[*] + 'A' => $chillBases[$1] + 'ാ'
$chills[*] + 'i' => $chillBases[$1] + 'ി'
$chills[*] + 'I' => $chillBases[$1] + 'ീ'
$chills[*] + 'u' => $chillBases[$1] + 'ു'
$chills[*] + 'U' => $chillBases[$1] + 'ൂ'
$chills[*] + 'R' => $chillBases[$1] + 'ൃ'
$chills[*] + 'e' => $chillBases[$1] + 'െ'
$chills[*] + 'E' => $chillBases[$1] + 'േ'
$chills[*] + 'E' => $chillBases[$1] + 'േ'
$chills[*] + 'o' => $chillBases[$1] + 'ൊ'
$chills[*] + 'O' => $chillBases[$1] + 'ോ'
$chills[*] + 'y' + 'R' => $chillBases[$1] + '്യ്'
$chills[*] + '\\' + '\\' => $chillBases[$1] + '്' + U200D
// produce vowels
$vDirectSmallValues = 'അഎഇഒഉ'
$vDirectSmallKeys = 'aeiou'
$vDirectCapsValues = 'ആഏഐഓഋഊ'
$vDirectCapsKeys = 'AEIORU'
$vDirectSmallKeys[*] => $vDirectSmallValues[$1]
$chills[*] + U200C + $vDirectSmallKeys[*] => $1 + $vDirectSmallValues[$3]
$vDirectCapsKeys[*] => $vDirectCapsValues[$1]
$chills[*] + U200C + $vDirectCapsKeys[*] => $1 + $vDirectCapsValues[$3]
'അ' + 'a' => 'ആ'
'അ' + 'i' => 'ഐ'
'അ' + 'u' => 'ഔ'
'ഇ' + 'i' => 'ഈ'
'ഉ' + 'u' => 'ഊ'
'ഊ' + 'o' => 'ഊഊ'
'ഋ' + 'R' => 'ൠ'
'ഋ' + 'a' => 'റ'
'ഋ' + 'A' => 'റാ'
'ഋ' + 'i' => 'റി'
'ഋ' + 'I' => 'റീ'
'ഋ' + 'u' => 'റു'
'ഋ' + 'U' => 'റൂ'
'ഋ' + 'e' => 'റെ'
'ഋ' + 'E' => 'റേ'
'ഋ' + 'o' => 'റൊ'
'ഋ' + 'O' => 'റോ'
'ഋ' + '~' => 'റ്'
'ഌ' + 'l' => 'ൡ'
'എ' + 'e' => 'ഈ'
'ഒ' + 'o' => 'ഊ'
'ാ' + 'a' => 'ാാ'
'ീ' + 'i' => 'ീീ'
'ൂ' + 'u' => 'ൂൂ'
'ൂ' + 'o' => 'ൂൂ'
'ൄ' + 'R' => 'ൄൄ'
'േ' + 'E' => 'േേ'
'ോ' + 'O' => 'ോോ'
'ൗ' + 'u' => 'ൗൗ'
// vowel signs
'മ്' + '\\' => 'ം'
'ആ' + '\\' => 'ാ'
'ഇ' + '\\' => 'ി'
'ഈ' + '\\' => 'ീ'
'ഉ' + '\\' => 'ു'
'ഊ' + '\\' => 'ൂ'
'ഋ' + '\\' => 'ൃ'
'ൠ' + '\\' => 'ൄ'
'എ' + '\\' => 'െ'
'ഏ' + '\\' => 'േ'
'ഐ' + '\\' => 'ൈ'
'ഒ' + '\\' => 'ൊ'
'ഓ' + '\\' => 'ോ'
'ഔ' + '\\' => 'ൗ'
'ൗ' + '\\' => 'ൌ'
'ഌ' + '\\' => 'ൢ'
'ൡ' + '\\' => 'ൣ'
// produce consonants
$thinConsonants = 'കഗചജടഡതദപബസശ'
$thickConsonants = 'ഖഘഛഝഠഢഥധഫഭഷഴ'
$cDirectSmallValues = 'ബദഫഗഹജകമപസവവയശ'
$cDirectSmallKeys = 'bdfghjkmpsvwyz'
$cDirectCapsValues = 'ഡശട'
$cDirectCapsKeys = 'DST'
$thinConsonants[*] + '്' + 'h' => $thickConsonants[$1] + '്'
$consonants[*] + '്' + 'a' => $1
$consonants[*] + '്' + 'A' => $1 + 'ാ'
$consonants[*] + 'a' => $1 + 'ാ'
$consonants[*] + '്' + 'i' => $1 + 'ി'
$consonants[*] + 'ി' + 'i' => $1 + 'ീ'
$consonants[*] + '്' + 'I' => $1 + 'ീ'
$consonants[*] + 'െ' + 'e' => $1 + 'ീ'
$consonants[*] + '്' + 'u' => $1 + 'ു'
$consonants[*] + 'ൊ' + 'o' => $1 + 'ൂ'
$consonants[*] + 'ു' + 'u' => $1 + 'ൂ'
$consonants[*] + '്' + 'U' => $1 + 'ൂ'
$consonants[*] + '്' + 'R' => $1 + 'ൃ'
$consonants[*] + 'ൃ' + 'R' => $1 + 'ൄ'
$consonants[*] + '്' + 'e' => $1 + 'െ'
$consonants[*] + '്' + 'E' => $1 + 'േ'
$consonants[*] + 'i' => $1 + 'ൈ'
$consonants[*] + '്' + 'o' => $1 + 'ൊ'
$consonants[*] + '്' + 'O' => $1 + 'ോ'
$consonants[*] + 'u' => $1 + 'ൗ'
$cDirectSmallKeys[*] => $cDirectSmallValues[$1] + '്'
$chills[*] + U200C + $cDirectSmallKeys[*] => $1 + $cDirectSmallValues[$3] + '്'
$cDirectCapsKeys[*] => $cDirectCapsValues[$1] + '്'
$chills[*] + U200C + $cDirectCapsKeys[*] => $1 + $cDirectCapsValues[$3] + '്'
$nonSa = 'കഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശഷഹളഴറ'
'ൻ' + 'g' => 'ങ്'
'ൿ' + 'h' => 'ച്'
'ം' + 'm' => 'മ്മ്'
$nonSa[*] + 'ം' + 'r' => $1 + 'മ്ര്'
'ം' + 'p' => 'മ്പ്'
$nonSa[*] + 'ം' + 'l' => $1 + 'മ്ല്'
$nonSa[*] + 'ം' + 'L' => $1 + 'മ്ല്' + ('capl')
$nonSa[*] + 'ം' + 'n' => $1 + 'മ്ന്'
$nonSa[*] + 'ം' + 'y' => $1 + 'മ്യ്'
$vowelsigns[*] + 'ം' + 'y' => $1 + 'മ്യ്'
// ['ൻൿh','nc','ഞ്ച്'],
'ൻൿ' + 'h' => 'ഞ്ച്'
// ['ൿh','c', 'ച്'],
// ['ക്ക്h','cc', 'ച്ച്'],
'ക്ക്' + 'h' + ('doublec') => 'ച്ച്'
// ['ല്പ്p','lp','ൽപ്പ്'],
'ല്പ്' + 'p' => 'ൽപ്പ്'
// ['([ക-ഹ])്ല്l', 'L', '$2\u0d62'],
$consonants[*] + '്ല്' + 'l' + ('capl') => $1 + U0D62
$escapable = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\>_~'
$escapable + '\\' => $1
'ന്ന്' + 'j' => 'ഞ്ഞ്'
'ന്ന്' + 'g' => 'ങ്ങ്'
'റ്റ്' + 'h' => 'ത്'
'റ്റ്' + 't' => 'ട്ട്'
'ന്റ്' + 'h' => 'ന്ത്'
$consonants[*] + U0D62 + 'l' => $1 + U0D63
// ['([അ-ഊഌഎ-ഐഒ-ഹ])([ഽ-ൂെ-ൌൗ])+R', '', '$2$3റ്'],
$consonants[*] + 'ൃ' + 'a' => $1 + '്ര'
$consonants[*] + 'ൃ' + 'A' => $1 + '്രാ'
$consonants[*] + 'ൃ' + 'i' => $1 + '്രി'
$consonants[*] + 'ൃ' + 'I' => $1 + '്രീ'
$consonants[*] + 'ൃ' + 'u' => $1 + '്രു'
$consonants[*] + 'ൃ' + 'U' => $1 + '്രൂ'
$consonants[*] + 'ൃ' + 'e' => $1 + '്രെ'
$consonants[*] + 'ൃ' + 'E' => $1 + '്രേ'
$consonants[*] + 'ൃ' + 'o' => $1 + '്രൊ'
$consonants[*] + 'ൃ' + 'O' => $1 + '്രോ'
$consonants[*] + '്' + 'l' => $1 + '്ല്' + ('capl')
$consonants[*] + '്' + 'L' => $1 + '്ല്' + ('capl')
'ൺ' + 'N' => 'ണ്ണ്'
'ൺ' + 'T' => 'ണ്ട്'
'ൺ' + 'D' => 'ണ്ഡ്'
'ൺ' + 'v' => 'ണ്വ്'
'ൺ' + 'm' => 'ണ്മ്'
'ൻ' + 'r' => 'ന്ര്'
'ൻ' + 'k' => 'ങ്ക്'
'ൻ' + 'j' => 'ഞ്'
'ൻ' + 'n' => 'ന്ന്'
'ൻ' + 'd' => 'ന്ദ്'
'ൻ' + 't' => 'ന്റ്'
'ൻ' + 'm' => 'ന്മ്'
'ൻ' + 'L' => 'ന്ല്' + ('capl')
'ൻ' + 'v' => 'ന്വ്'
'ർ' + 'r' => 'റ്'
'ർ' + 'y' => 'ര്യ്'
'ൽ' + 'l' => 'ല്ല്'
'ൽ' + 'L' => 'ല്ല്' + ('capl')
'ൽ' + 'p' => 'ല്പ്'
'ൽ' + 'v' => 'ല്വ്'
'ൾ' + 'L' => 'ള്ള്' + ('capl')
'ൾ' + 'l' => 'ഌ'
'ൿ' + 'l' => 'ക്ല്'
'ൿ' + 'L' => 'ക്ല്' + ('capl')
'ൿ' + 'v' => 'ക്വ്'
'ൿ' + 'k' => 'ക്ക്'
'ൿ' + 'c' => 'ക്ക്' + ('doublec')
// digits
'\\' + '0' => '൦'
'\\' + '1' => '൧'
'\\' + '2' => '൨'
'\\' + '3' => '൩'
'\\' + '4' => '൪'
'\\' + '5' => '൫'
'\\' + '6' => '൬'
'\\' + '7' => '൭'
'\\' + '8' => '൮'
'\\' + '9' => '൯'
'B' => 'ബ്ബ്'
$chills[*] + U200C + 'B' => $1 + 'ബ്ബ്'
'C' => 'ച്ച്'
$chills[*] + U200C + 'C' => $1 + 'ച്ച്'
'G' => 'ഗ്ഗ്'
$chills[*] + U200C + 'G' => $1 + 'ഗ്ഗ്'
'H' => 'ഃ'
$chills[*] + U200C + 'H' => $1 + 'ഃ'
'J' => 'ജ്ജ്'
$chills[*] + U200C + 'J' => $1 + 'ജ്ജ്'
'K' => 'ക്ക്'
$chills[*] + U200C + 'K' => $1 + 'ക്ക്'
'M' => 'മ്മ്'
$chills[*] + U200C + 'M' => $1 + 'മ്മ്'
'P' => 'പ്പ്'
$chills[*] + U200C + 'P' => $1 + 'പ്പ്'
'Q' => 'ക്യ്'
$chills[*] + U200C + 'Q' => $1 + 'ക്യ്'
'V' => 'വ്വ്'
$chills[*] + U200C + 'V' => $1 + 'വ്വ്'
'W' => 'വ്വ്'
$chills[*] + U200C + 'W' => $1 + 'വ്വ്'
'X' => 'ക്ഷ്'
$chills[*] + U200C + 'X' => $1 + 'ക്ഷ്'
'Y' => 'യ്യ്'
$chills[*] + U200C + 'Y' => $1 + 'യ്യ്'
'Z' => 'ശ്ശ്'
$chills[*] + U200C + 'Z' => $1 + 'ശ്ശ്'
'q' => 'ക്ക്'
$chills[*] + U200C + 'q' => $1 + 'ക്ക്'
't' => 'റ്റ്'
$chills[*] + U200C + 't' => $1 + 'റ്റ്'
'x' => 'ക്ഷ്'
$chills[*] + U200C + 'x' => $1 + 'ക്ഷ്'
'~' => '്'
$chills[*] + U200C + '~' => $1 + '്'
U200C + '_' => U200C
'_' => U200C
'/' + '/' => 'ऽ'
'1/4' + '\\' => '൳'
'1/2' + '\\' => '൴'
'3/4' + '\\' => '൵'
'10' + '\\' => U0D70
'100' + '\\' => U0D71
'1000' + '\\' => U0D72
// em dash
'---' + '\\' => '—'
// en dash
'--' + '\\' => '–'
'\\' + '-' => '−'
'\\' + '*' => '×'
'\\' + '/' => '÷'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment