private static T9KeyRoute[] GetT9KeyRoutes()
        {
            char[][] layout =
            {
                new char[] { 'a', 'b', 'c' },
                new char[] { 'd', 'e', 'f' },
                new char[] { 'g', 'h', 'i' },
                new char[] { 'j', 'k', 'l' },
                new char[] { 'm', 'n', 'o' },
                new char[] { 'p', 'q', 'r', 's'},
                new char[] { 't', 'u', 'v' },
                new char[] { 'w', 'x', 'y', 'z'}
            };

            var t9KeyRoutes = new T9KeyRoute['z' - 'a' + 1];

            char keyCode = '2';

            foreach (var subSet in layout)
            {
                int repeat = 1;
                foreach (var letter in subSet)
                {
                    t9KeyRoutes[letter - 'a'] = new T9KeyRoute
                    {
                        KeyCode = keyCode,
                        Repeat  = repeat++
                    };
                }
                keyCode++;
            }

            return(t9KeyRoutes);
        }
        private T9Translator()
        {
            _spaceRoute = new T9KeyRoute {
                KeyCode = '0', Repeat = 1
            };

            _t9KeyRoutes = GetT9KeyRoutes();
        }