לתועלת הציבור, אני משתף כאן מקלדת איכותית ל-PHP. (קרדיט ל-chatgpt על עזרתו בבניית המקלדת).
נשמח אם חברי הפורום יוסיפו וישכללו את המקלדת.
ההקלדה רציפה, כמו כתיבת איש קשר, ובסיום סולמית.
בין שני אותיות על אותו מקש יש להקיש * (-כוכבית).
הקשת *** (-שלוש פעמים כוכבית) מוחקת את האות האחרונה שהוקשה.
להלן המקלדת:
 function digitsToText($digits) {
    $array_number = [
        22222222, 2222222, 222222, 22222, 2222, 222, 22, 2, 
        33333333, 3333333, 333333, 33333, 3333, 333, 33, 3, 
        44444444, 4444444, 444444, 44444, 4444, 444, 44, 4, 
        55555555, 5555555, 555555, 55555, 5555, 555, 55, 5, 
        66666666, 6666666, 666666, 66666, 6666, 666, 66, 6, 
        777777777, 77777777, 7777777, 777777, 77777, 7777, 777, 77, 7, 
        88888888, 8888888, 888888, 88888, 8888, 888, 88, 8, 
        999999999, 99999999, 9999999, 999999, 99999, 9999, 999, 99, 9, 
        '00000000000000', '0000000000000', '000000000000', '00000000000', '0000000000', 
        '000000000', '00000000', '0000000', '000000', '00000', '0000', '000', '00', '0', 
        11111111111, 1111111111, 111111111, 11111111, 1111111, 111111, 11111, 1111, 111, 11, 1, '*'
    ];
    
    $array_abc = [
        "c", "b", "a", 2, 2, "ו", "ה", "ד", 
        "f", "e", "d", 3, 3, "ג", "ב", "א", 
        "i", "h", "g", 4, "ן", "נ", "ם", "מ", 
        "l", "k", "j", 5, "ל", "ך", "כ", "י", 
        "o", "n", "m", 6, 6, "ט", "ח", "ז", 
        "s", "r", "q", "p", 7, 7, "ת", "ש", "ר", 
        "v", "u", "t", 8, 8, "ק", "ץ", 'צ', 
        "z", "y", "x", "w", 9, "ף", "פ", "ע", 'ס', 
        ">", "<", "#", "%", "$", "@", "&", "/", "=", "*", "-", "+", "0", " ", 
        "]", "[", ")", "(", ":", "!", "?", "'", 1, ",", ".", ""
    ];
    $parts = explode('***', $digits);
    if (count($parts) > 1) {
        while (in_array('', $parts, true)) {
            foreach ($parts as $index => $part) {
                if ($part === '' && $index > 0) {
                    $prevIndex = $index - 1;
                    $prevPart = $parts[$prevIndex];
                    foreach ($array_number as $seq) {
                        if (str_ends_with($prevPart, strval($seq))) {
                            $parts[$prevIndex] = substr($prevPart, 0, -strlen($seq));
                            unset($parts[$index]);
                            $parts = array_values($parts);
                            break 2;
                        }
                    }
                } elseif ($part === '' && $index === 0) {
                    unset($parts[$index]);
                    $parts = array_values($parts);
                    continue 2;
                }
            }
        }
        $lastPart = array_pop($parts);
        foreach ($parts as &$part) {
            foreach ($array_number as $seq) {
                if (str_ends_with($part, strval($seq))) {
                    $part = substr($part, 0, -strlen($seq));
                    break;
                }
            }
        }
        $digits = implode('', $parts) . $lastPart;
    }
    $text = '';
    while ($digits !== '') {
        $matched = false;
        foreach ($array_number as $index => $seq) {
            $seqStr = strval($seq);
            if (str_starts_with($digits, $seqStr)) {
                $text .= $array_abc[$index];
                $digits = substr($digits, strlen($seqStr));
                $matched = true;
                break;
            }
        }
        if (!$matched) {
            $text .= $digits[0];
            $digits = substr($digits, 1);
        }
    }
    return $text;
}
להלן דוגמה לשימוש במקלדת:
// דימוי מערך GET עם פרמטר digits
$_GET['digits'] = '77555522244099222555544';
// העברת הקלט מה-GET למשתנה
$digits = $_GET['digits'];
// קריאה לפונקציה והכנסת התוצאה למשתנה
$text = digitsToText($digits);
// הדפסת התוצאה
echo $text;
להלן מקרא המקלדת:
(1) 1 = .  
(2) 11 = ,  
(3) 111 = 1  
(4) 1111 = '  
(5) 11111 = ?  
(6) 111111 = !  
(7) 1111111 = :  
(8) 11111111 = (  
(9) 111111111 = )  
(10) 1111111111 = [  
(11) 11111111111 = ]  
(1) 2 = ד  
(2) 22 = ה  
(3) 222 = ו  
(4) 2222 = 2  
(5) 22222 = 2  
(6) 222222 = a  
(7) 2222222 = b  
(8) 22222222 = c  
(1) 3 = א  
(2) 33 = ב  
(3) 333 = ג  
(4) 3333 = 3  
(5) 33333 = 3  
(6) 333333 = d  
(7) 3333333 = e  
(8) 33333333 = f  
(1) 4 = מ  
(2) 44 = ם  
(3) 444 = נ  
(4) 4444 = ן  
(5) 44444 = 4  
(6) 444444 = g  
(7) 4444444 = h  
(8) 44444444 = i  
(1) 5 = י  
(2) 55 = כ  
(3) 555 = ך  
(4) 5555 = ל  
(5) 55555 = 5  
(6) 555555 = j  
(7) 5555555 = k  
(8) 55555555 = l  
(1) 6 = ז  
(2) 66 = ח  
(3) 666 = ט  
(4) 6666 = 6  
(5) 66666 = 6  
(6) 666666 = m  
(7) 6666666 = n  
(8) 66666666 = o  
(1) 7 = ר  
(2) 77 = ש  
(3) 777 = ת  
(4) 7777 = 7  
(5) 77777 = 7  
(6) 777777 = p  
(7) 7777777 = q  
(8) 77777777 = r  
(9) 777777777 = s  
(1) 8 = צ  
(2) 88 = ץ  
(3) 888 = ק  
(4) 8888 = 8  
(5) 88888 = 8  
(6) 888888 = t  
(7) 8888888 = u  
(8) 88888888 = v  
(1) 9 = ס  
(2) 99 = ע  
(3) 999 = פ  
(4) 9999 = ף  
(5) 99999 = 9  
(6) 999999 = w  
(7) 9999999 = x  
(8) 99999999 = y  
(9) 999999999 = z  
(1) 0 =  (-רווח)
(2) 00 = 0  
(3) 000 = +  
(4) 0000 = -  
(5) 00000 = *  
(6) 000000 = =  
(7) 0000000 = /  
(8) 00000000 = &  
(9) 000000000 = @  
(10) 0000000000 = $  
(11) 00000000000 = %  
(12) 000000000000 = #  
(13) 0000000000000 = <  
(14) 00000000000000 = >  
(1) * = (הפרדה בין שני אותיות, לדוגמה כשהם על אותו מקש)
(2) *** = (מחיקת התו האחרון, או 6 כוכביות למחיקת שני תווים אחרונים, וכו')
כאמור, נשמח בכל שידרוג המקלדת לתועלת כלל הציבור.
תודה..