سلام
می خوام برنامه ای بنویسم که با استفاده از arrow keys عملی را انجام بدم.مثلاً رشته ای رو با arrow keys در صفحه جابه جا کنم. اما چه جوری از کد ای کلیدها استفاده کنم؟
Printable View
سلام
می خوام برنامه ای بنویسم که با استفاده از arrow keys عملی را انجام بدم.مثلاً رشته ای رو با arrow keys در صفحه جابه جا کنم. اما چه جوری از کد ای کلیدها استفاده کنم؟
برای خوندن کلید هایی مثل Arrow Keys باید 2 بار از تابع getch پشت سر هم استفاده کنی.روش کار getch به این صورته که برای کاراکتر های معمولی مستقیما کد اسکی شون رو(به نوعی خودشون رو) برمیگردون اما وقتی یک کلید مثل Arrow Keys فشار داده میشه اگه 2 بار getch فراخوانی بشه بار اون 0 یا 0xE0 (اگه خروجی رو char بگیری بجاش 32-) و بار دوم Key Code دکمه ی زده شده رو برمیگردونه. برای اینکه بهتر متوجه بشی:
این کد تا وقتی که کلید Ctrl+Z رو نزنی ادامه پیدا میکنه و هر کلید دیگه ای که بزنی خروجی getch رو نشون میده.کد:#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int KeyCode;
KeyCode = getch();
while (KeyCode != 0x1A) // Sentinel is Ctrl+Z
{
cout << KeyCode << ' ';
KeyCode = getch();
}
return0;
}
اینم یه کد دیگه برای تشخیص کلید های کاراکتر های معمولی و کلید های Arrow و امثال اون ها :
یعنی وقتی KeyCode رو میگیری باید ببینی اگه 0 یا 0xE0 هست یه بار دیگه getch رو بزنی تا Keycode کلید مربوطه رو بگیری.کد:int main()
{
int KeyCode;
KeyCode = getch();
while (KeyCode != 0x1A) // Sentinel is Ctrl+Z
{
if (KeyCode == 0 || KeyCode == 0xE0)
{
KeyCode = getch(); // Get KeyCode
cout << "KeyCode of pressed key : " << KeyCode << endl;
}
else
{
cout << "ASCII code of character : " << KeyCode << endl;
}
KeyCode = getch();
}
return 0;
}