Arduino IDEでRP2040Zeroに書き込んでキーボードマウスになりすます。
マウスポインタを原点に持っていく方法がないので、移動を繰り返して原点っぽいところまで持っていく作戦。
#include
#include
#include
#define LED_PIN 16
Adafruit_NeoPixel pixels(1, LED_PIN);
int responseDelay = 200;
int maxMove = 63; // 1回の移動量の最大値
int movingStep = 5;
void setup() {
Mouse.begin(); // Mouse mode start
Keyboard.begin();
pixels.begin();
pixels.setPixelColor(0, 255, 0, 0);
pixels.show();
delay(1000);
pixels.setPixelColor(0, 0, 255, 0);
pixels.show();
delay(1000);
}
void loop() {
// 初期マウス移動ループ
for (int i = 0; i < 300; i++) {
pixels.setPixelColor(0, 0, 0, 255);
pixels.show();
Mouse.move(-10, -10, 0);
delay(10); // 移動間隔調整
}
for (int i = 0; i < 10; i++) {
Mouse.move(-1, -1, 0);
pixels.setPixelColor(0, 0, 0, 64);
pixels.show();
delay(10); // 移動間隔調整
}
// 座標 1045, 962 をクリック
moveWithLimit(1045, 962);
Mouse.click();
pixels.setPixelColor(0, 64, 0, 0);
pixels.show();
delay(responseDelay);
// 下矢印キーを押す
Keyboard.press(KEY_DOWN_ARROW);
Keyboard.release(KEY_DOWN_ARROW);
pixels.setPixelColor(0, 0, 64, 0);
pixels.show();
delay(responseDelay);
// 座標 543, 833 をクリック
moveWithLimit(543 - 1045, 833 - 962);// 相対移動
Mouse.click();
pixels.setPixelColor(0, 0, 0, 64);
pixels.show();
delay(responseDelay);
// 下矢印キーを押す
Keyboard.press(KEY_DOWN_ARROW);
Keyboard.release(KEY_DOWN_ARROW);
delay(responseDelay);
// エンターキーを押す
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(responseDelay);
pixels.setPixelColor(0, 64, 64, 64);
pixels.show();
}
// 移動量を制限する関数
void moveWithLimit(int dx, int dy) {
while (abs(dx) > 0 || abs(dy) > 0) {
int moveX = constrain(dx, -maxMove, maxMove);
int moveY = constrain(dy, -maxMove, maxMove);
Mouse.move(moveX, moveY, 0);
dx -= moveX;
dy -= moveY;
delay(10); // 移動間隔調整
}
}