diff options
Diffstat (limited to 'misc/cwiid/add_other_plugins_#487498.patch')
-rw-r--r-- | misc/cwiid/add_other_plugins_#487498.patch | 394 |
1 files changed, 394 insertions, 0 deletions
diff --git a/misc/cwiid/add_other_plugins_#487498.patch b/misc/cwiid/add_other_plugins_#487498.patch new file mode 100644 index 0000000000..c9d28963a1 --- /dev/null +++ b/misc/cwiid/add_other_plugins_#487498.patch @@ -0,0 +1,394 @@ +Index: cwiid-0.6.00+svn184.orig/wminput/plugins/Makefile.in +=================================================================== +--- cwiid-0.6.00+svn184.orig.orig/wminput/plugins/Makefile.in 2008-06-24 21:43:05.000000000 +0200 ++++ cwiid-0.6.00+svn184.orig/wminput/plugins/Makefile.in 2009-03-27 13:15:50.000000000 +0100 +@@ -2,7 +2,7 @@ + + include @top_builddir@/defs.mak + +-PLUGINS = ir_ptr acc nunchuk_acc led nunchuk_stick2btn ++PLUGINS = ir_ptr ir_fps acc nunchuk_acc led nunchuk_stick2btn nunchuk_kb + + all install clean distclean uninstall: TARGET += $(MAKECMDGOALS) + +Index: cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/Makefile.in +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/Makefile.in 2009-03-27 13:15:50.000000000 +0100 +@@ -0,0 +1,15 @@ ++#Copyright (C) 2007 L. Donnie Smith ++ ++include @top_builddir@/defs.mak ++ ++PLUGIN_NAME = ir_fps ++SOURCES = ir_fps.c ++CFLAGS += -I@top_builddir@/wminput -I@top_builddir@/libcwiid ++INST_DIR = $(CWIID_PLUGINS_DIR) ++ ++include $(COMMON)/include/plugin.mak ++ ++distclean: clean ++ rm Makefile ++ ++.PHONY: distclean +Index: cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/ir_fps.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/ir_fps.c 2009-03-27 13:15:50.000000000 +0100 +@@ -0,0 +1,162 @@ ++/* Copyright (C) 2007 L. Donnie Smith <cwiidabstrakraft.org> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ * ++ */ ++ ++#include "wmplugin.h" ++ ++#define DEBOUNCE_THRESHOLD 50 ++ ++//deadzone is a circle of diameter a 10th of the screen ++#define DEADZONE (CWIID_IR_X_MAX*CWIID_IR_X_MAX+CWIID_IR_Y_MAX*CWIID_IR_Y_MAX)/100 ++ ++//speed is here ++#define XSPEED 10/(CWIID_IR_X_MAX/2) ++#define YSPEED 10/(CWIID_IR_Y_MAX/2) ++ ++cwiid_wiimote_t *wiimote; ++ ++static struct wmplugin_info info; ++static struct wmplugin_data data; ++ ++wmplugin_info_t wmplugin_info; ++wmplugin_init_t wmplugin_init; ++wmplugin_exec_t wmplugin_exec; ++ ++struct wmplugin_info *wmplugin_info() { ++ static unsigned char info_init = 0; ++ ++ if (!info_init) { ++ info.button_count = 0; ++ info.axis_count = 2; ++ info.axis_info[0].name = "X"; ++ info.axis_info[0].type = WMPLUGIN_REL; ++ info.axis_info[0].max = CWIID_IR_X_MAX; ++ info.axis_info[0].min = 0; ++ info.axis_info[0].fuzz = 0; ++ info.axis_info[0].flat = 0; ++ info.axis_info[1].name = "Y"; ++ info.axis_info[1].type = WMPLUGIN_REL; ++ info.axis_info[1].max = CWIID_IR_Y_MAX; ++ info.axis_info[1].min = 0; ++ info.axis_info[1].fuzz = 0; ++ info.axis_info[1].flat = 0; ++ info.param_count = 0; ++ info_init = 1; ++ } ++ return &info; ++} ++ ++int wmplugin_init(int id, cwiid_wiimote_t *arg_wiimote) ++{ ++ wiimote = arg_wiimote; ++ ++ data.buttons = 0; ++ ++ if (wmplugin_set_rpt_mode(id, CWIID_RPT_IR)) { ++ return -1; ++ } ++ ++ return 0; ++} ++ ++struct wmplugin_data *wmplugin_exec(int mesg_count, union cwiid_mesg mesg[]) ++{ ++ static int src_index = -1; ++ static int debounce = 0; ++ static uint8_t old_flag; ++ ++ int i; ++ uint8_t flag; ++ struct cwiid_ir_mesg *ir_mesg; ++ int dx, dy; ++ ++ ir_mesg = NULL; ++ for (i=0; i < mesg_count; i++) { ++ if (mesg[i].type == CWIID_MESG_IR) { ++ ir_mesg = &mesg[i].ir_mesg; ++ } ++ } ++ ++ if (!ir_mesg) { ++ return NULL; ++ } ++ ++ /* invalidate src index if source is no longer present */ ++ if ((src_index != -1) && !ir_mesg->src[src_index].valid) { ++ if (debounce > DEBOUNCE_THRESHOLD) { ++ src_index = -1; ++ } ++ else { ++ debounce++; ++ } ++ } ++ else { ++ debounce = 0; ++ } ++ ++ /* of not set, pick largest available source */ ++ if (src_index == -1) { ++ for (i=0; i < CWIID_IR_SRC_COUNT; i++) { ++ if (ir_mesg->src[i].valid) { ++ if ((src_index == -1) || ++ (ir_mesg->src[i].size > ir_mesg->src[src_index].size)) { ++ src_index = i; ++ } ++ } ++ } ++ } ++ ++ /* LEDs */ ++ switch (src_index) { ++ case 0: ++ flag = CWIID_LED1_ON; ++ break; ++ case 1: ++ flag = CWIID_LED2_ON; ++ break; ++ case 2: ++ flag = CWIID_LED3_ON; ++ break; ++ case 3: ++ flag = CWIID_LED4_ON; ++ break; ++ default: ++ flag = 0; ++ break; ++ } ++ if (flag != old_flag) { ++ cwiid_set_led(wiimote, flag); ++ old_flag = flag; ++ } ++ ++ if ((src_index == -1) || !ir_mesg->src[src_index].valid) { ++ data.axes[0].valid = data.axes[1].valid = 0; ++ } ++ else { ++ data.axes[0].valid = data.axes[1].valid = 1; ++ dx = CWIID_IR_X_MAX/2 - ir_mesg->src[src_index].pos[CWIID_X]; ++ dy = ir_mesg->src[src_index].pos[CWIID_Y] - CWIID_IR_Y_MAX/2; ++ if (dx*dx+dy*dy > DEADZONE){ ++ data.axes[0].value = dx*XSPEED; ++ data.axes[1].value = dy*YSPEED; ++ }else { ++ data.axes[0].value = 0; ++ data.axes[1].value = 0; ++ } ++ } ++ return &data; ++} +Index: cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/Makefile.in +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/Makefile.in 2009-03-27 13:15:50.000000000 +0100 +@@ -0,0 +1,16 @@ ++#Copyright (C) 2007 L. Donnie Smith ++ ++include @top_builddir@/defs.mak ++ ++PLUGIN_NAME = nunchuk_kb ++SOURCES = nunchuk_kb.c ++CFLAGS += -I@top_builddir@/wminput -I@top_builddir@/libcwiid ++LDLIBS += -lm ++INST_DIR = $(CWIID_PLUGINS_DIR) ++ ++include $(COMMON)/include/plugin.mak ++ ++distclean: clean ++ rm Makefile ++ ++.PHONY: distclean +Index: cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/nunchuk_kb.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/nunchuk_kb.c 2009-03-27 13:15:50.000000000 +0100 +@@ -0,0 +1,116 @@ ++/* Copyright (C) 2007 L. Donnie Smith <cwiid@abstrakraft.org> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ * ++ */ ++ ++#include <math.h> ++ ++#include "wmplugin.h" ++ ++/* Button flags */ ++#define STICK_KEY_UP 0x0001 ++#define STICK_KEY_DOWN 0x0002 ++#define STICK_KEY_RIGHT 0x0004 ++#define STICK_KEY_LEFT 0x0008 ++#define STICK_MID_VAL 128 ++#define STICK_NEUTRAL 20 ++ ++static unsigned char info_init = 0; ++static struct wmplugin_info info; ++static struct wmplugin_data data; ++ ++static cwiid_wiimote_t *wiimote; ++ ++static struct acc_cal acc_cal; ++static int plugin_id; ++ ++wmplugin_info_t wmplugin_info; ++wmplugin_init_t wmplugin_init; ++wmplugin_exec_t wmplugin_exec; ++static void process_nunchuk(struct cwiid_nunchuk_mesg *mesg); ++ ++static float Roll_Scale = 1.0; ++static float Pitch_Scale = 1.0; ++static float X_Scale = 1.0; ++static float Y_Scale = 1.0; ++ ++struct wmplugin_info *wmplugin_info() { ++ if (!info_init) { ++ info.button_count = 4; ++ info.button_info[0].name = "Up"; ++ info.button_info[1].name = "Down"; ++ info.button_info[2].name = "Right"; ++ info.button_info[3].name = "Left"; ++ info.axis_count = 0; ++ info_init = 1; ++ } ++ return &info; ++} ++ ++int wmplugin_init(int id, cwiid_wiimote_t *arg_wiimote) ++{ ++ plugin_id = id; ++ wiimote = arg_wiimote; ++ data.buttons = 0; ++ data.axes[0].valid = 1; ++ data.axes[1].valid = 1; ++ if (wmplugin_set_rpt_mode(id, CWIID_RPT_STATUS | CWIID_RPT_NUNCHUK)) { ++ return -1; ++ } ++ ++ return 0; ++} ++ ++struct wmplugin_data *wmplugin_exec(int mesg_count, union cwiid_mesg mesg[]) ++{ ++ int i; ++ enum cwiid_ext_type ext_type = CWIID_EXT_NONE; ++ struct wmplugin_data *ret = NULL; ++ ++ for (i=0; i < mesg_count; i++) { ++ switch (mesg[i].type) { ++ case CWIID_MESG_STATUS: ++ if ((mesg[i].status_mesg.ext_type == CWIID_EXT_NUNCHUK) && ++ (ext_type != CWIID_EXT_NUNCHUK)) { ++ if (cwiid_get_acc_cal(wiimote, CWIID_EXT_NUNCHUK, &acc_cal)) { ++ wmplugin_err(plugin_id, "calibration error"); ++ } ++ } ++ ext_type = mesg[i].status_mesg.ext_type; ++ break; ++ case CWIID_MESG_NUNCHUK: ++ process_nunchuk(&mesg[i].nunchuk_mesg); ++ ret = &data; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ return ret; ++} ++ ++static void process_nunchuk(struct cwiid_nunchuk_mesg *mesg) ++{ ++ double stx=(double)mesg->stick[CWIID_X]; ++ double sty=(double)mesg->stick[CWIID_Y]; ++ data.buttons=0; ++ if (sty > STICK_MID_VAL+STICK_NEUTRAL) data.buttons |= STICK_KEY_UP; ++ if (sty < STICK_MID_VAL-STICK_NEUTRAL) data.buttons |= STICK_KEY_DOWN; ++ if (stx > STICK_MID_VAL+STICK_NEUTRAL) data.buttons |= STICK_KEY_RIGHT; ++ if (stx < STICK_MID_VAL-STICK_NEUTRAL) data.buttons |= STICK_KEY_LEFT; ++} ++ +Index: cwiid-0.6.00+svn184.orig/wminput/configs/fps_config +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cwiid-0.6.00+svn184.orig/wminput/configs/fps_config 2009-03-27 13:15:50.000000000 +0100 +@@ -0,0 +1,32 @@ ++# Fps config for wminput by kyrlian ++# needs plugins ir_fps and nunchuk_kb ++# available from http://kyrlian.free.fr/binaries/cwiid/latest/ ++# wminput source and info at http://abstrakraft.org/cwiid/ ++ ++# IR for mouse REL - fps style ++Plugin.ir_fps.X = REL_X ++Plugin.ir_fps.Y = REL_Y ++ ++#custom buttons ++Wiimote.A = BTN_LEFT ++Wiimote.B = BTN_RIGHT ++Wiimote.Up = KEY_UP ++Wiimote.Down = KEY_DOWN ++Wiimote.Left = KEY_LEFT ++Wiimote.Right = KEY_RIGHT ++Wiimote.Minus = KEY_PAGEDOWN ++Wiimote.Plus = KEY_PAGEUP ++Wiimote.Home = KEY_ESC ++ ++Wiimote.1 = KEY_TAB ++Wiimote.2 = KEY_ESC ++ ++Nunchuk.C = KEY_C ++Nunchuk.Z = KEY_SPACE ++ ++#plugin for nunchuk stick ++Plugin.nunchuk_kb.Up = KEY_W ++Plugin.nunchuk_kb.Down = KEY_S ++Plugin.nunchuk_kb.Left = KEY_A ++Plugin.nunchuk_kb.Right = KEY_D ++ +Index: cwiid-0.6.00+svn184.orig/configure.ac +=================================================================== +--- cwiid-0.6.00+svn184.orig.orig/configure.ac 2008-06-24 21:43:05.000000000 +0200 ++++ cwiid-0.6.00+svn184.orig/configure.ac 2009-03-27 13:15:50.000000000 +0100 +@@ -142,8 +142,10 @@ + [wminput/Makefile] + [wminput/plugins/Makefile] + [wminput/plugins/ir_ptr/Makefile] ++ [wminput/plugins/ir_fps/Makefile] + [wminput/plugins/acc/Makefile] + [wminput/plugins/nunchuk_acc/Makefile] ++ [wminput/plugins/nunchuk_kb/Makefile] + [wminput/plugins/led/Makefile] + [wminput/plugins/nunchuk_stick2btn/Makefile] + [lswm/Makefile] |