In my opinion the text_editor's control should be similar to the calculator. Particularly on touchscreens the calculator's control works very fine. The problem is that it's impossible to write it also for targets without LCD bitmap.
Besides I think it doesn't make sense to support Hebrew or Arabic alphabet, because they are written from right to left, so you can't really write it.
I suggest just to support Latin alphabet and special character, because it makes things easier and is the most widely used alphabetic writing system.
The following code snippet is based on the calculator and shows my basic idea:
unsigned char* buttonChar[3][BUTTON_ROWS][BUTTON_COLS] = {
{ { "A" , "B" , "C" , "D" , "E", "F" },
{ "G" , "H" , "I" , "J", "K" , "L" },
{ "M" , "N" , "O" , "P" , "Q" , "R" },
{ "S" , "T" , "U" , "V" , "W" , "X" },
{ "Y" , "Z" , " " , "¶" , "abc" , ".,?" } },
{ { "a" , "b" , "c" , "d" , "e" , "f" },
{ "g" , "h" , "i" , "j" , "k" , "l" },
{ "m" , "n" , "o" , "p" , "q" , "r" },
{ "s" , "t" , "u" , "v" , "w" , "x" },
{ "y" , "z" , " " , "¶" , "ABC" , ".,?" } },
{ { "." , "," , "?" , "!" , "\"" , "/" },
{ "(" , ")" , "+" , "-" , "*" , "#" },
{ "\\" , "[" , "}" , "&" , "$" , "€" },
{ "<" , ">" , "{" , "}" , "@" , "_" },
{ "|" , "~" , " " , "¶" , "ABC", "abc" } }
};