2009-05-15 10 views
10

ओपनजीएल/जीएलयूटी का उपयोग करके मैं कैसे पता लगाऊंगा कि दो चाबियाँ कहें, 'ए' और 'जे' एक ही समय में आयोजित की जाती हैं?ओपनजीएल/जीएलयूटी का उपयोग करके मैं कैसे पता लगाऊंगा कि एक ही समय में दो कुंजियां आयोजित की जाती हैं?

(इस कार्यक्रम OSX जीसीसी, विंडोज जीसीसी, विंडोज VS2005 ताकि कोई ओएस निर्भर हैक्स कृपया के साथ संकलित करने के लिए की जरूरत है।)

उत्तर

15

निम्नलिखित का प्रयास करें: केवल प्राप्त भौतिक keydown/KeyUp के लिए

  1. उपयोग glutIgnoreKeyRepeat घटनाओं
  2. कुंजीपटल घटनाओं को सुनने के लिए कॉलबैक पंजीकृत करने के लिए glutKeyboardFunc का उपयोग करें।
  3. कुंजीपटल ईवेंट सुनने के लिए कॉलबैक पंजीकृत करने के लिए glutKeyboardUpFunc का उपयोग करें।
  4. कीबोर्ड कुंजी की स्थिति को संग्रहीत करने के लिए bool keystates[256] सरणी बनाएं।
  5. अपने कीडाउन कॉलबैक के माध्यम से कोई ईवेंट प्राप्त करते समय, keystates[key] = true सेट करें।
  6. अपने कीप कॉलबैक के माध्यम से कोई ईवेंट प्राप्त करते समय, keystates[key] = false सेट करें।
  7. अपने रन लूप में, (keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J']) पर परीक्षण करें।

उस दिशा में देखें। हालांकि मैंने इसका परीक्षण नहीं किया है, इसे काम करना चाहिए। 'विशेष' कुंजी के लिए संदेश प्राप्त करने के लिए आपको glutSpecialFunc और glutSpecialUpFunc की भी आवश्यकता हो सकती है।

साथ ही, जागरूक रहें कि जीएलयूटी वास्तव में पुरानी चीजें है और इसमें बहुत अच्छे विकल्प हैं।

+4

आप इन अच्छे विकल्प के बारे में और अधिक बता सकते हैं? – colorfulgrayscale

0

"अच्छे विकल्प" द्वारा आप सरल मतलब है और भरमार-स्वतंत्र इनपुट समारोह तो GetAsyncKeyState समारोह के साथ मिल गया ...

MSDN - GetAsyncKeyState function

+0

यह केवल विंडोज़ है। और विंडोज वास्तव में पुराना है और बहुत अच्छे विकल्प हैं। – ybungalobill

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^