絶対座標で動かすマウスマクロ
Arduinoでマウスマクロを作ってみましょう。
Leonardoでマウスをつくるでは、基本的なマウス動作をさせることができました。とはいえ、実際に使おうとすると、あるx座標、y座標に行きたいということがあるので、(x,y)を指定するとその場に移動してクリックしてきてくれるプログラムを組みました。
MouseMacro.adp
使い方:
- mX,mYに画面の縦横解像度を指定する。スマホの場合は、縦に使うか横に使うかでどちらを長辺にするかは違う。
- 行きたい座標として、pX,pYを指定して[clickloop]、ミリ秒<wait>
コードは次のようになっているので一応
int _ABVAR_1_mX = 0 ;
int _ABVAR_2_mY = 0 ;
int _ABVAR_3_wait = 0 ;
int _ABVAR_4_Response = 0 ;
int _ABVAR_5_pX = 0 ;
int _ABVAR_6_pY = 0 ;
int _ABVAR_7_iX = 0 ;
int _ABVAR_8_a;
int _ABVAR_9_a;
int _ABVAR_10_nX = 0 ;
int _ABVAR_11_nY = 0 ;
int _ABVAR_12_nW = 0 ;
int _ABVAR_13_dX = 0 ;
int _ABVAR_14_X0 = 0 ;
int _ABVAR_15_dY = 0 ;
int _ABVAR_16_Y0 = 0 ;
int _ABVAR_17_dW = 0 ;
int _ABVAR_18_pW = 0 ;
int _ABVAR_19_W0 = 0 ;
int _ABVAR_20_iY = 0 ;
int _ABVAR_21_a;
int _ABVAR_22_a;
int _ABVAR_23_iW = 0 ;
void moveZero();
void setPos();
void set();
void moveX();
void clickLoop();
void moveMouse();
void refZero();
void moveY();
void printPos();
void printMove();
void setup()
{
Mouse.begin();
Serial.begin(9600);
delay( 10000 );
_ABVAR_1_mX = 1280 ;
_ABVAR_2_mY = 720 ;
_ABVAR_3_wait = 3000 ;
_ABVAR_4_Response = 20 ;
set();
delay( _ABVAR_3_wait );
refZero();
delay( _ABVAR_3_wait );
}
void loop()
{
_ABVAR_5_pX = 1060 ;
_ABVAR_6_pY = 580 ;
clickLoop();
delay( _ABVAR_3_wait );
_ABVAR_5_pX = 140 ;
_ABVAR_6_pY = 500 ;
clickLoop();
_ABVAR_5_pX = 379 ;
_ABVAR_6_pY = 500 ;
clickLoop();
_ABVAR_5_pX = 609 ;
_ABVAR_6_pY = 500 ;
clickLoop();
}
void moveX()
{
if (( ( 0 ) <= ( _ABVAR_7_iX ) ))
{
for (_ABVAR_8_a=1; _ABVAR_8_a<= ( _ABVAR_7_iX ); ++_ABVAR_8_a )
{
Mouse.move(
10
,
0
,
0
);
delay( _ABVAR_4_Response );
}
}
else
{
for (_ABVAR_9_a=1; _ABVAR_9_a<= ( abs( _ABVAR_7_iX ) ); ++_ABVAR_9_a )
{
Mouse.move(
-10
,
0
,
0
);
delay( _ABVAR_4_Response );
}
}
}
void printPos()
{
Serial.print(":nX:");
Serial.print(" ");
Serial.print(_ABVAR_10_nX);
Serial.print(" ");
Serial.print(":nY:");
Serial.print(" ");
Serial.print(_ABVAR_11_nY);
Serial.print(" ");
Serial.print(":nW:");
Serial.print(" ");
Serial.print(_ABVAR_12_nW);
Serial.print(" ");
Serial.println();
}
void setPos()
{
_ABVAR_13_dX = ( _ABVAR_5_pX - _ABVAR_14_X0 ) ;
_ABVAR_15_dY = ( _ABVAR_6_pY - _ABVAR_16_Y0 ) ;
_ABVAR_17_dW = _ABVAR_18_pW ;
moveMouse();
}
void clickLoop()
{
setPos();
delay( _ABVAR_3_wait );
Mouse.press();
delay( 500 );
Mouse.release();
delay( 500 );
Mouse.press();
delay( 500 );
Mouse.release();
moveZero();
delay( _ABVAR_3_wait );
}
void set()
{
_ABVAR_14_X0 = ( _ABVAR_1_mX / 2 ) ;
_ABVAR_16_Y0 = ( _ABVAR_2_mY / 2 ) ;
_ABVAR_19_W0 = 0 ;
_ABVAR_10_nX = _ABVAR_14_X0 ;
_ABVAR_11_nY = _ABVAR_16_Y0 ;
_ABVAR_12_nW = 0 ;
_ABVAR_13_dX = 0 ;
_ABVAR_15_dY = 0 ;
_ABVAR_17_dW = 0 ;
_ABVAR_5_pX = 0 ;
_ABVAR_6_pY = 0 ;
_ABVAR_18_pW = 0 ;
Serial.print("set");
Serial.println();
printPos();
Serial.print("end");
Serial.println();
}
void printMove()
{
Serial.print(":dX:");
Serial.print(" ");
Serial.print(_ABVAR_13_dX);
Serial.print(" ");
Serial.print(":dY:");
Serial.print(" ");
Serial.print(_ABVAR_15_dY);
Serial.print(" ");
Serial.print(":dW:");
Serial.print(" ");
Serial.print(_ABVAR_17_dW);
Serial.print(" ");
Serial.println();
}
void moveZero()
{
_ABVAR_13_dX = ( _ABVAR_14_X0 - _ABVAR_10_nX ) ;
_ABVAR_15_dY = ( _ABVAR_16_Y0 - _ABVAR_11_nY ) ;
_ABVAR_17_dW = _ABVAR_19_W0 ;
Serial.print("moveZero");
Serial.println();
moveMouse();
}
void moveY()
{
if (( ( 0 ) <= ( _ABVAR_20_iY ) ))
{
for (_ABVAR_21_a=1; _ABVAR_21_a<= ( _ABVAR_20_iY ); ++_ABVAR_21_a )
{
Mouse.move(
0
,
10
,
0
);
delay( _ABVAR_4_Response );
}
}
else
{
for (_ABVAR_22_a=1; _ABVAR_22_a<= ( abs( _ABVAR_20_iY ) ); ++_ABVAR_22_a )
{
Mouse.move(
0
,
-10
,
0
);
delay( _ABVAR_4_Response );
}
}
}
void refZero()
{
_ABVAR_5_pX = ( -1 * _ABVAR_1_mX ) ;
_ABVAR_6_pY = ( -1 * _ABVAR_2_mY ) ;
setPos();
_ABVAR_10_nX = 0 ;
_ABVAR_11_nY = 0 ;
_ABVAR_12_nW = 0 ;
moveZero();
}
void moveMouse()
{
_ABVAR_7_iX = ( _ABVAR_13_dX / 10 ) ;
_ABVAR_20_iY = ( _ABVAR_15_dY / 10 ) ;
_ABVAR_23_iW = ( _ABVAR_17_dW / 10 ) ;
moveX();
moveY();
_ABVAR_10_nX = ( _ABVAR_10_nX + _ABVAR_13_dX ) ;
_ABVAR_11_nY = ( _ABVAR_11_nY + _ABVAR_15_dY ) ;
_ABVAR_12_nW = ( _ABVAR_12_nW + _ABVAR_17_dW ) ;
Serial.print("moveMouse");
Serial.println();
printMove();
printPos();
}
Post a Comment