2010-08-19 19 views
5

मैं कीस्ट्रोक से निपटने के लिए RawInput का उपयोग कर रहा हूं। मुझे यह निर्धारित करना मुश्किल लगता है कि शिफ्ट को एक कुंजी के साथ दबाया गया है या नहीं।मुझे कैसे पता चलेगा कि RawInput का उपयोग करके शिफ्ट दबाया जाता है या नहीं?

RawInputStructure ->RawKeyboard से, मैं दबाए जा रहे कुंजी को पुनर्प्राप्त कर सकता हूं लेकिन मुझे यकीन नहीं है कि चाबियाँ एक ही समय में दबाए जाने पर चीजों के बारे में कैसे जाना है।

RI.Data.keyboard.VKey जब एक उपयोगकर्ता/कुंजीपटल बदलाव उन सभी करते हैं, Capslock के साथ एक ही है, क्योंकि इस समय

मैं प्रत्येक उपयोगकर्ता/कुंजीपटल के लिए शिफ्ट अलग करने के लिए कोशिश कर रहा हूँ (कीकोड हो जाता है)। एक साथ टाइपिंग वास्तव में गन्दा हो जाता है।

मुझे कैसे पता चलेगा कि शिफ्ट को दूसरी कुंजी के साथ दबाया गया है या नहीं? क्या मैं इसे सही ढांचे में ढूंढ रहा हूं या मुझे कहीं और दिखना चाहिए?

उत्तर

6

ऐसी कोई चीज नहीं है जैसे दो कुंजियां "एक ही समय में दबाई जा रही हों।" एक नीचे चला जाता है, और फिर दूसरा। आपको प्रत्येक को अलग से अधिसूचित किया जाना चाहिए। जब शिफ्ट कुंजी दबाया या जारी किया जाता है, तो अपने वर्तमान स्थिति को याद रखने के लिए अपने प्रोग्राम में ध्वज सेट या साफ़ करें।

वास्तव में यह है कि ओएस सामान्य कीबोर्ड इनपुट के लिए पहले से ही क्या करता है। यह एक कुंजी-राज्य मानचित्र रखता है और प्रत्येक कीबोर्ड संदेश के साथ इसे अद्यतन करता है। संसाधित होने वाले सबसे हालिया संदेश के रूप में कुंजी की स्थिति की जांच करने के लिए GetKeyState का उपयोग करें, या फ़ंक्शन को कॉल करने के समय कुंजी की स्थिति जांचने के लिए GetAsyncKeyState का उपयोग करें। (यदि कीबोर्ड स्थिति बदल गई है, तो दोनों अलग हो सकते हैं लेकिन आपने अभी तक उन कीबोर्ड संदेशों को संसाधित नहीं किया है, जैसे कि उपयोगकर्ता आपके प्रोग्राम से तेज़ी से टाइप कर रहा है।)

+0

लेकिन जब मैं GetKeyState का उपयोग करना मुश्किल जानता है जहां शिफ्ट आया था (किस कीबोर्ड से)। :(मैं GetAsyncKeyState में देखता हूं मैंने अभी तक इसका उपयोग नहीं किया है। – Dian

+0

क्षमा करें, मेरा सुझाव यह नहीं था कि आपको उन कार्यों का उपयोग करना चाहिए। मैंने उन्हें केवल उन उदाहरणों के उदाहरण के रूप में वर्णित किया है जो ओएस पहले से ही * सामान्य * (गैर-कच्चे) कुंजीपटल इनपुट। आप सभी इनपुट स्वयं कर रहे हैं, हालांकि, आप अपने आप को चीजों का ट्रैक रखेंगे। –

+0

ओह ठीक है। स्पष्टीकरण के लिए धन्यवाद। मैं ध्वज की चीज़ को लागू करने की कोशिश करूंगा। – Dian

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