Подтвердить что ты не робот

Каковы значения ascii вверх по левому краю?

Каковы значения ASCII для клавиш со стрелками? (Вверх/вниз/влево/вправо)

4b9b3361

Ответ 1

Для этих ключей не существует настоящих ascii-кодов для этих ключей, вам нужно будет проверить коды сканирования для этих ключей, которые называются клавишами Make and Break в соответствии с helppc информации. Причина, по которой коды звучат "ascii" , заключается в том, что коды клавиш обрабатываются старым прерыванием BIOS 0x16 и прерыванием клавиатуры 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

Следовательно, просматривая коды, следующие за E0 для Make key code, такие как 0x50, 0x4B, 0x4D, 0x48 соответственно, вот где возникает путаница при просмотре ключевых кодов и рассмотрении их как "ascii" . ответ не, поскольку платформа меняется, ОС меняется, в Windows она будет иметь виртуальный key code, соответствующий этим клавишам, не обязательно такой же, как коды BIOS, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT.. это будет найдено в вашем файле заголовка С++ windows.h, как я помню в папке с SDK include.

Не полагайтесь на коды клавиш, чтобы иметь одинаковые коды "идентичного ascii", показанные здесь, поскольку операционная система будет перепрограммировать весь код BIOS в зависимости от того, какая ОС сочтет нужным, естественно, что ожидалось, потому что, поскольку код BIOS 16 бит и ОС (в настоящее время это 32-битный защищенный режим), конечно, эти коды из BIOS больше не будут действительны.

Следовательно, первоначальное прерывание клавиатуры 0x9 и прерывание BIOS 0x16 будут стерты из памяти после загрузки BIOS, и когда ОС защищенного режима начнет загружаться, она перезапишет эту область памяти и заменит ее собственным 32-битным защищенным режимом обработчиков для обработки этих кодов сканирования клавиатуры.

Вот пример кода из старых дней программирования DOS, используя 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;
}

Эта процедура фактически вернула коды вверх, вниз 328 и 336 соответственно (у меня нет кода для левого и правого на самом деле, это в моей старой книге повара!). Фактический scancode находится в lo. Ключи, отличные от AZ, 0-9, имели код сканирования 0 через процедуру bioskey.... причина 256 добавлена, потому что переменная lo имеет код 0, а переменная hi имеет сканировать код и добавляет к нему 256, чтобы не путать коды "ascii" ...

Ответ 2

Короче:

левая стрелка: 37
стрелка вверх: 38
стрелка вправо: 39
стрелка вниз: 40

Ответ 3

Действительно, ответ на этот вопрос зависит от того, какую операционную систему и язык программирования вы используете. Не существует "кода ASCII" как такового. Операционная система обнаруживает, что вы нажимаете клавишу со стрелкой и запускаете событие, которое могут выполнять программы. Например, на современных машинах Windows вы получите событие WM_KEYUP или WM_KEYDOWN. Он обычно передает 16-битное значение, чтобы определить, какой ключ был нажат.

Ответ 4

Значения ascii:

  • Клавиша "Вверх" - 224         72

  • Клавиша "Вниз" - 224           80

  • Левая клавиша - 224           75

  • Правая клавиша - 224            77

Каждый из них имеет два целочисленных значения для значения ascii, поскольку они являются специальными ключами, в отличие от кода для $, который равен просто 36. Эти 2-байтовые специальные клавиши обычно имеют первую цифру как 224, так и 0. это можно найти с помощью F # в окнах или с помощью клавиши удаления.

EDIT: на самом деле это может быть unicode, оглядываясь назад, но они работают.

Ответ 5

Если вы программируете в OpenGL, используйте GLUT. Следующая страница должна помочь: 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

Вы можете проверить это, скомпилировав и запустив эту небольшую программу на С++.

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

Ответ 7

Вы можете использовать специальную функцию для активации навигации для своей цели программирования. Ниже приведен пример кода для него.

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

Добавьте это в свою основную функцию

glutSpecialFunc(Specialkey);

Надеюсь, что это решит проблему!

Ответ 8

Коды Ascii для символов стрелки следующие: ↑ 24 ↓ 25 → 26 ← 27

Ответ 9

Получение значений с клавиатуры под окнами показывает следующее:

  • Левая стрелка = 2424832
  • Стрелка вправо = 2555904
  • Стрелка вверх = 2490368
  • Стрелка вниз = 2621440