# منح إدخال لوحة المفاتيح عقدًا واضحًا

> اجعل طريقة اللعب على لوحة المفاتيح قابلة للتنبؤ بها عن طريق اختيار المفاتيح الدلالية، والتعامل مع حالة الضغط والتحرير، وتجنب التعارضات مع الإعدادات الافتراضية للمتصفح.

- URL: https://oneshotgems.ai/ar/topics/keyboard-controls-for-games
- الفئة: لمطوري الألعاب
- النوع: دليل
- آخر تحديث: 5 أكتوبر 2026

يكون التحكم بلوحة المفاتيح موثوقًا عندما تكون لكل مفتاح وظيفة واضحة وتميز اللعبة بين ضغطة عابرة والاستمرار في الضغط على المفتاح. دوّن التعيين المقصود قبل التنفيذ: مثلًا، توجّه الأسهم الحركة، وينفذ مفتاح المسافة إجراءً، ويفتح Escape قائمة الإيقاف المؤقت فقط إذا كانت موجودة. بعد ذلك اختبر التركيز والتكرار والإفلات بدلًا من التحقق من ضغطة keydown واحدة فقط.

## اختيار المفاتيح حسب المعنى والتخطيط

استخدم KeyboardEvent.key عندما يجب أن يعتمد الإجراء على الحرف الناتج عن تخطيط لوحة مفاتيح المستخدم، واستخدم KeyboardEvent.code عندما يكون موضع المفتاح الفعلي أهم. يؤثر هذا الفرق في لوحات المفاتيح ذات التخطيطات المختلفة. وفّر تعيينًا متسقًا للمفاتيح وأظهره في التعليمات بدلًا من افتراض أن الجميع يستخدمون WASD.

لا تعترض المفاتيح عندما يكون التركيز في حقل نصي أو عنصر قابل للتحرير. امنع السلوك الافتراضي للمتصفح، مثل تمرير الصفحة، فقط عندما تتعامل مساحة اللعب فعليًا مع ذلك المفتاح. بذلك لن تبتلع اللعبة الكتابة العادية أو تعطل التنقل في المتصفح قبل دخول اللاعب إلى المنطقة التفاعلية.

## تتبّع حالة الضغط والإفلات

للحركة المستمرة، فعّل حالة الضغط على المفتاح عند keydown وامسحها عند keyup. قد يكرر المتصفح حدث keydown ما دام المفتاح مضغوطًا، لذا ينبغي أن تتجاهل الحركة التي تُنفّذ مرة واحدة، مثل القفز، التكرارات ما لم يكن التكرار مقصودًا. امسح المفاتيح المضغوطة عندما تفقد اللعبة التركيز أو تصبح النافذة غير نشطة، فقد لا يصل keyup إلى اللعبة بعد انتقال التركيز إلى مكان آخر.

اختبر الضغط على مفتاحين معًا، والضغط المطوّل، والنقر السريع، وفقدان اللعبة للتركيز ثم استعادته. تجاهل أحداث keydown المتكررة للإجراءات التي تنفذ مرة واحدة، إلا إذا كان التكرار مقصودًا. توثق MDN خصائص KeyboardEvent.key وKeyboardEvent.code وأنواع الأحداث؛ اختر الخاصية التي تناسب التعيين.

## أسئلة

**هل أستخدم KeyboardEvent.key أم KeyboardEvent.code للتحكم في اللعبة؟** استخدم KeyboardEvent.key عندما ينبغي أن تحدد قيمة الحرف أو تخطيط لوحة المفاتيح الإجراء. واستخدم KeyboardEvent.code عندما يكون موضع المفتاح الفعلي هو المقصود. وضّح اختيارك واختبر تخطيطات أخرى.

**لماذا ينبغي مسح المفاتيح المضغوطة عند فقدان الصفحة للتركيز؟** بعد انتقال التركيز، قد لا يرسل المتصفح حدث التحرير keyup إلى اللعبة. يمنع مسح حالة الإدخال استمرار الحركة عندما يعود اللاعب.

## اتبع فضولك

- [إدارة التركيز في ألعاب المتصفح](https://oneshotgems.ai/ar/topics/game-focus-management): اجعل إدخال لوحة المفاتيح والقوائم ومسارات العودة قابلة للتنبؤ بها من خلال منح اللعبة حالة تركيز مرئية واستعادة التركيز بعد إغلاق التراكبات.
- [اختبار إدخال لعبة المتصفح عبر الأجهزة](https://oneshotgems.ai/ar/topics/testing-game-input-devices): أنشئ مصفوفة اختبار إدخال صغيرة تغطي سلوك اللمس الحقيقي والماوس ولوحة المفاتيح والتوجيه بدلاً من الاعتماد على جلسة سطح مكتب واحدة.
- [منع المفاتيح العالقة في ألعاب المتصفح](https://oneshotgems.ai/ar/topics/preventing-stuck-game-keys): حرر الحركة المعلقة بأمان عندما يتغير التركيز أو الرؤية، واختبر المسارات غير الواضحة والإيقاف المؤقت وإعادة التشغيل التي قد تؤدي إلى توقف إدخال اللعبة.

## للمزيد من القراءة

- [MDN: حدث لوحة المفاتيح](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent)

---
الصفحة الأساسية: https://oneshotgems.ai/ar/topics/keyboard-controls-for-games
