<pageby/>
The Wii balance board is a controller for the Nintendo Wii gaming console.
It is possible to hook it up with a PC. You then can use it as an input device, e.g. like a joystick.
The idea: Surf on the Web with your feet only. This is a first attempt ...
Material:
To set up the bluetooth connection for the wiimote
... and it should work, basically it's like connecting a cell phone or any other bluetooth device, i.e. straight forward with this laptop at least.
The Nintendo Wiimote seen by the Bluetooth tool (sorry my Windows speaks french)
The Wii balance board is supported by Carl Kenner's GlovePIE v. 0.3 + on the PC.
I based my trials on WiiMouse Version 0.4 by Sam Braidley (just appended what's below to it)
To set up the bluetooth connection for the wii balance board
What I get is:
The documentation for the GlovePIE v 0.3 balance board support is on page 70. It works :) ... there is only some weird calibration to do (e.g. I find the X and Y axis of the Joystick interface mixed up.
I added this (in several variants) to an existing PIE script
// Put the LED on Wiimote2.BalanceBoard.LED = true // This may look really weird. What is X and Y is a question of opinion ;) // (1) For me, X should be handled by left/right when board is in normal position in front of TV. Glove PIE X is front/back. // on/off LED // +--------------------------+ // | FL FR | // | left right | // | BL BR | // +--------------------------+ // (2) on/off button is IN FRONT, i.e. close to computer, else multiply by -1 // Calibration (x and y offsets) are a bit strange. Seems to change over time also. // Finally, there is some Interaction with the Wiimote I don't understand. // Ajust values here - you may have to change them each time // When you don't stand on the board, data for FL and BR are weird. // Below a formula that leaves the cursor more or less idle when NOT on the board var.deltaX = (Wiimote2.BalanceBoard.JoyY - 0.00) / 25 var.deltaY = (Wiimote2.BalanceBoard.JoyX + 0.05) / 25 // When you stand on the board (in neutral position) things may be wrong. So you may to compensenate once you are on the board... // var.deltaX = (Wiimote2.BalanceBoard.JoyY - 0.20) / 25 // var.deltaY = (Wiimote2.BalanceBoard.JoyX + 0.15) / 25 mouse.x = mouse.x + var.deltaX mouse.y = mouse.y + var.deltaY debug = "BB= " + Wiimote2.HasBalanceBoard + " JoyX =" + Wiimote2.BalanceBoard.JoyX + " JoyY =" + Wiimote2.BalanceBoard.JoyY + " FL=" + Wiimote2.BalanceBoard.FrontLeft + " FR=" + Wiimote2.BalanceBoard.FrontRight + " BL=" + Wiimote2.BalanceBoard.BackLeft + " BR=" + Wiimote2.BalanceBoard.BackRight // debug = ('WiiBalance by Daniel K. Schneider tecfa.unige.ch, based on Sam Braidley www.wiiscript.co.uk')
When you surf on the Internet you don't want to click, but just ride. To do so you have to write a Greasemonkey script like this.
Greasemonkey is a quite spectacular FireFox extension that allows you to customize the way a webpage displays using small bits of JavaScript. Hundreds of scripts, for a wide variety of popular sites, are already available at UserScripts.org. Something similar exists for Opera. IE 7 we don't know. Below is the script I wrote, you can copy/paste or get it from here
// ==UserScript== // @name Mouseover surfing // @namespace DKS // @description Adds a mouseover event handler to internal each link of a MediaWiki that will redirect to a new page. This is for surfing a Mediawiki // @include http://tecfa.unige.ch/guides/js/ex/greasmonkey/ // ==/UserScript== var n=document.links.length; // Change the cursor into something that is bigger document.body.style.cursor = "url(http://tecfa.unige.ch/guides/js/ex/greasemonkey/cursor.png) 25 25, auto"; for (var i = 0; i < n; i++) { l = document.links[i]; l.addEventListener( 'mouseover', function(event) { var link = event.target; // link.style.cursor = "crosshair"; link.style.cursor = "url(http://tecfa.unige.ch/guides/js/ex/greasemonkey/cursor-link.png) 25 25, auto"; // Uncomment to constrain to mediawiki internal links // if (link.className!="external text") if (link.href) document.location.href = link.href; }, true); }
This little script should be improved, e.g. by waiting a second before loading a new page. I'll do this once I have time, based on the code of NoClick 1.00.A.
Result is not perfect, but it does ok for a let's ride the Internet demo. I put it on YouTube (sorry I am not a filmmaker ...): http://www.youtube.com/watch?v=bqTB5AUDZzo
<object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/bqTB5AUDZzo"> </param> <embed src="http://www.youtube.com/v/bqTB5AUDZzo" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object>