Считывание нажатия клавиш вне зависимости от раскладки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

typedef{int x; int y;} crd;
 
int control(crd *playerCrd)
{
    switch(getch())
    {
        case 87: /*должна быть W*/
            playerCrd->x++;
            return 2;
        case 27: /*ESC*/
            return 1;
        default:
            return 0;
    }
}
почему на 27 функция реагирует, а на 87 - нет? (если вместо 87 написать 'w', то функция реагирует). Код клавиш брал отсюда: http://netcode.ru/cpp/?artID=234 P.s. Пытаюсь решить проблему считывания клавиш вне зависимости от раскладки .

Решение задачи: «Считывание нажатия клавиш вне зависимости от раскладки»

textual
Листинг программы
  switch(toupper(getc(stdin)))
    {
        case 0x57: /*должна быть W*/
            printf("gav-gav\n");
            break;
        case 27: /*ESC*/
            printf("meo-meo\n");
            break;
        default:
            break;
    }

Объяснение кода листинга программы

В этом коде используется операция считывания символа из стандартного ввода (stdin) с помощью функции getc. Затем, с помощью функции toupper, преобразуется в верхний регистр. Далее, с помощью оператора switch, проверяется, какой символ был считан. Если это 'W', то выводится gav-gav, если это 'ESC', то выводится meo-meo. Если считанный символ не равен 'W' или 'ESC', то ничего не происходит.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы