#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include "378.h"
char mygetch( void )
{
int ch;
struct termios oldt, newt;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
static l378_t my378;
static const char keymap[] = {
['a'] = '2', ['b'] = '2', ['c'] = '2',
['d'] = '3', ['e'] = '3', ['f'] = '3',
['g'] = '4', ['h'] = '4', ['i'] = '4',
['j'] = '5', ['k'] = '5', ['l'] = '5',
['m'] = '6', ['n'] = '6', ['o'] = '6',
['p'] = '7', ['q'] = '7', ['r'] = '7', ['s'] = '7',
['t'] = '8', ['u'] = '8', ['v'] = '8',
['w'] = '9', ['x'] = '9', ['y'] = '9', ['z'] = '9'
};
int main( const int argc, const char *argv[] )
{
char c;
char* s = NULL;
l378_dictionary_open( &my378, "dictionary.bin.bz2" );
l378_keymap_set( &my378, keymap );
printf( " 1 2 3\n" );
printf( " C abc def\n\n" );
printf( " 4 5 6\n" );
printf( " ghi jkl mno\n\n" );
printf( " 7 8 9\n" );
printf( " pqrs tuv wxyz\n\n" );
printf( " TAB 0 - \n" );
printf( " auto _ next\n\n" );
while( '\n' != (c = mygetch()) )
{
switch( c )
{
//case '0':
// break;
//case '\t':
// if( (s = l378_match( &my378 )) )
// printf( "%s\r", s );
// continue;
case '-':
break;
case '1':
printf( "\t\t\t\t\r" );
l378_popc( &my378 );
break;
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
l378_pushc( &my378, c );
break;
default:
continue;
}
//printf( "[%s]:", my378.pattern );
if( (s = l378_matche( &my378 )) )
printf( "%s_", s );
else if( (s = l378_match( &my378 )) )
{
unsigned char j;
for( j = 0; j < strlen( my378.pattern ); j++ )
printf( "%c", s[j] );
printf( "_%s", &(s[j]) );
}
printf( "\t\t\r");
}
printf( "\n" );
l378_dictionary_close( &my378 );
return 0;
}
// eof