All pastes #1235 Raw Edit

XMMSGamepad

public c v1 · immutable
#1235 ·published 2004-10-03 18:41 UTC
rendered paste body
#include <unistd.h>#include <sys/types.h>#include <sys/io.h>#include <stdio.h>#include <xmms/xmmsctrl.h>intmain(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;}intparse_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}