Although I appreciate the effort, I see a couple of issues with this implementation:
* The demo doesn't seem to work properly, the first thing I tried to type was "hello world", but it didn't recognize "hello" and I got "43556" instead.
* The word list is generated generated C code, which makes it hard to use other dictionaries (languages) or to add words during use (you can't add all place and people names to the list, but people are going to want to reference a handful of them many times). Loading from and appending to a plain text word list would make more sense, and maybe additionally use a custom binary format for the trie structure for fast loading into memory once a word list is imported on first use (hardware that would benefit from T9 might not be fast enough for conversion to be "instant")
* Non-latin script support would be nice. Although I have no knowledge whether Greek or Cyrillic languages used a T9 mechanism, it would be a minor change to define. Korean 12-key typing is also very cool, but I don't know whether that counts as T9.