ESP32-S3 ile Makro Klavye ve Mouse Yapımı: Sürücüsüz USB HID Rehberi
Bilgisayar başında çalışırken veya oyun oynarken sürekli aynı tuş kombinasyonlarını (örneğin kopyala-yapıştır, kod derleme kısayolları veya Photoshop araçları) kullanmaktan sıkılmadınız mı? ESP32-S3’ün yerleşik (native) USB çevre birimi sayesinde, bilgisayarın harici bir klavye veya fare gibi algılayacağı USB HID (Human Interface Device) cihazları tasarlamak artık çok kolay. Bu rehberde, ESP32-S3 kullanarak bilgisayara tek tıkla uzun metinler yazdıran veya fareyi otomatik hareket ettiren bir makro sistemi kuracağız!
USB HID Nedir ve Neden Sürücü Gerekmez?
HID (İnsan Arayüz Cihazı), klavye, fare, oyun konsolu gibi çevre birimlerinin bilgisayarla standart bir protokol üzerinden konuşmasını sağlar. Windows, Mac veya Linux işletim sistemleri, takılan cihazın bir HID sınıfı olduğunu anladığı anda ek bir sürücü (driver) yüklemeden cihazı doğrudan kabul eder. ESP32-S3'ü programlayıp native USB portundan bilgisayara bağladığımız an, işletim sistemi onu saniyeler içinde "Standart Klavye/Mouse" olarak tanıyacaktır.
Arduino IDE Gerekli Kütüphaneler
ESP32-S3 ile HID projeleri geliştirirken dışarıdan ek bir kütüphane indirmenize gerek yoktur. ESP32 kart kütüphanesinin (ESP32 core) içinde gömülü olarak gelen resmi kütüphaneleri kullanacağız:
USB.h: Genel USB yönetimini sağlar.USBHIDKeyboard.h: Kartı klavye moduna alır ve tuş basma komutlarını yönetir.
Uygulama 1: Tek Butonla Otomatik Makro Klavye
Bu örnekte, ESP32-S3'ün GPIO 1 pinine bağlı harici bir butona basıldığında, bilgisayara tek seferde hazır bir metin yazdıracağız ve ardından otomatik olarak Enter tuşuna basacağız. (Eğer harici butonunuz yoksa pin numarasını kartın üzerindeki yerleşik BOOT butonu olan 0 olarak değiştirebilirsiniz).
#include "USB.h"
#include "USBHIDKeyboard.h"
USBHIDKeyboard Keyboard;
const int butonPin = 1; // Makro tetikleyici buton pini
int butonDurumu = HIGH;
int sonButonDurumu = HIGH;
void setup() {
pinMode(butonPin, INPUT_PULLUP); // Dahili Pull-up direnci aktif
Keyboard.begin();
USB.begin();
}
void loop() {
int okunan = digitalRead(butonPin);
// Butona basıldığında (HIGH'dan LOW'a geçtiğinde)
if (okunan == LOW && sonButonDurumu == HIGH) {
delay(50); // Buton arkını (debounce) önlemek için kısa gecikme
// Bilgisayara klavyeden metin gönderiyoruz
Keyboard.println("Yenidir.com ile ESP32-S3 Makro Klavye Projesi Basarili!");
// Örnek Çoklu Kombinasyon: Ctrl + S (Kaydetme Kısayolu)
// Keyboard.press(KEY_LEFT_CTRL);
// Keyboard.press('s');
// delay(100);
// Keyboard.releaseAll(); // Tuşları bırakmayı unutmayın!
}
sonButonDurumu = okunan;
}
Uygulama 2: Otomatik Mouse Hareketi ve Tıklama
Klavyenin yanı sıra ESP32-S3'ü bilgisayar imlecini hareket ettiren sanal bir fareye dönüştürebiliriz. Bu özellik, ekranın açık kalmasını sağlayan (Mouse Jiggler) cihazlarda ya da oyunlarda otomatik tıklama (Auto-Clicker) sistemlerinde sıkça kullanılır. Projenize USBHIDMouse.h kütüphanesini eklemeniz yeterlidir:
#include "USB.h"
#include "USBHIDMouse.h"
USBHIDMouse Mouse;
void setup() {
Mouse.begin();
USB.begin();
}
void loop() {
// Fareyi X ekseninde +50 piksel sağa hareket ettirir
Mouse.move(50, 0);
delay(1000);
// Sol tıklama yapar
Mouse.click(MOUSE_LEFT);
delay(1000);
// Fareyi X ekseninde -50 piksel sola (eski yerine) hareket ettirir
Mouse.move(-50, 0);
delay(5000); // 5 saniye bekle
}
Geliştiriciler İçin Altın Kural: releaseAll() Fonksiyonu
HID klavye projelerinde yeni başlayanların en çok yaptığı hata, bir tuşa bastıktan sonra o tuşu bırakmayı unutmaktır. Kodunuzda Keyboard.press() fonksiyonunu çağırdığınızda, ESP32-S3 bilgisayara o tuşun hâlâ basılı tutulduğu sinyalini gönderir. Eğer hemen ardından Keyboard.releaseAll() komutunu vermezseniz, bilgisayarınız kilitlenebilir veya sürekli aynı harfi yazmaya başlar. Yazılımsal güvenliğiniz için kombinasyonların sonunda mutlaka tuşları serbest bırakın.
✔️ Sonuç
ESP32-S3'ün native USB gücü sayesinde ekstra hiçbir donanım eklemeden sadece birkaç satır kodla kendi özel oyuncu donanımlarınızı veya iş akışınızı hızlandıracak makro pad cihazlarınızı tasarlayabilirsiniz. Mekanik anahtarlar (Mechanical Switches) ve 3D yazıcıdan basılmış şık bir kutu ile bu projeyi ticari bir ürüne dönüştürmek tamamen sizin elinizde!
Fikir Alışverişi: Siz bu makro sistemini hangi programdaki kısayollarınızı otomatikleştirmek için kullanırdınız? Yorumlarda projelerinizi bizimle paylaşın!