کد های اسکی

the_king

مدیرکل انجمن
سلام کسی کد اسکی کلید های بالا و پایین و چپ و راست رو داره؟

کلید ها کد ASCII ندارند، کد ASCII برای کاراکتر ها است، نه کلید ها. کلید ها دو تا کد دارند، یکی بایت یا بایت هایی است که با فشار دادن شون
در بافر صفحه کلید قرار می گیره و بهش (Char Code(s می گویند و دیگری Scan Code ئه که یک بایته. اگر کاربرد تون برای توابعی مثل ()getch است، شما Char Codes
را می خواهید که در مورد کلید های مکان نما مقدار شون دو بایتی است، بایت اول شون 0 یا 224 است و بایت دوم یک مقدار غیر صفر که فرق می کنه. برای اینجور کلید ها
باید دو تا ()getch پشت سر هم اجرا بشه، اولی مقدار 0 یا 224 رو بر می گردونه، وقتی دادید مقدار 0 یا 224 ئه، متوجه می شوید که با یک کلید خاص مواجه شده اید و باید
مجددا یک ()getch دیگه اجرا بشه تا بایت دوم بدست بیاد و بر اساس این مقدار بایت دوم مشخص بشه که کدوم کلید فشار داده شده.

کد:
Arrow Key Left		224, 75 	0, 75
Arrow Key Right		224, 77		0, 77
Arrow Key Up		224, 72		0, 72
Arrow Key Down		224, 80		0, 80

مثلا :
کد:
#include <iostream.h>
#include <conio.h>

int main()
{
    int ch;
    cout << "Press any key (ESC to exit)." << endl;
    do
    {
        ch = getch();
        if ((ch == 0) || (ch == 224))
        {
            ch = getch();
            switch (ch)
            {
                case 75 :
                    cout << "Left ";
                    break;
                case 77 :
                    cout << "Right ";
                    break;
                case 72 :
                    cout << "Up ";
                    break;
                case 80 :
                    cout << "Down ";
                    break;
            }
        }
    } while (ch != 27);
    return 0;
}
 

s.1.8.1.18

New Member
کلید ها کد ASCII ندارند، کد ASCII برای کاراکتر ها است، نه کلید ها. کلید ها دو تا کد دارند، یکی بایت یا بایت هایی است که با فشار دادن شون
در بافر صفحه کلید قرار می گیره و بهش (Char Code(s می گویند و دیگری Scan Code ئه که یک بایته. اگر کاربرد تون برای توابعی مثل ()getch است، شما Char Codes
را می خواهید که در مورد کلید های مکان نما مقدار شون دو بایتی است، بایت اول شون 0 یا 224 است و بایت دوم یک مقدار غیر صفر که فرق می کنه. برای اینجور کلید ها
باید دو تا ()getch پشت سر هم اجرا بشه، اولی مقدار 0 یا 224 رو بر می گردونه، وقتی دادید مقدار 0 یا 224 ئه، متوجه می شوید که با یک کلید خاص مواجه شده اید و باید
مجددا یک ()getch دیگه اجرا بشه تا بایت دوم بدست بیاد و بر اساس این مقدار بایت دوم مشخص بشه که کدوم کلید فشار داده شده.

کد:
Arrow Key Left        224, 75     0, 75
Arrow Key Right        224, 77        0, 77
Arrow Key Up        224, 72        0, 72
Arrow Key Down        224, 80        0, 80

مثلا :
کد:
#include <iostream.h>
#include <conio.h>

int main()
{
    int ch;
    cout << "Press any key (ESC to exit)." << endl;
    do
    {
        ch = getch();
        if ((ch == 0) || (ch == 224))
        {
            ch = getch();
            switch (ch)
            {
                case 75 :
                    cout << "Left ";
                    break;
                case 77 :
                    cout << "Right ";
                    break;
                case 72 :
                    cout << "Up ";
                    break;
                case 80 :
                    cout << "Down ";
                    break;
            }
        }
    } while (ch != 27);
    return 0;
}

خ ممنون از پاسخ عالیتون. من میخوام از این کلیدها تو برنامه ام استفاده کنم! باید چه جوری این کار رو انجام بدم؟ یعنی میخوام برنامه ام با این کلیدها حرکت کنه.
2 بار getch() بذارم؟!
 

the_king

مدیرکل انجمن
خ ممنون از پاسخ عالیتون. من میخوام از این کلیدها تو برنامه ام استفاده کنم! باید چه جوری این کار رو انجام بدم؟ یعنی میخوام برنامه ام با این کلیدها حرکت کنه.
2 بار getch() بذارم؟!
دقیقا از کدی که داخل حلقه do while نوشته ام (بدون do while) استفاده کنید، صرفا بجای cout کاری که می خواهید انجام می دهید.
 

MPERSIA4

Member
کلید ها کد ASCII ندارند، کد ASCII برای کاراکتر ها است، نه کلید ها. کلید ها دو تا کد دارند، یکی بایت یا بایت هایی است که با فشار دادن شون
در بافر صفحه کلید قرار می گیره و بهش (Char Code(s می گویند و دیگری Scan Code ئه که یک بایته. اگر کاربرد تون برای توابعی مثل ()getch است، شما Char Codes
را می خواهید که در مورد کلید های مکان نما مقدار شون دو بایتی است، بایت اول شون 0 یا 224 است و بایت دوم یک مقدار غیر صفر که فرق می کنه. برای اینجور کلید ها
باید دو تا ()getch پشت سر هم اجرا بشه، اولی مقدار 0 یا 224 رو بر می گردونه، وقتی دادید مقدار 0 یا 224 ئه، متوجه می شوید که با یک کلید خاص مواجه شده اید و باید
مجددا یک ()getch دیگه اجرا بشه تا بایت دوم بدست بیاد و بر اساس این مقدار بایت دوم مشخص بشه که کدوم کلید فشار داده شده.

کد:
Arrow Key Left        224, 75     0, 75
Arrow Key Right        224, 77        0, 77
Arrow Key Up        224, 72        0, 72
Arrow Key Down        224, 80        0, 80

مثلا :
کد:
#include <iostream.h>
#include <conio.h>

int main()
{
    int ch;
    cout << "Press any key (ESC to exit)." << endl;
    do
    {
        ch = getch();
        if ((ch == 0) || (ch == 224))
        {
            ch = getch();
            switch (ch)
            {
                case 75 :
                    cout << "Left ";
                    break;
                case 77 :
                    cout << "Right ";
                    break;
                case 72 :
                    cout << "Up ";
                    break;
                case 80 :
                    cout << "Down ";
                    break;
            }
        }
    } while (ch != 27);
    return 0;
}
سلام
دادا بازم ممون
ولی این کد رو چطو تو برنامم بذارم که بتونم انتخابای دیگه ای هم داشته باشم؟
من این کد را واسه صفحه عوض کردن لازم داشتم، حالا صفحه عوض میشه ولی کلیدای دیگه کار نمیکنن؟
مثلا تو هر صفحه چنت گزینه واسه انتخاب هست که باشماره کار میکنن ولی وقتی این کد رو گذاشتم نتونستم از شماره ها استفاده کنم
میدونم بخاطر
getch
هستش ولی نمیدونم چطو درستش کنم
خواهشمندم به یاری ام بشتابید
با سپاس فراوان
 

the_king

مدیرکل انجمن
سلام
دادا بازم ممون
ولی این کد رو چطو تو برنامم بذارم که بتونم انتخابای دیگه ای هم داشته باشم؟
من این کد را واسه صفحه عوض کردن لازم داشتم، حالا صفحه عوض میشه ولی کلیدای دیگه کار نمیکنن؟
مثلا تو هر صفحه چنت گزینه واسه انتخاب هست که باشماره کار میکنن ولی وقتی این کد رو گذاشتم نتونستم از شماره ها استفاده کنم
میدونم بخاطر
getch
هستش ولی نمیدونم چطو درستش کنم
خواهشمندم به یاری ام بشتابید
با سپاس فراوان

بعد از اون if اول یک else اضافه کنید، فرضا برای کلید های Enter و Space و X و 1 و 2 :
کد:
        if ((ch == 0) || (ch == 224))
        {
            ch = getch();
            switch (ch)
            {
                case 75 :
                    cout << "Left ";
                    break;
                case 77 :
                    cout << "Right ";
                    break;
                case 72 :
                    cout << "Up ";
                    break;
                case 80 :
                    cout << "Down ";
                    break;
            }
        }
[COLOR="#0000FF"]        else
        {
            switch (ch)
            {
                case '1' :
                    cout << "1 ";
                    break;
                case '2' :
                    cout << "2 ";
                    break;
                case 'x' :
                    cout << "X ";
                    break;
                case 32 :
                    cout << "Space ";
                    break;
                case 13 :
                    cout << "Enter ";
                    break;
            }
        }[/COLOR]
 

MPERSIA4

Member
بازم دمت گرم
راستش این کار رو کرده بودم ولی نمیدونم چرا جواب نمیداد
ممنون
 

جدیدترین ارسال ها

بالا