(Wii)(GlovePIE)(Wiiリモコン と モーションプラス で PC用の空中マウス プロジェクト)

関連の最新記事 → http://d.hatena.ne.jp/morakana/20100705/1278260133


 先日と スクリプトの見た目はほとんど変わってませんが 笑)
使用した時の違和感を減らすべく 仕様の調整をしてみました

 大きく変わった部分は
Bボタンを押すと マウスカーソルは 必ず停止します
「−」ボタンを押す毎に マウスカーソルの移動速度が 普通 と 遅い に 切り替わります

 これで マウスカーソルを移動させながら ココ! と思った所で
Bを押して マウスカーソルをストップさせる という感じの 操作に統一されると思います
Aドラックで スクローバーを動かしている最中も Bを押す事で止められたり
クリック や ダブルクリックする時も Bでカーソルを止めてからすると
ほぼ確実に実行できると思います

var.DispWidth = 1920;
var.DispHeight = 1200;

var.Vec_X = Wiimote.MotionPlus.GyroYaw - var.Last_GyroYaw;
var.Vec_Y = Wiimote.MotionPlus.GyroPitch - var.Last_GyroPitch;

if (Wiimote.Minus) {
   var.IsSlow = !var.IsSlow;
   Wait 500ms;
}

if (!Wiimote.B) {
   if (Wiimote.A) {
      Mouse.CursorPosX += (var.Vec_X / 500000);
      Mouse.CursorPosY -= (var.Vec_Y / 500000);
   }elseif (var.IsSlow) {
      Mouse.CursorPosX += (var.Vec_X / 1000000);
      Mouse.CursorPosY -= (var.Vec_Y / 1000000);
   }else{
      Mouse.CursorPosX += (var.Vec_X / 300000);
      Mouse.CursorPosY -= (var.Vec_Y / 300000);
   }
}

if (Wiimote.Home) {
   Mouse.CursorPosX = var.DispWidth / 2;
   Mouse.CursorPosY = var.DispHeight / 2;
}

Keyboard.Up = Wiimote.Up;
Keyboard.Down = Wiimote.Down;
Keyboard.Left = Wiimote.Left;
Keyboard.Right = Wiimote.Right;

Mouse.LeftButton = Wiimote.A;
Mouse.RightButton = Wiimote.Plus;

if (Wiimote.One) {
   if (Wiimote.B) {
      Mouse.WheelUp = True;
   }else{
      Mouse.WheelDown = True;
   }
   Wait 200ms;
}

Alt = Wiimote.Two;
Tab = (Wiimote.Two and Wiimote.B);

var.Last_GyroYaw = Wiimote.MotionPlus.GyroYaw;
var.Last_GyroPitch = Wiimote.MotionPlus.GyroPitch;