استخدِم الوظائف التالية لإضافة جهاز الماوس إلى لعبتك باستخدام مكتبة وحدة التحكّم في الألعاب. ونستخدم هنا مصطلح أجهزة الماوس لوصف الفئران التقليدية، وكذلك لوحات التعقب أو كرات التعقب.
إضافة معاودة الاتصال بحالة الماوس
تستخدم مكتبة وحدة التحكّم في الألعاب استدعاء حالة الماوس لإشعار اللعبة عند توصيل الماوس أو قطع اتصاله. وهي تدعم استدعاء واحد فقط لحالة الماوس في كل مرة.
- لتسجيل استدعاء حالة الماوس أو استبدال أي معاودة اتصال تم تسجيلها سابقًا
بدالة استدعاء جديدة، استدعِ دالة
Paddleboat_setMouseStatusCallback
. - لإزالة أي استدعاء مسجَّل في الوقت الحالي، أدخِل
NULL
أوnullptr
في المعلّمةstatusCallback
. - تُعد المعلَمة
userData
مؤشرًا اختياريًا للبيانات التي يحدِّدها المستخدم. سيتم تمرير المعلّمةuserData
إلى دالة رد الاتصال. ويتم الاحتفاظ بهذا المؤشر داخليًا إلى أن يتم تغييره من خلال مكالمة أخرى إلىPaddleboat_setMouseStatusCallback
.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
توقيع الدالة لدالة استدعاء حالة الماوس هو:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
تتضمّن معلَمة التعداد mouseStatus
ثلاث قيم محتمَلة:
PADDLEBOAT_MOUSE_NONE
: ما مِن جهاز ماوس متصل حاليًا.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: وحدة تحكم متصلة تقوم بمحاكاة الماوس.PADDLEBOAT_MOUSE_PHYSICAL
: هناك جهاز ماوس واحد أو أكثر متصل. (تتضمن هذه الأجهزة ماوس أو لوحة لمس أو كرة تعقب أو أجهزة أخرى مشابهة).
تحتوي المعلَمة userData
على مؤشر userData
المحدّد في الاستدعاء الأخير لـ Paddleboat_setMouseStatusCallback
. قد تكون قيمة userData
فارغة (NULL) أو (nullptr
).
ليست كل وحدات التحكم تحاكي الماوس. يمكن لوحدات التحكم محاكاة الماوس باستخدام أحد العصي التناظرية أو باستخدام لوحة لمس مدمجة.
لا تعرض مكتبة وحدة التحكم في الألعاب إلا البيانات الواردة من جهاز ماوس فردي. وتحظى أجهزة الماوس المادية بالأولوية على أجهزة الماوس الخاصة بوحدة التحكّم الافتراضية. في حالة توصيل ماوس فعلي، فسوف يحتل مكانه من أي ماوس وحدة تحكم افتراضي نشط سابقًا.
قراءة بيانات الماوس
استدعِ وظيفة Paddleboat_getMouseStatus
لمعرفة حالة جهاز الماوس.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
استخدِم الدالة Paddleboat_getMouseData
للحصول على بيانات الماوس الحالية. تعرض هذه الدالة القيمة PADDLEBOAT_NO_ERROR
إذا تمت قراءة البيانات بنجاح، وإلّا يتم عرض رمز خطأ مناسب.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
تحتوي بنية Paddleboat_Mouse_Data
على معلومات عن:
- الطابع الزمني الأخير لحدث إدخال الماوس
- موضع المؤشر الحالي
- حالة أزرار الماوس
- حالة عجلات الماوس
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
عضو في البنية | الوصف |
---|---|
timestamp
|
الطابع الزمني لأحدث حدث تم إدخاله عن طريق الماوس قيمة الطابع الزمني هي بالميكرو ثانية منذ حقبة الساعة. |
buttonsDown
|
بتفيلد، يشير كل بت تبدأ من البت 0 إلى حالة زر لأسفل إذا تم تعيينها. |
mouseX mouseY
|
موضع الماوس في إحداثيات البكسل.
يكون لإحداثيات الموضع نطاق من 0.0 إلى عرض الشاشة وارتفاعها. |
mouseScrollDeltaH mouseScrollDeltaV
|
عدد الأحداث التراكمية لعجلة تمرير الماوس :
منذ الاستدعاء السابق إلى
Paddleboat_getMouseData . هذه القيم غير مضمونة لتكون دقيقة، ولكن لإعطاء مؤشر عن نشاط عجلة التمرير في اتجاه معين. تمتلك معظم الفئران عجلة
تمرير واحدة، ويتم رصدها في
mouseScrollDeltaV . إذا كان الماوس يحتوي على عجلة
تمرير جانبية، يتم الإبلاغ عنها في
mouseScrollDeltaH . تتم إعادة ضبط هذه القيم على
0 داخليًا بعد استدعاء
Paddleboat_getMouseData . |
تحدّد مكتبة وحدة التحكّم في الألعاب ثوابت قناع البت لأزرار الماوس في ملف العنوان الخاص بواجهة paddleboat.h
:
enum Paddleboat_Mouse_Buttons {
PADDLEBOAT_MOUSE_BUTTON_LEFT = (1U << 0),
PADDLEBOAT_MOUSE_BUTTON_RIGHT = (1U << 1),
PADDLEBOAT_MOUSE_BUTTON_MIDDLE = (1U << 2),
PADDLEBOAT_MOUSE_BUTTON_BACK = (1U << 3),
PADDLEBOAT_MOUSE_BUTTON_FORWARD = (1U << 4),
PADDLEBOAT_MOUSE_BUTTON_6 = (1U << 5),
PADDLEBOAT_MOUSE_BUTTON_7 = (1U << 6),
PADDLEBOAT_MOUSE_BUTTON_8 = (1U << 7)
};
أجهزة الماوس المادية مقابل أجهزة الماوس الافتراضية
تشير السمة Paddleboat_MouseStatus
في السمة PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
إلى عدم توفّر جهاز ماوس فعلي وأنّ مكتبة وحدة التحكّم في الألعاب تحاكي ماوس افتراضي باستخدام وحدة تحكُّم متصلة. يتم استخدام أدنى فهرس وحدة تحكّم متصلة مع مجموعة علامات PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
باعتباره ماوس افتراضي. تضمن أجهزة الماوس الافتراضية فقط الإبلاغ عن
إحداثي mouseX
وmouseY
. قد تُبلِغ أجهزة الماوس الافتراضية عن ضغطات من
زر ماوس واحد (أيسر)، لكن ذلك ليس مضمونًا.