summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch148
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