ویژگی تصویر

معرفی کتابخانه mouse در پایتون

  /  پایتون   /  کتابخانه mouse در پایتون
بنر تبلیغاتی الف

کتابخانه mouse (معروف به boppreh/mouse در PyPI/GitHub) یک ماژول ساده و سبک برای کنترل و دریافت رویدادهای ماوس در پایتون است. این کتابخانه امکان حرکت، کلیک، فشار و رهاسازی دکمه‌ها، اسکرول و همچنین شنود (hook) و ضبط/پخش رویدادهای ماوس را به‌صورت سراسری (global) فراهم می‌کند. کاربردهای متداول آن شامل خودکارسازی رابط کاربری، تست‌های سیستمی، ضبط ماکرو و پیاده‌سازی ابزارهای کمکی برای کاربران هستند.

چرا از mouse استفاده کنیم؟

  • رابط کاربری ساده و مینیمال برای عملیات پایه‌ای روی ماوس
  • پشتیبانی از سیستم‌عامل‌های رایج (Windows, macOS, Linux)
  • امکان ثبت رویدادها و پخش مجدد آن‌ها برای ساخت ماکرو
  • یک انتخاب خوب وقتی به دنبال سادگی و سرعت پیاده‌سازی هستید

نصب

نصب ساده از طریق pip انجام می‌شود:

pip install mouse

تذکر: روی macOS معمولاً باید به اپلیکیشن پایتون یا ترمینال اجازه کنترل صفحه (Accessibility) بدهید. همچنین در برخی توزیع‌های لینوکس ممکن است به مجوزهای اضافی یا اجرا در سطح کاربر با X11/Wayland توجه کنید.

نمونه‌های کاربردی

حرکت و کلیک ساده

import mouse

# حرکت به مختصات مطلق (x=100, y=200) با مدت زمان 0.2 ثانیه
mouse.move(100, 200, absolute=True, duration=0.2)

# کلیک چپ
mouse.click('left')

شرح: این کد ابتدا نشانگر ماوس را به موقعیت مشخص می‌برد و سپس کلیک چپ انجام می‌دهد. آرگومان duration برای ایجاد حرکت نرم (انیمیشن) مفید است. نام دکمه (‘left’، ‘right’، …) بسته به پیاده‌سازی کتابخانه قابل تنظیم است.

فشردن و رهاسازی دکمه (Drag)

import mouse

# نگه داشتن دکمه چپ، حرکت نسبی و رهاسازی (برای Drag)
mouse.press('left')
mouse.move(200, 0, absolute=False, duration=0.3)  # حرکت نسبی در جهت x
mouse.release('left')

شرح: با استفاده از press و release می‌توان عملیات درگ را شبیه‌سازی کرد. در مثال بالا ابتدا دکمه چپ نگه داشته می‌شود، سپس به مقدار دلخواه جابه‌جا شده و در نهایت رها می‌شود.

شنود (Hook) رویدادها

import mouse

def on_event(event):
    print(event)  # event معمولاً شامل نوع، موقعیت و دکمه است

# افزودن شنونده
mouse.hook(on_event)

# اجرای برنامه تا وقتی کاربر آن را متوقف کند
mouse.wait()

شرح: hook یک تابع را به مجموعه رویدادهای ماوس متصل می‌کند و هر بار که رویدادی (مانند حرکت یا کلیک) رخ دهد آن تابع صدا زده می‌شود. تابع wait برنامه را بلاک می‌کند تا برنامه خاتمه نیابد. در برخی نسخه‌ها نام و رفتار دقیق event ممکن است اندکی متفاوت باشد، اما ایده کلی مشابه است.

ضبط و پخش ماوس (Record & Playback)

import mouse

print("Recording... Press middle button to stop.")
events = mouse.record(button='middle')  # ضبط تا فشار دکمه وسط
print("Playing back...")
mouse.play(events)

شرح: این مثال نشان می‌دهد چگونه می‌توان رفتار ماوس را ضبط و سپس مجدداً پخش کرد. معمولاً record لیستی از رویدادها برمی‌گرداند و play آن‌ها را با ترتیب و زمان‌بندی ضبط‌شده بازتولید می‌کند. این قابلیت برای ایجاد ماکروها بسیار کاربردی است.

نکات فنی و محدودیت‌ها

  • روی macOS لازم است دسترسی Accessibility را برای برنامه پایتون فعال کنید. بدون آن بسیاری از عملکردها کار نخواهند کرد.
  • در محیط‌های Wayland (برخی توزیع‌های مدرن لینوکس) پشتیبانی ممکن است محدود باشد؛ در این صورت بررسی مستندات یا استفاده از کتابخانه‌های حمایتی لازم است.
  • عملیات سراسری روی ماوس نیازمند دسترسی سطح سیستم است؛ برخی محیط‌های ایمن یا سرویس‌ها ممکن است آن را مسدود کنند.

مقایسه مختصر با کتابخانه‌های جایگزین

ویژگیmouse (boppreh)pynputpyautogui
سادگی APIبسیار سادهمتوسط، مبتنی بر Controller/Listenerساده و کاربردی برای اتوماسیون
ضبط/پخشداردنیاز به پیاده‌سازی دستینیست (نیاز به ابزار اضافی)
پشتیبانی از رویدادهاقوی (global hooks)قوی (global)ضعیف‌تر برای hooks
سازگاری پلتفرمWin/mac/LinuxWin/mac/LinuxWin/mac/Linux

نکات امنیتی و اخلاقی

استفاده از کتابخانه‌هایی که رفتار کاربر را شبیه‌سازی یا ضبط می‌کنند دو وجه دارد: مفید برای اتوماسیون و تست، و در عین حال می‌تواند سوءاستفاده شود (مثلاً اتو کلیکرها یا ثبت رفتار بدون رضایت). همیشه قبل از ضبط یا کنترل ماوس، رضایت کاربر را جلب کنید و در محیط‌های مشترک یا تولیدی با احتیاط عمل کنید.

بهینه‌سازی و بهترین شیوه‌ها

  • برای اتوماسیون پیچیده از تاخیرهای مناسب و بررسی وضعیت برنامه هدف استفاده کنید تا همگام‌سازی بهتر شود.
  • در تست‌های خود از ضبط/پخش با سرعت‌های متفاوت بهره ببرید تا از پایداری سناریو مطمئن شوید.
  • به جای مختصات مطلق، در صورت امکان از توابعی که بر اساس موقعیت عناصر (مثلاً با تشخیص تصویر در pyautogui) کار می‌کنند استفاده کنید تا وابستگی به رزولوشن کاهش یابد.

جمع‌بندی و توصیه‌ها

کتابخانه mouse گزینه‌ای مناسب برای کسانی است که به‌دنبال یک راهکار سریع و سبک برای کنترل و شنود ماوس در پایتون هستند. برای پروژه‌های حرفه‌ای‌تر یا هنگامی که نیاز به توانایی‌های اضافی (مانند کنترل صفحه‌کلید پیشرفته یا تشخیص تصویر) دارید، می‌توانید آن را با کتابخانه‌هایی مانند pynput یا pyautogui ترکیب کنید. پیش از استفاده در محیط واقعی به مشکلات پلتفرمی و مجوزها توجه کنید و همیشه اصول اخلاقی را رعایت نمایید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: