'How to pause my console on the desired key

I want to pause my program on the 0x32, 0x33 and 0x34 key and make it work again on the 0x31 key, how can I? I used this code to pause on the 0x32 key, it's working, but I can't get it back to work on the desired key



Solution 1:[1]

To summarize what @user4581301 suggested:

#include <conio.h>
...

if (GetAsyncKeyState(0x32) || GetAsyncKeyState(0x33) || GetAsyncKeyState(0x34)) {
    while (_getch() != 0x31)
        ;
}

Solution 2:[2]

If your application is a console application, I implemented the function you want through loop. If it's a desktop application, you can refer to my code logic.

#include <iostream>
#include<cstdlib>
#include<time.h>
#include<Windows.h>
#include<conio.h>

using namespace std;
int main()
{
while (true) {

    for (int i = 0; i < 5; ++i) {
        if (GetAsyncKeyState(gun_keys[i]) && (gun != guns[i])) {
            gun = guns[i];

            system("cls");

            gun_delay = GetTime(gun->rpm);
            gun_index = 0;

            break;
        }
    }

    if (GetAsyncKeyState(VK_DELETE)) //Bind key, what close this program
    {
        ExitProcess(-1); //Exit Process
    }

    if (GetAsyncKeyState(MOUSEEVENTF_MOVE) < 0) {
        if (!is_mouse_down) {
            is_mouse_down = true;
            if (gun != nullptr)
                gun_index = 0;
        }
        if (gun != nullptr && gun_index != gun->len) {
            mouse_event(MOUSEEVENTF_MOVE, long(gun->pattner[gun_index][0] * K), long(gun->pattner[gun_index][1] * K), 0, 0);
            ++gun_index;
            Sleep(gun_delay);
            continue;
        }
    }
    else
        is_mouse_down = false;

    if (_kbhit())//Checks if there is currently keyboard input and returns a non-zero value if there is, or 0 otherwise
    {
        int ch = _getch();
        if (ch == 0x32 || ch == 0x33 || ch == 0x34)
        {
            ch = _getch();//It waits for input and pauses the program
        }
        if (ch != 0x31)
        {
            while (true)
            {
                if (_kbhit())
                {
                    int ch = _getch();
                    if (ch == 0x31) break;
                }
            }
        }
        
        fflush(stdin);//Clear the input buffer
    }

    Sleep(150);
}
return 0;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2