//Autodesk Design Review Wiimote Script //Modification of original Mouse Control Script written by vkapadia //vkapadia@vkapadia.com //Modified by Brian Pene | email: brian.pene@autodesk.com //Calibration: //Change these values until the debug line says all zeros when the wiimote is at rest. var.trimx = 6 var.trimy = -31 var.trimz = 6 // //Controls: //These are shorcuts and commands from Autodesk Design Review //mapped to buttons of the Wiimote //Tilt (Pitch) Wiimote Up and Down = Move Mouse Up and Down //Rotate (Roll) Wiimote Left and Right = Move Mouse Left and Right //D-Pad = Arrow Keys for Pan and Move Up, Down, Left, Right //B-Button = Left Click //Home = Go Home (Ctrl + G) //A-Button = Right Click //Plus = Markup Mode (M key) //One = Object Steering Wheel (Ctrl + Shift + i) //Two = Select Mode (A key) // //If the pointer hits the edge of the screen, the Wiimote will rumble to //demonstrate force feedback a bit. // //The LEDs attempt to emulate KITT's grill from Knight Rider //Set the D-Pad to function as the Arrow Keys if wiimote.Up Up = true Wait 200 ms Up = false endif if wiimote.Down Down = true Wait 200 ms Down = false endif if wiimote.Left Left = true Wait 200 ms Left = false endif if wiimote.Right Right = true Wait 200 ms Right = false endif //Mouse Buttons Mouse.RightButton = Wiimote.A Mouse.LeftButton = Wiimote.B Key.Ctrl+G = Wiimote.Home Key.N+D = Wiimote.Minus Key.M = Wiimote.Plus //Set up for One and Two buttons Key.Ctrl+Shift+I = wiimote.One Key.A = wiimote.Two //LEDs look somewhat like KITT's grill from Knight Rider if 0 = 0 then if var.kitt = 0 then wiimote.Leds = 1 //wait 200 ms endif if var.kitt = 1 then wiimote.Leds = 3 endif if var.kitt = 2 then wiimote.Leds = 6 endif if var.kitt = 3 then wiimote.Leds = 12 endif if var.kitt = 4 then wiimote.Leds = 8 //wait 200 ms endif if var.kitt = 5 then wiimote.Leds = 12 endif if var.kitt = 6 then wiimote.Leds = 6 endif if var.kitt = 7 then wiimote.Leds = 3 endif wait 100 ms var.kitt = (var.kitt + 1) % 8 endif //If the mouse reaches the end, rumble for 200 milliseconds if mouse.x = 0 or mouse.x = 1 or mouse.y = 0 or mouse.y = 1 then if var.rmbl = false wiimote.Rumble = 1 wait 200 ms wiimote.Rumble = 0 endif var.rmbl = true else var.rmbl = false endif //****Everything past here deals with mouse movement***** // set these to the offsets when the wiimote is at rest // will be different for each wiimote most likely var.x = Wiimote.RawForceX + var.trimx //trim to 0 var.y = Wiimote.RawForceY + var.trimy // trim to 0 var.z = Wiimote.RawForceZ + var.trimz //trim to 0 //precision var.sense0 = 500 var.thresh0x = 5 var.thresh0y = 2 var.sense = 300 var.threshx = 10 var.threshy = 5 var.sense2 = 100 var.thresh2x = 15 var.thresh2y = 8 var.sense3 = 50 var.thresh3x = 20 var.thresh3y = 12 //first sensitivity setting //xaxis if var.x > var.thresh0x mouse.x = mouse.x - 1/var.sense0 endif if var.x < -var.thresh0x mouse.x = mouse.x + 1/var.sense0 endif //yaxis if var.z > var.thresh0y mouse.y = mouse.y - 1/var.sense0 endif if var.z < -var.thresh0y mouse.y = mouse.y + 1/var.sense0 endif //second sensitivity setting //xaxis if var.x > var.threshx mouse.x = mouse.x - 1/var.sense endif if var.x < -var.threshx mouse.x = mouse.x + 1/var.sense endif //yaxis if var.z > var.threshy mouse.y = mouse.y - 1/var.sense endif if var.z < -var.threshy mouse.y = mouse.y + 1/var.sense endif //third sensitivity setting //xaxis if var.x > var.thresh2x mouse.x = mouse.x - 1/var.sense2 endif if var.x < -var.thresh2x mouse.x = mouse.x + 1/var.sense2 endif //yaxis if var.z > var.thresh2y mouse.y = mouse.y - 1/var.sense2 endif if var.z < -var.thresh2y mouse.y = mouse.y + 1/var.sense2 endif //fourth sensitivity setting //xaxis if var.x > var.thresh3x mouse.x = mouse.x - 1/var.sense3 endif if var.x < -var.thresh3x mouse.x = mouse.x + 1/var.sense3 endif //yaxis if var.z > var.thresh3y mouse.y = mouse.y - 1/var.sense3 endif if var.z < -var.thresh3y mouse.y = mouse.y + 1/var.sense3 endif debug = var.x + " " + var.y + " " + var.z