有没有办法检查每个输入是否按下了 Shift THEN 控件?
Is there a way to check for shift held down THEN control held down for each input?
我正在尝试使用 _getch 获取键盘敲击以增加游戏中的金钱。如果我想让钱增加得更快,在 10 秒内按住 shift 并按住 100 的控制,最好的方法是什么?如果我只是检查班次,这很容易,但是如果我想检查班次,那么之后的控件将不起作用。
例如检查增加 1 或 10 我会做这样的事情
key = _getch();
if (key == 224)
{
key = _getch();
if (key == 75) // left arrow
{
if (GetAsyncKeyState(VK_SHIFT)
for (int i = 0; i < 10; i++) // go left 10 times
left();
else
left();
}
}
如果我添加一个 else if 来控制 100's,它将不起作用。很可能是因为 运行 GetAsyncKeyState 函数再次导致它无法正确读取密钥状态。
else if (GetAsyncKeyState(VK_CONTROL)
for (int i = 0; i < 100; i++) // go left 100 times
left();
任何可能的解决方法?谢谢!
"if(GetAsyncKeyState(VK_SHIFT) && GetAsyncKeyState(VK_CONTROL))"怎么样?您不能使用一个 GAKS 调用来检查多个密钥。
尝试以下代码以确保您可以同时使用多个键。硬件在识别同时按下多个按键方面存在限制,因此请牢记这一点。
主要调用函数,
while(!keydown(VK_LCONTROL))
{
if(keydown(VK_LCONTROL) && keydown(VK_NUMPAD1) && keydown(VK_UP))
{
cout << "combo pressed!" << endl;
}
Sleep(10);
}
功能按键,
BOOL keydown(int key)
{
return (GetAsyncKeyState(key) & 0x8000) != 0;
}
(GetAsyncKeyState(key) & 0x8000) != 0;我们只对第 15 位感兴趣,所以检查一下这个。有关详细信息,请查看相应位的信息。
尝试组合键,例如 control+numberpad1+Up 用于 1 的增量,control+numberpad2+Up 用于 10 的增量等。
原来控制阻止了控制台"flushing"。所以,这只是控制本身导致错误的问题,我决定使用 while-shift 保持 10 秒和 while-tab 保持 100 秒。如果有一种使用 alt 的方法,但我认为没有,我会使用它。这只是我愚蠢的一个典型案例,花了大约 3 个小时才意识到是键绑定与 cmd 提示符交互导致了问题。
我正在尝试使用 _getch 获取键盘敲击以增加游戏中的金钱。如果我想让钱增加得更快,在 10 秒内按住 shift 并按住 100 的控制,最好的方法是什么?如果我只是检查班次,这很容易,但是如果我想检查班次,那么之后的控件将不起作用。
例如检查增加 1 或 10 我会做这样的事情
key = _getch();
if (key == 224)
{
key = _getch();
if (key == 75) // left arrow
{
if (GetAsyncKeyState(VK_SHIFT)
for (int i = 0; i < 10; i++) // go left 10 times
left();
else
left();
}
}
如果我添加一个 else if 来控制 100's,它将不起作用。很可能是因为 运行 GetAsyncKeyState 函数再次导致它无法正确读取密钥状态。
else if (GetAsyncKeyState(VK_CONTROL)
for (int i = 0; i < 100; i++) // go left 100 times
left();
任何可能的解决方法?谢谢!
"if(GetAsyncKeyState(VK_SHIFT) && GetAsyncKeyState(VK_CONTROL))"怎么样?您不能使用一个 GAKS 调用来检查多个密钥。
尝试以下代码以确保您可以同时使用多个键。硬件在识别同时按下多个按键方面存在限制,因此请牢记这一点。
主要调用函数,
while(!keydown(VK_LCONTROL))
{
if(keydown(VK_LCONTROL) && keydown(VK_NUMPAD1) && keydown(VK_UP))
{
cout << "combo pressed!" << endl;
}
Sleep(10);
}
功能按键,
BOOL keydown(int key)
{
return (GetAsyncKeyState(key) & 0x8000) != 0;
}
(GetAsyncKeyState(key) & 0x8000) != 0;我们只对第 15 位感兴趣,所以检查一下这个。有关详细信息,请查看相应位的信息。
尝试组合键,例如 control+numberpad1+Up 用于 1 的增量,control+numberpad2+Up 用于 10 的增量等。
原来控制阻止了控制台"flushing"。所以,这只是控制本身导致错误的问题,我决定使用 while-shift 保持 10 秒和 while-tab 保持 100 秒。如果有一种使用 alt 的方法,但我认为没有,我会使用它。这只是我愚蠢的一个典型案例,花了大约 3 个小时才意识到是键绑定与 cmd 提示符交互导致了问题。