Jakie są wartości ascii w górę w dół w lewo w prawo?

Jakie są wartości ASCII klawiszy strzałek? (góra / dół / lewo / prawo)

Author: derobert, 2010-05-20

9 answers

Nie ma prawdziwych kodów ascii dla tych kluczy jako takich, musisz sprawdzić kody skanowania tych kluczy, znane jako kody Make and Break zgodnie z informacjami helppc. Powodem, dla którego kody brzmią "ascii", jest to, że kody klawiszy są obsługiwane przez stare przerwanie BIOS-u 0x16 i przerwanie klawiatury 0x9.

                 Normal Mode            Num lock on
                 Make    Break        Make          Break
Down arrow       E0 50   E0 D0     E0 2A E0 50   E0 D0 E0 AA
Left arrow       E0 4B   E0 CB     E0 2A E0 4B   E0 CB E0 AA
Right arrow      E0 4D   E0 CD     E0 2A E0 4D   E0 CD E0 AA
Up arrow         E0 48   E0 C8     E0 2A E0 48   E0 C8 E0 AA

Dlatego patrząc na kody następujące po E0 dla kodu klucza Make, takie jak odpowiednio 0x50, 0x4b, 0x4d, 0x48, to jest miejsce, w którym powstaje zamieszanie patrzenie na kody kluczy i traktowanie ich jako 'ascii'... odpowiedź brzmi nie ponieważ platforma jest różna, System Operacyjny jest różny, pod Windows będzie miał kod klucza Wirtualnego odpowiadający tym klawiszom, niekoniecznie taki sam jak kody BIOS, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT.. można to znaleźć w oknach plików nagłówkowych C++.h, o ile pamiętam w folderze dołączonym SDK.

Nie polegaj na kodach kluczy, aby miały te same "identyczne kody ascii" pokazane tutaj, ponieważ system operacyjny będzie przeprogramuj cały kod BIOS w dowolny sposób, jaki OS uzna za odpowiedni, oczywiście można się tego spodziewać, ponieważ ponieważ kod BIOS jest 16-bitowy, a system operacyjny (obecnie jest 32-bitowy tryb chroniony), oczywiście te kody Z BIOS-u nie będą już ważne.

W związku z tym oryginalne przerwanie klawiatury 0x9 i przerwanie BIOSu 0X16 zostaną usunięte z pamięci po załadowaniu BIOSu i gdy system operacyjny w trybie chronionym rozpocznie ładowanie, zastąpi ten obszar pamięci i zastąpi go własnym 32-bitowym obsługa trybu chronionego do radzenia sobie z tymi kodami skanowania klawiatury.

Oto przykład kodu ze starych czasów programowania DOS, używającego Borland C v3:
#include <bios.h>
int getKey(void){
    int key, lo, hi;
    key = bioskey(0);
    lo = key & 0x00FF;
    hi = (key & 0xFF00) >> 8;
    return (lo == 0) ? hi + 256 : lo;
}

Ta rutyna faktycznie, zwrócił kody do góry, dół jest 328 i 336 odpowiednio, (nie mam kodu do lewej i prawej faktycznie, to jest w mojej starej książce kucharskiej!) Rzeczywisty scancode znajduje się w zmiennej lo. Klucze inne niż A-Z, 0-9, miały kod skanowania 0 za pomocą procedury bioskey.... dodano powód 256, ponieważ zmienna lo ma kod 0, a zmienna hi ma kod skanowania i dodaje do niej 256, aby nie mylić z kodami 'ascii'...

 20
Author: t0mm13b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 21:40:05

W skrócie:

Strzałka w lewo: 37
strzałka w górę: 38
strzałka w prawo: 39
strzałka w dół: 40

 52
Author: Christopher Richa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 17:32:15

Tak naprawdę odpowiedź na to pytanie zależy od tego, jakiego systemu operacyjnego i języka programowania używasz. Nie ma "kodu ASCII" jako takiego. System operacyjny wykrywa naciśnięcie klawisza strzałki i uruchamia zdarzenie, które programy mogą przechwycić. Na przykład na nowoczesnych maszynach z systemem Windows otrzymamy Zdarzenie WM_KEYUP lub WM_KEYDOWN. Przekazuje ona 16-bitową wartość zwykle w celu określenia, który klucz został wciśnięty.

 11
Author: Icemanind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 17:33:33

Wartości ascii z:

  1. Klucz do góry-224 72

  2. Klucz do dołu-224 80

  3. Klawisz Lewy-224 75

  4. Klucz Prawy-224 77

Każda z nich ma dwie wartości całkowite dla wartości ascii, ponieważ są to specjalne klucze, w przeciwieństwie do kodu$, który jest po prostu 36. Te 2-bajtowe klucze specjalne zwykle mają pierwszą cyfrę jako 224 lub 0. można to znaleźć za pomocą F # w windows, lub klawisz delete.

EDIT: to może być unicode patrząc wstecz, ale działają.

 8
Author: Chris - Jr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-30 15:05:56

Jeśli programujesz w OpenGL, użyj GLUT. Poniższa strona powinna pomóc: http://www.lighthouse3d.com/opengl/glut/index.php?5

GLUT_KEY_LEFT   Left function key
GLUT_KEY_RIGHT  Right function key
GLUT_KEY_UP     Up function key
GLUT_KEY_DOWN   Down function key

 

void processSpecialKeys(int key, int x, int y) {

switch(key) {
    case GLUT_KEY_F1 : 
            red = 1.0; 
            green = 0.0; 
            blue = 0.0; break;
    case GLUT_KEY_F2 : 
            red = 0.0; 
            green = 1.0; 
            blue = 0.0; break;
    case GLUT_KEY_F3 : 
            red = 0.0; 
            green = 0.0; 
            blue = 1.0; break;
}
}
 6
Author: Steven,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 17:39:25

Możesz to sprawdzić kompilując i uruchamiając ten mały program C++.

#include <iostream>
#include <conio.h>
#include <cstdlib>

int show;
int main()
{    
while(true)
    {
    int show = getch();
    std::cout << show;
    }
getch(); // Just to keep the console open after program execution  
}
 4
Author: user2204073,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-30 11:22:21

Możesz użyć specjalnej funkcji do aktywacji nawigacji w celu programowania. Poniżej znajduje się przykładowy kod dla niego.

   void Specialkey(int key, int x, int y)
    {
    switch(key)
    {
    case GLUT_KEY_UP: 
/*Do whatever you want*/        
         break; 
    case GLUT_KEY_DOWN: 
/*Do whatever you want*/
                 break;
    case GLUT_KEY_LEFT:
/*Do whatever you want*/
                 break;
    case GLUT_KEY_RIGHT:
/*Do whatever you want*/
                 break;
    }

    glutPostRedisplay();
    }

Dodaj to do swojej głównej funkcji

glutSpecialFunc(Specialkey);
Mam nadzieję, że to rozwiąże problem!
 1
Author: Rajeev Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-22 11:47:57

Kody Ascii dla znaków strzałek są następujące: ↑ 24 ↓ 25 → 26 ← 27

 0
Author: Paul Bently,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-26 23:00:56

Pobranie wartości z klawiatury pod windows pokazuje co następuje:

  • Strzałka W Lewo = 2424832
  • Strzałka W Prawo = 2555904
  • Strzałka W Górę = 2490368
  • Strzałka W Dół = 2621440
 0
Author: Moti Hamo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-02 08:23:40