#include #include #include #include #include #define base 0x378 //change thse values to correspond to your wiring #define UP 25 #define DOWN 17 #define LEFT 3 #define RIGHT 7 int main(){ if (ioperm(base,1,1)) return -1; struct termios termset; tcgetattr( STDIN_FILENO, &termset ); termset.c_lflag &= ~( ICANON | ECHO ); tcsetattr( STDIN_FILENO, TCSANOW, &termset ); char c; for(;;){ switch (c=getchar()){ case '.':outb(0,base);break; //stop case 'k':outb(UP,base);break; //up case 'j':outb(DOWN,base);break; //down case 'h':outb(LEFT,base);break; //left case 'l':outb(RIGHT,base);break; //right case 'u':outb(UP|LEFT,base);break; //up-left case 'i':outb(UP|RIGHT,base);break; //up-right case 'n':outb(DOWN|LEFT,base);break; //down-left case 'm':outb(DOWN|RIGHT,base);break; //down-right case 'q':outb(0,base);return 0; //quit } } }