**JavaScript**
- DOM Manipulation
- Event Handling
- String Manipulation
---
شرکت Mockstar علاوه بر فروش بازی، تجهیزات جانبی مانند ماوس و کیبورد را نیز عرضه میکند؛
همچنین سامانهای برای تست صحت این اقلام دارد.
حال از پمبه خواسته شده است که قسمت تست کیبورد این سامانه را پیادهسازی کند.
این نکته را در نظر بگیرید که کیبوردهای Mockstar، در حال حاضر از کلیدهای `Windows` و `Fn` و `Context` پشتیبانی نمیکنند؛
بنابراین نیازی نیست که پمبه برای تست این کلیدها کدی بنویسد.
## توضیحات سوال
<details class="green">
<summary>تصویر خروجی نمونه</summary>
![خروجی نمونه](https://codestar.s3.ir-thr-at1.arvanstorage.com/challenge-05.png)
</details>
میتوانید برای بررسی دقیقتر نتیجۀ نهایی،
[این فیلم](https://codestar.s3.ir-thr-at1.arvanstorage.com/challenge-05.mp4)
را مشاهده کنید.
## پروژه اولیه
پروژه اولیه را از [این لینک](https://quera.ir/contest/assignments/41564/download_problem_initial_project/139933) دانلود کنید.
<details class="blue">
<summary>ساختار فایلها</summary>
```
initial-project-06.zip
├── dynamic.js
├── index.html
└── static.css
```
</details>
<details class="pink">
<summary>راهاندازی پروژه</summary>
+ ابتدا پروژۀ اولیه را دانلود و از حالت فشرده خارج کنید.
+ سپس فایل `index.html` را در مرورگر خود باز کنید.
</details>
## خواستههای مسئله
- تا زمانی که کاربر کلیدی را نگهداشته است (`keydown`)، المان متناظر با آن کلید باید کلاس `key--held` را داشته باشد
- پس از اینکه کاربر کلیدی را رها کرد (`keyup`)، المان متناظر با آن کلید باید کلاس `key--selected` را داشته باشد
## نکات
- شما تنها مجاز به تغییر در فایل `dynamic.js` هستید. تغییرات در باقی فایلها نادیده گرفته میشود.
- توجه کنید که داوری خودکار بر مبنای ساختار فایل `index.html` انجام میشود.
- برای ثبت پاسخ، پروژه را با ساختار زیر ارسال کنید.
```
[your-zip-file-name].zip
└── dynamic.js
```