ماذا يعني رمز 0x80 عند الإشارة إلى عناصر التحكم في لوحة المفاتيح

StackOverflow https://stackoverflow.com/questions/2746817

سؤال

ماذا يعني رمز 0x80 عند الإشارة إلى عناصر التحكم في لوحة المفاتيح في بيئة Windows C ++؟

فمثلا،

if(GetKeyState('K') & 0x80) { 
    //do something 
}

شكرا لكم جميعا!

لا يوجد حل صحيح

نصائح أخرى

تحديث

دفعتني موجة من الهبوط إلى التحقيق في هذا الأمر. إليك كيفية قيام قيم العائد (في Hex) GetKeyState يعمل. أنا لا أحصل على خاصية التبديل من مفتاح مثل k لكنني أفترض أن هناك بعض الحالة الافتراضية التي يلتزم بها.

0      Default State, key up
ff80    Default state, key down
1       Toggled, key up
ff81    Toggled, key down

لذا 0xff80 يتم إضافة كلما تحتاج البت العالي إلى ضبطها والبت المنخفضة المنطقية. حتى الآن نحن نعرف لماذا 0x80 يعمل النهج --- منذ أن تم تعيين الجزء العالي الترتيب من البايت السفلي أيضًا!

إجابة قديمة

getKeyState إرجاع أ SHORT حيث إذا كان البت العالي 1 وهذا يعني أن المفتاح يصل. ال bitwise و العملية مع 0x80 فقط يتحقق إذا كان هذا الشيء 1 منذ ثنائي 0x80 هو 10000000.

لذلك البيان GetKeyState('K') & 0x80 سيعود 0x80 إذا كانت القيمة العالية من القيمة التي تم إرجاعها بواسطة GetKeyState('K') هو 1 و 0 إذا كان البت العالي 0.

ال وثائق MSDN للوظيفة تنص على:

إذا كان البت العالي هو 1 ، فإن المفتاح قد انخفض ؛ خلاف ذلك ، الأمر كذلك.

يمنحك بت بت و 0x80 بتات عالية ، if يتحقق ما إذا كانت النتيجة هي صفر أو غير صفري وفي جوهرها تتحقق من قيمة هذا البت.

ومع ذلك ، يبدو هذا الفحص خطأً منذ ذلك الحين GetKeyState() إرجاع أ SHORT ولتحقق من جزء كبير من الترتيب القصير الذي تحتاجه إلى البت ومع 0x8000.
لذلك أقترح عليك التحقق من قيمة الإرجاع باستخدام تصحيح الأخطاء وتحقق من كيفية عمل هذا في الواقع.

أعتقد أنك تعني 0x8000 ، وليس 0x80. إذا كان هذا هو الحال ، فيجب عليك استشارة الوثائق (http://msdn.microsoft.com/en-us/library/ms646301(vs.85).aspx) الذي لديه ما يلي ليقول في قيمة إرجاع getKeyState:-

تحدد قيمة الإرجاع حالة المفتاح الظاهري المحدد ، على النحو التالي:

• إذا كان البت العالي هو 1 ، فإن المفتاح قد انخفض ؛ خلاف ذلك ، الأمر كذلك. • إذا كان البت المنخفض هو 1 ، يتم تبديل المفتاح. يتم تبديل المفتاح ، مثل مفتاح قفل Caps ، إذا تم تشغيله. المفتاح غير مطفأ إذا كان البت المنخفض هو 0. سيكون ضوء مؤشر مفتاح التبديل (إن وجد) على لوحة المفاتيح عند تبديل المفتاح ، وإيقاف تشغيل المفتاح.

0x80 لا يعني أي شيء بقدر ما أعرف

وفق وثائق

تحدد قيمة الإرجاع حالة المفتاح الافتراضي المحدد:
إذا كان البت العالي هو 1 ، فإن المفتاح قد انخفض ؛ خلاف ذلك ، الأمر كذلك.
إذا كان البت المنخفض هو 1 ، يتم تبديل المفتاح. يتم تبديل المفتاح ، مثل مفتاح قفل Caps ، إذا تم تشغيله. المفتاح غير مطفأ إذا كان البت المنخفض هو 0. سيكون ضوء مؤشر مفتاح التبديل (إن وجد) على لوحة المفاتيح عند تبديل المفتاح ، وإيقاف تشغيل المفتاح.

ربما مع مفتاح غير قابل للتغلب (مثل "k") ، الترتيب المنخفض (مصطلح غامض - ربما يعني 0x0080؟) وبتات عالية الترتيب (0x8000) تفعل نفس الشيء؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top