it-swarm.com.de

Was sind die ASCII-Werte von links oben rechts?

Was sind die ASCII - Werte der Pfeiltasten? (rauf runter links rechts)

37
Laz

Es gibt keine echten ASCII-Codes für diese Schlüssel. Sie müssen die Scan-Codes für diese Schlüssel auschecken, die als Make- und Break-Schlüsselcodes gemäß den Informationen von helppc bekannt sind. Der Grund, warum die Codes "ascii" klingen, liegt darin, dass die Tastencodes vom alten BIOS-Interrupt 0x16 und vom Keyboard-Interrupt 0x9 verarbeitet werden. 

 Normalmodus Num-Taste ein 
 Make Break Make Break 
 Pfeil nach unten E0 50 E0 D0 E0 2A E0 50 E0 D0 E0 AA 
 Linkspfeil E0 4B E0 CB E0 2A E0 4B E0 CB E0 AA 
 Rechtspfeil E0 4D E0 CD E0 2A E0 4D E0 CD E0 AA 
 Pfeil nach oben E0 48 E0 C8 E0 2A E0 48 E0 C8 E0 AA 

Betrachten Sie also die Codes, die auf E0 für den Make-Schlüsselcode folgen, z. B. 0x50, 0x4B, 0x4D bzw. 0x48. Hier entsteht die Verwirrung, wenn Sie Schlüsselcodes betrachten und sie als 'ascii' behandeln ... die Antwort lautet nicht, da die Plattform variiert, das Betriebssystem variiert. Unter Windows würde es einen virtuellen Schlüsselcode für diese Schlüssel geben, der nicht unbedingt mit den BIOS-Codes VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT usw. übereinstimmt gefunden in der Header-Datei Ihres C++ windows.h, wie ich mich im Include-Ordner des SDK erinnere.

Verlassen Sie sich nicht auf die Schlüsselcodes, um dieselben "identischen ASCII-Codes" anzuzeigen, da das Betriebssystem den gesamten BIOS-Code in dem Betriebssystem neu programmiert, was das Betriebssystem als passend erachtet. Dies ist natürlich zu erwarten, da der BIOS-Code 16 Bit ist Im Betriebssystem (heutzutage sind es 32-Bit-geschützter Modus), sind diese Codes aus dem BIOS natürlich nicht mehr gültig.

Daher würden der ursprüngliche Tastaturinterrupt 0x9 und der BIOS-Interrupt 0x16 nach dem Laden durch das BIOS aus dem Speicher gelöscht. Wenn das Betriebssystem im geschützten Modus zu laden beginnt, wird der Speicherbereich überschrieben und durch eigene 32-Bit-Handler für den geschützten Modus ersetzt mit diesen Tastaturscancodes.

Hier ist ein Codebeispiel aus der alten Zeit der DOS-Programmierung mit Borland C v3:

 # include <bios.h> 
 int getKey (void) {
 int key, lo, hi; 
 key = bioskey (0); 
 lo = Schlüssel & 0x00FF; 
 hi = (Taste & 0xFF00) >> 8; 
 return (lo == 0)? hi + 256: lo; 
} 

Diese Routine hat die Codes für up zurückgegeben, down ist 328 bzw. 336 (der Code für links und rechts ist in meinem alten Kochbuch nicht vorhanden!) Der eigentliche Scancode befindet sich in der Variablen lo. Andere Schlüssel als AZ (0-9) hatten über die bioskey-Routine einen Scan-Code 0. Der Grund 256 wird hinzugefügt, da die Variable lo den Code 0 hat und die Variable hi den Scan-Code hätte und 256 addiert um es nicht mit den 'ascii' codes zu verwechseln ...

21
t0mm13b

Zusamenfassend:

linker Pfeil: 37 
pfeil nach oben: 38
rechter Pfeil: 39
pfeil nach unten: 40

52

Die Antwort auf diese Frage hängt wirklich davon ab, welches Betriebssystem und welche Programmiersprache Sie verwenden. Es gibt keinen "ASCII-Code" an sich. Das Betriebssystem erkennt, dass Sie eine Pfeiltaste drücken, und löst ein Ereignis aus, das Programme erfassen können. Auf modernen Windows-Computern würden Sie beispielsweise ein WM_KEYUP- oder WM_KEYDOWN-Ereignis erhalten. Normalerweise wird ein 16-Bit-Wert übergeben, um zu bestimmen, welche Taste gedrückt wurde.

11
Icemanind

Die ASCII-Werte der:

  1. Aufwärts-Taste - 224 72

  2. Abwärts-Taste - 224 80

  3. Linke Taste - 224 75

  4. Rechte Taste - 224 77

Jeder dieser Werte hat zwei ganzzahlige Werte für den ASCII-Wert, da es sich um Sondertasten handelt, im Gegensatz zum Code für $, der einfach 36 ist. Diese 2-Byte-Sondertasten haben normalerweise die erste Ziffer entweder als 224 oder als 0. Dies kann sein mit der F # in Windows oder der Löschtaste gefunden. 

BEARBEITEN: Dies kann eigentlich ein Rückblick auf Unicode sein, aber sie funktionieren.

8
Chris - Jr

Wenn Sie in OpenGL programmieren, verwenden Sie GLUT. Die folgende Seite sollte helfen: 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
Steven

Sie können dies überprüfen, indem Sie dieses kleine C++ - Programm kompilieren und ausführen.

#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  
}
5
user2204073

Sie können die spezielle Funktion zur Aktivierung der Navigation zu Programmierzwecken nutzen. Unten ist der Beispielcode dafür.

   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();
    }

Fügen Sie dies Ihrer Hauptfunktion hinzu

glutSpecialFunc(Specialkey);

Hoffe das wird das Problem lösen!

1
Rajeev Kumar

Die ASCII-Codes für Pfeilzeichen sind folgende: ↑ 24 ↓ 25 → 26 ← 27

0
Paul Bently

Das Abrufen der Werte von der Tastatur unter Windows zeigt Folgendes:

  • Linker Pfeil = 2424832 
  • Rechter Pfeil = 2555904 
  • Pfeil nach oben = 2490368 
  • Abwärtspfeil = 2621440
0
Moti Hamo