C/C++

Какой код у стрелок с++

с помощью _getch() считываю нажатия для навигации по пунктам меню, W и S назначил типа вверх вниз, еще хотел стрелочки назначить. Но когда я решил посмотреть какой у них код (считывал нажатие и сразу выводил в консоль), то у всех 4 стрелок он 224. И че делать
Достаточно было вбить в поисковик, и наткнулся бы на форум где говорят что стрелочки используют расширенную кодировку в интерпретации _getch. Тоесть если гетчь поймал код 224, то нужно еще раз его опросить для уточняющего кода. И он уже будет разным для разных стрелочек.
Женёк Балинец
Женёк Балинец
51 416
Лучший ответ
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/getch-getwch?redirectedfrom=MSDN&view=msvc-160
...
The _getch and _getwch functions read a single character from the console without echoing the character. None of these functions can be used to read CTRL+C. To read a function key or arrow key, each function must be called twice. The first call returns 0 or 0xE0. The second call returns the key scan code.
...
Для "стрелочек" функция должна быть вызвана дважды. первый вызов возвращает 0 или 0xE0, второй возвращает "скан код"
 #include 
#include

enum
{
KEY_UP = 72,
KEY_DOWN = 80,
KEY_LEFT = 75,
KEY_RIGHT = 77,
};

int main()
{
while(1)
{
switch(_getch()) {
case KEY_UP: printf("Up\n"); break;
case KEY_DOWN: printf("Down\n"); break;
case KEY_LEFT: printf("Left\n"); break;
case KEY_RIGHT: printf("Right\n"); break;
}
}

return 0;
}
ф-ции *getch не предназначены и не могут считывать скан-коды клавиатуры, они просто забирают из буфера ввода символы, а далеко не все клавиши их туда помещают.

 #include  
#include
using namespace std;

int main(void)
{
while (true) {
if (GetKeyState(VK_LEFT) & 0x8000) {
cout
AS
Akrombek Salimov
30 155