Merhaba yazdığınız kodu denediğim zaman mouse yukarı ve sol hareketlerde çok hızlı hareket ediyor aynı zamanda bunu kullanabilir miyim bilmiyorum. Kodumu biraz güncelleştirip düzeltmiştim ancak yeni hatalar ile karşılaştım.
Bu kodu denediğim zaman yuvarlak çizmeye çalıştığımda imleç sağ aşağıya doğru sürükleniyor.
sağ hareket: sağ alta
sol hareket: sol alta
yukarı hareket: sağ yukarı
aşağı hareket: aşağı ve hafif sağ
Düzenlemek isteyenler için:
//#include <Mouse2.h>
#include <Mouse.h>
#include "hidmouserptparser.h"
HIDMouseReportParser::HIDMouseReportParser(HIDMouseEvents *evt) : mouEvents(evt), oldButtons(0) {}
void HIDMouseReportParser:
arse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) {
// Button ID's: 1, 2, 4, 8, 16
for (uint8_t but_id = 1; but_id <= 16; but_id <<= 1) {
if (buf[0] & but_id) {
if (!(oldButtons & but_id)) {
mouEvents->OnButtonDn(but_id);
}
} else {
if (oldButtons & but_id) {
mouEvents->OnButtonUp(but_id);
}
}
}
oldButtons = buf[0];
int8_t xm, ym, scr, tilt;
xm = map(255 - buf[2], 0, 255, -3, 3); // x koordinatını tersine çevir
ym = map(255 - buf[4], 0, 255, -3, 3); // y koordinatını tersine çevir
scr = buf[5]; // kaydırma değerini atla
tilt = buf[7]; // eğim değerini atla
// Hareketi işle
if ((xm != 0) || (ym != 0) || (scr != 0) || (tilt != 0)) {
// Eğer sadece sağa veya sola hareket ediyorsa, y eksenini sıfırla
if (abs(xm) > abs(ym)) {
ym = 0;
}
// Eğer sadece yukarı veya aşağı hareket ediyorsa, x eksenini sıfırla
else if (abs(ym) > abs(xm)) {
xm = 0;
}
// Yukarıya veya aşağıya doğru hareket
if (ym != 0) {
Mouse.move(0, ym, scr);
}
// Sağa veya sola doğru hareket
if (xm != 0) {
Mouse.move(xm, 0, scr);
}
}
}
void HIDMouseEvents::OnButtonDn(uint8_t but_id) {
Mouse.press(but_id);
}
void HIDMouseEvents::OnButtonUp(uint8_t but_id) {
Mouse.release(but_id);
}
void HIDMouseEvents::Move(int8_t xm, int8_t ym, int8_t scr, int8_t tilt) {
/*
Serial.print("dx: ");
Serial.print(xm);
Serial.print(", dy: ");
Serial.println(ym);
*/
// Hareketi uygula
Mouse.move(xm, ym, scr);
}
yerine : P boşlukları silisiniz