مقدمة
التحكم بالماوس هو جانب أساسي في أتمتة التفاعل مع واجهة المستخدم. في العديد من المهام، سواء كانت اختبارات آلية، سكريبتات، بوتات ألعاب، أو أدوات أتمتة، تحتاج إلى تحريك المؤشر برمجيًا، محاكاة النقرات، والتقاط إجراءات المستخدم. في بايثون، مكتبة mouse هي الخيار الأمثل لذلك.
توفر مكتبة mouse واجهة برمجية بسيطة ومباشرة للتعامل مع الماوس: تتبع الأحداث، تنفيذ النقرات، تسجيل الحركات وإعادة تشغيلها. وهي مناسبة للتطوير عبر المنصات المختلفة، سهلة التثبيت، وتُستخدم في السكريبتات المنفردة والمشاريع المعقدة لأتمتة العمليات الروبوتية (RPA).
تثبيت وإعداد مكتبة mouse
التثبيت عبر pip
pip install mouse
المتطلبات النظامية والأذونات
على نظامي Linux و macOS، قد تحتاج إلى تشغيل السكريبت بصلاحيات المدير (Administrator) أو منح أذونات التحكم في الإدخال.
لنظام Linux:
sudo pip install mouse
لنظام macOS: يجب منح الوصول في إعدادات Security & Privacy ← Accessibility.
لنظام Windows: بعض الوظائف تتطلب تشغيل السكريبت بصلاحيات المدير.
الهيكل المعماري ومبادئ العمل
المكونات الأساسية
تتكون مكتبة mouse من عدة مكونات رئيسية:
- Controller — التحكم بالمؤشر ومحاكاة الإجراءات
- Listener — تتبع أحداث الماوس
- Recorder — تسجيل وإعادة تشغيل الماكرو
- Event System — نظام معالجة الأحداث
المنصات المدعومة
- Windows (عبر Windows API)
- macOS (عبر Cocoa)
- Linux (عبر X11/Wayland)
الإمكانيات الرئيسية للمكتبة
محاكاة إجراءات الماوس
تعمل مكتبة mouse على جانبين: التقاط إجراءات المستخدم (listener)، ومحاكاة الحركات والنقرات (controller).
الوظائف الأساسية:
- تتبع الضغط ورفع الأزرار
- تحديد موضع المؤشر
- النقرات والتمرير البرمجي
- تحريك المؤشر
- اختصارات الماوس (Hotkeys)
- تسجيل وإعادة تشغيل الماكرو
أنواع الأحداث
تعالج المكتبة أنواع الأحداث التالية:
- ButtonEvent — ضغط/رفع الأزرار
- MoveEvent — تحريك المؤشر
- WheelEvent — تمرير العجلة
التحكم بالمؤشر وتحديد المواقع
تحريك المؤشر
import mouse
# تحديد موضع مطلق
mouse.move(100, 200)
# تحريك نسبي
mouse.move(50, 0, absolute=False)
# تحريك سلس مع تأخير
mouse.move(300, 400, duration=1.0)
الحصول على الإحداثيات الحالية
# الحصول على موضع المؤشر
x, y = mouse.get_position()
print(f"المؤشر في النقطة: ({x}, {y})")
# استخدامه في الشروط
if mouse.get_position()[0] > 500:
print("المؤشر في الجانب الأيمن من الشاشة")
محاكاة النقرات والإجراءات
أنواع النقرات الأساسية
# النقر بالزر الأيسر
mouse.click('left')
mouse.left_click()
# النقر بالزر الأيمن
mouse.click('right')
mouse.right_click()
# النقر بالزر الأوسط
mouse.click('middle')
mouse.middle_click()
# النقر المزدوج
mouse.double_click()
النقر على إحداثيات محددة
# النقر على إحداثيات معينة
mouse.click('left', (300, 400))
# حفظ الموضع قبل النقر
original_pos = mouse.get_position()
mouse.click('left', (100, 100))
mouse.move(*original_pos)