diff options
Diffstat (limited to 'media-sound/chuck/files/chuck-1.4.0.0-hid-smc.patch')
-rw-r--r-- | media-sound/chuck/files/chuck-1.4.0.0-hid-smc.patch | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/media-sound/chuck/files/chuck-1.4.0.0-hid-smc.patch b/media-sound/chuck/files/chuck-1.4.0.0-hid-smc.patch new file mode 100644 index 000000000000..0f608f579953 --- /dev/null +++ b/media-sound/chuck/files/chuck-1.4.0.0-hid-smc.patch @@ -0,0 +1,148 @@ +--- chuck-1.4.0.0~/src/core/util_hid.cpp ++++ chuck-1.4.0.0/src/core/util_hid.cpp +@@ -7175,14 +7175,139 @@ + int WiiRemote_send( const HidMsg * msg ){ return -1; } + const char * WiiRemote_name( int wr ){ return NULL; } + ++#define SYSFS_TILTSENSOR_FILE "/sys/devices/platform/applesmc/position" ++#define TILTSENSOR_BUF_LEN 32 ++ ++static struct t_TiltSensor_data ++{ ++ union ++ { ++ struct t_macbook ++ { ++ int x; ++ int y; ++ int z; ++ } macbook; ++ } data; ++ int dataType; ++ int detected; ++ int refcount; ++ ++ t_TiltSensor_data() ++ { ++ refcount = 0; ++ dataType = -1; ++ detected = 0; ++ } ++ ++} TiltSensor_data; ++enum ++{ ++ linuxAppleSMCMacBookDataType ++}; ++static int TiltSensor_detect() ++{ ++ int fd; ++ ++ fd = open(SYSFS_TILTSENSOR_FILE, O_RDONLY); ++ ++ if (fd > 0) ++ { ++ TiltSensor_data.dataType = linuxAppleSMCMacBookDataType; ++ TiltSensor_data.detected = 1; ++ close(fd); ++ return 1; ++ } ++ ++ TiltSensor_data.detected = -1; ++ ++ return 0; ++} ++ ++static int TiltSensor_do_read() ++{ ++ ++ switch(TiltSensor_data.dataType) ++ { ++ case linuxAppleSMCMacBookDataType: ++ char buf[TILTSENSOR_BUF_LEN]; ++ int ret, fd; ++ fd = open(SYSFS_TILTSENSOR_FILE, O_RDONLY); ++ ++ if (fd < 0) { ++ return -1; ++ } ++ ret = read(fd, buf, TILTSENSOR_BUF_LEN); ++ if (ret < 0) { ++ close(fd); ++ return -1; ++ } ++ if (sscanf(buf, "(%d,%d,%d)\n", &TiltSensor_data.data.macbook.x, &TiltSensor_data.data.macbook.y, &TiltSensor_data.data.macbook.z) != 3) { ++ close(fd); ++ return -1; ++ } ++ close(fd); ++ break; ++ default: ++ return 0; ++ } ++ return 1; ++} + void TiltSensor_init(){} + void TiltSensor_quit(){} + void TiltSensor_probe(){} +-int TiltSensor_count(){ return 0; } +-int TiltSensor_open( int ts ){ return -1; } +-int TiltSensor_close( int ts ){ return -1; } +-int TiltSensor_read( int ts, int type, int num, HidMsg * msg ){ return -1; } +-const char * TiltSensor_name( int ts ){ return NULL; } ++int TiltSensor_count() ++{ ++ if(TiltSensor_data.detected == 0) ++ TiltSensor_detect(); ++ ++ if(TiltSensor_data.detected == -1) ++ return 0; ++ else if(TiltSensor_data.detected == 1) ++ return 1; ++ ++ return 0; ++} ++int TiltSensor_open( int ts ) ++{ ++ if(TiltSensor_data.detected == 0) ++ TiltSensor_detect(); ++ ++ if(TiltSensor_data.detected == -1) ++ return -1; ++ ++ TiltSensor_data.refcount++; ++ ++ return 0; ++} ++int TiltSensor_close( int ts ) ++{ ++ TiltSensor_data.refcount--; ++ ++ return 0; ++} ++int TiltSensor_read( int ts, int type, int num, HidMsg * msg ) ++{ ++ ++ if(TiltSensor_data.detected == -1) ++ return -1; ++ ++ if(!TiltSensor_do_read()) ++ return -1; ++ ++ if(TiltSensor_data.dataType == linuxAppleSMCMacBookDataType) ++ { ++ msg->idata[0] = TiltSensor_data.data.macbook.x; ++ msg->idata[1] = TiltSensor_data.data.macbook.y; ++ msg->idata[2] = TiltSensor_data.data.macbook.z; ++ } ++ ++ return 0; ++} ++const char * TiltSensor_name( int ts ) ++{ ++ return "Apple Sudden Motion Sensor"; ++} + + + #endif +Only in chuck-1.4.0.0/src/core: util_hid.cpp.orig |