395 lines
11 KiB
Diff
395 lines
11 KiB
Diff
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]
|