माउस डिवाइस से जुड़ी सहायता जोड़ें

Game Controller लाइब्रेरी का इस्तेमाल करके, अपने गेम में माउस डिवाइस के लिए सहायता जोड़ने के लिए, इन फ़ंक्शन का इस्तेमाल करें. यहां हम माउस डिवाइस शब्द का इस्तेमाल, पारंपरिक माउस के साथ-साथ ट्रैकपैड या ट्रैकबॉल के लिए करते हैं.

माउस के स्टेटस के बारे में सूचना देने वाला कॉलबैक जोड़ना

गेम कंट्रोलर लाइब्रेरी, माउस के स्टेटस के बारे में सूचना देने वाले कॉलबैक का इस्तेमाल करती है. इससे गेम को यह सूचना मिलती है कि माउस कनेक्ट या डिसकनेक्ट हो गया है. यह एक बार में सिर्फ़ एक माउस स्टेटस कॉलबैक का इस्तेमाल करता है.

  • माउस की स्थिति के कॉलबैक को रजिस्टर करने या पहले से रजिस्टर किए गए किसी कॉलबैक को नए कॉलबैक फ़ंक्शन से बदलने के लिए, Paddleboat_setMouseStatusCallback फ़ंक्शन को कॉल करें.
  • मौजूदा समय में रजिस्टर किए गए किसी भी कॉलबैक को हटाने के लिए, statusCallback पैरामीटर में NULL या nullptr पास करें.
  • userData पैरामीटर, उपयोगकर्ता की ओर से तय किए गए डेटा का वैकल्पिक पॉइंटर होता है. userData पैरामीटर को कॉलबैक फ़ंक्शन में पास किया जाएगा. यह पॉइंटर, अंदरूनी तौर पर तब तक सेव रहता है, जब तक Paddleboat_setMouseStatusCallback को किसी दूसरे कॉल से बदला नहीं जाता.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

माउस की स्थिति के कॉलबैक फ़ंक्शन का सिग्नेचर यह है:

typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
  mouseStatus, void *userData)

mouseStatus enum पैरामीटर की तीन वैल्यू हो सकती हैं:

  • 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 माउस से इनपुट किए गए सबसे हाल के इवेंट का टाइमस्टैंप. टाइमस्टैंप की वैल्यू, क्लॉक Epoch के बाद से माइक्रोसेकंड में होती है.
buttonsDown बिटफ़ील्ड. अगर सेट किया जाता है, तो बिट 0 से शुरू होने वाला हर बिट, बटन के दबाए जाने की स्थिति को दिखाता है.
mouseX
mouseY
पिक्सल कोऑर्डिनेट में माउस की पोज़िशन. पोजीशन के कोऑर्डिनेट, स्क्रीन की चौड़ाई और ऊंचाई के हिसाब से 0.0 से लेकर स्क्रीन की चौड़ाई और ऊंचाई तक होते हैं.
mouseScrollDeltaH
mouseScrollDeltaV
माउस व्हील को स्क्रोल करने पर होने वाले इवेंट की कुल संख्या : Paddleboat_getMouseData को पिछली बार कॉल किए जाने के बाद से. इन वैल्यू के सटीक होने की कोई गारंटी नहीं है. इनसे सिर्फ़ यह पता चलता है कि स्क्रोल व्हील को किसी खास दिशा में घुमाया गया है. ज़्यादातर माउस में एक स्क्रोल व्हील होता है, जिसकी जानकारी mouseScrollDeltaV में दी जाती है. अगर किसी माउस में साइड स्क्रोल व्हील है, तो इसकी जानकारी mouseScrollDeltaH में दी जाती है. 0 को कॉल करने के बाद, इन वैल्यू को 0 पर रीसेट कर दिया जाता है.Paddleboat_getMouseData

Game Controller लाइब्रेरी, 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_MOUSE_CONTROLLER_EMULATED का Paddleboat_MouseStatus यह दिखाता है कि कोई फ़िज़िकल माउस डिवाइस मौजूद नहीं है. साथ ही, Game Controller लाइब्रेरी, कनेक्ट किए गए कंट्रोलर का इस्तेमाल करके वर्चुअल माउस को सिम्युलेट कर रही है. PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE फ़्लैग सेट किए गए सबसे कम कनेक्टेड कंट्रोलर इंडेक्स का इस्तेमाल वर्चुअल माउस के तौर पर किया जाता है. वर्चुअल माउस डिवाइसों से सिर्फ़ mouseX और mouseY कोऑर्डिनेट रिपोर्ट किए जा सकते हैं. वर्चुअल माउस डिवाइस, माउस के एक बटन (बाएं) को दबाने की जानकारी दे सकते हैं. हालांकि, यह ज़रूरी नहीं है.