#include #include #include #include #include int main(void) { int input, parsed; int paused = 0; if(getuid() == 0) { if(ioperm(0x200,8,1) == -1) { perror("ioperm"); return -1; } } else { printf("j00 must be root\n"); return -1; } setuid(1000); setgid(100); while(1) { input = inb(0x200); usleep(40000); parsed = parse_in(input); switch(parsed) { case 0: if(xmms_remote_is_playing(0)) { xmms_remote_stop(0); } else xmms_remote_play(0); break; case 1: xmms_remote_playlist_prev(0); break; case 2: if(paused) { xmms_remote_play(0); paused--; } else { if(!paused) { xmms_remote_pause(0); paused++; } } break; case 3: xmms_remote_playlist_next(0); break; case 4: xmms_remote_toggle_shuffle(0); break; case 5: xmms_remote_toggle_repeat(0); break; } } return 0; } int parse_in(int recv) { if(recv >= 176 && recv <= 191) { return 0; } if(recv >= 224 && recv <= 239) { return 1; } if(recv >= 208 && recv <= 223) { return 2; } if(recv >= 112 && recv <= 127) { return 3; } if(recv >= 160 && recv <= 175) { return 4; } if(recv >= 80 && recv <= 95) { return 5; } return -1; // oops }