// kjinput.cc // see /usr/share/doc/joystick../joystick.txt #include #include #include #include #include #include #include #include "kjinput.h" KLJoyStick::KLJoyStick(const char *devname) { x=y=z=bt=0; fd=0; valid=0; dev=NULL; jsrp=0; dev=new char [strlen(devname)+1]; strcpy(dev,devname); fd=open(dev,O_RDONLY|O_NONBLOCK); if(fd<0) { perror("The port is not found."); return; } valid=1; SetAxisMax(1000); Read(); } KLJoyStick::~KLJoyStick() { if(dev) delete [] dev; } int KLJoyStick::Read(void) { if(!valid) return -1; int r; while(1) { r=read(fd,((char *)(&js))+jsrp,sizeof(js)-jsrp); if(r<0) { if(errno==EAGAIN) return 0; perror("some error on joystick"); return -1; } jsrp+=r; if(jsrp