Ads Expert 👨💻
Donator
Arduino leonardo kullanıyorum. Mouse USB host Shield'a bağlı. Logitech G PRO Superlight 2 kullanıyorum. Tüm butonlar çalışıyor fakat sola çekince mouse yukarı, sağa çekince mouse aşağı iniyor. Soruna yardımcı olabilecek var mı?
Aurduino Kodu:
Aurduino Kodu:
Kod:
#include <avr/pgmspace.h>
#include <Usb.h>
#include <usbhub.h>
#include <hidboot.h>
#include <hiduniversal.h>
#include <Keyboard.h>
#include <Mouse.h>
USB Usb;
HIDUniversal HidMouse(&Usb);
// Mouse hareket hassasiyeti için sabitler
#define MOUSE_BACK 4
#define MOUSE_FORWARD 5
// Mouse hareketi için yardımcı fonksiyon
void MoveMouseToXY(int x, int y) {
// Eğer hareket yoksa fonksiyondan çık
if (x == 0 && y == 0) return;
Mouse.begin();
Mouse.move(x, y, 0); // Direkt hareket ettir
Mouse.end();
}
// Mouse olaylarını işleyen sınıf
class MouseRptParser : public MouseReportParser {
protected:
virtual void OnMouseMove (MOUSEINFO* mi) {
MoveMouseToXY(mi->dX, mi->dY);
}
virtual void OnLeftButtonUp (MOUSEINFO* mi) {
Mouse.begin();
Mouse.release(MOUSE_LEFT);
Mouse.end();
}
virtual void OnLeftButtonDown (MOUSEINFO* mi) {
Mouse.begin();
Mouse.press(MOUSE_LEFT);
Mouse.end();
}
virtual void OnRightButtonUp (MOUSEINFO* mi) {
Mouse.begin();
Mouse.release(MOUSE_RIGHT);
Mouse.end();
}
virtual void OnRightButtonDown (MOUSEINFO* mi) {
Mouse.begin();
Mouse.press(MOUSE_RIGHT);
Mouse.end();
}
virtual void OnMiddleButtonUp (MOUSEINFO* mi) {
Mouse.begin();
Mouse.release(MOUSE_MIDDLE);
Mouse.end();
}
virtual void OnMiddleButtonDown (MOUSEINFO* mi) {
Mouse.begin();
Mouse.press(MOUSE_MIDDLE);
Mouse.end();
}
};
MouseRptParser Prs;
void setup() {
Serial.begin(115200);
if (Usb.Init() == -1) {
Serial.println("USB Baslatilamadi.");
}
HidMouse.SetReportParser(0, (HIDReportParser*)&Prs);
}
// Serial'dan gelen veriler için buffer
byte buffer[3];
void loop() {
Usb.Task();
if (Serial.available() >= 3) {
Serial.readBytes(buffer, 3);
// X ve Y hareketlerini ve tıklama durumunu al
int moveX = (int8_t)buffer[0]; // int8_t kullanarak işaretli sayı olarak al
int moveY = (int8_t)buffer[1];
int shoot = buffer[2];
// Mouse'u hareket ettir
MoveMouseToXY(moveX, moveY);
// Tıklama gerekiyorsa tıkla
if (shoot == 1) {
Mouse.begin();
Mouse.click(MOUSE_LEFT);
Mouse.end();
}
}
}
Moderatörün son düzenlenenleri: