C/C++
Какой код у стрелок с++
с помощью _getch() считываю нажатия для навигации по пунктам меню, W и S назначил типа вверх вниз, еще хотел стрелочки назначить. Но когда я решил посмотреть какой у них код (считывал нажатие и сразу выводил в консоль), то у всех 4 стрелок он 224. И че делать
Достаточно было вбить в поисковик, и наткнулся бы на форум где говорят что стрелочки используют расширенную кодировку в интерпретации _getch. Тоесть если гетчь поймал код 224, то нужно еще раз его опросить для уточняющего кода. И он уже будет разным для разных стрелочек.
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, второй возвращает "скан код"
...
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
Похожие вопросы
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Написать код на языке C++
- Как оптимизировать код, чтобы не было превышения по времени к задаче (C++, динамическое программирование)?
- Как оптимизировать код, чтобы не было превышения по времени к задаче (C++)?
- Ошибки в коде. Почему не работает и как сделать чтобы заработало ?
- Написать код на языке си
- Помогите с кодом C++
- Как можно доработать код С++?
- Объясните код с++
- Помогите с кодом с++