Мне было интересно, как узнать, какая клавиша нажата с моей клавиатуры? Прочитайте пару веб-сайтов о GetAsyncKeyState(), но я до сих пор не понял, как работает эта функция. Любой, пожалуйста, объясните это на примере.Как узнать, какая клавиша нажата?
ответ
Для Windows, вы можете использовать это:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
while(1)
{
if (GetAsyncKeyState(VK_DELETE))
{
printf("Delete has been pressed");
}
}
}
Итак, если мне нужно обнаружить несколько ключей, то я должен использовать эту функцию несколько раз? –
@ nkd2195: Вы можете получить статус всех виртуальных ключей сразу с помощью 'GetKeyboardState'. Но учтите, что это требует от вас обработки сообщений клавиатуры, отправленных в очередь сообщений потока. Чтобы указать MSDN: _ «Статус изменяется как поток, удаляет сообщения клавиатуры из очереди сообщений. Статус не изменяется, поскольку сообщения клавиатуры отправляются в очередь сообщений потока и не изменяются, поскольку сообщения клавиатуры отправляются или извлекаются из сообщения очередями других потоков. "_. – Michael
Для получения дополнительной виртуального ключа кода посещения этого (https://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx)
#include <iostream>
#include <windows.h>
#include <winuser.h>
using namespace std;
int Stroke (int key_stroke);
int main()
{
char i;
while (1)
{
for(i = 8; i <= 190; i++)
{
if (GetAsyncKeyState(i) == -32767)
Stroke (i);
}
}
return 0;
}
int Stroke (int key_stroke)
{
if ((key_stroke == 1) || (key_stroke == 2))
return 0;
if (key_stroke == 8)
printf("%s\n", "[BACKSPACE]");
else if (key_stroke == 13)
printf("%s\n", "[ENTER]\n");
else if (key_stroke == 32)
printf("%s\n", "[SPACE]");
else if (key_stroke == VK_TAB)
printf("%s\n", "[TAB]");
else if (key_stroke == VK_SHIFT)
printf("%s\n", "[SHIFT]");
else if (key_stroke == VK_CONTROL)
printf("%s\n", "[CONTROL]");
else if (key_stroke == VK_ESCAPE)
printf("%s\n", "[ESCAPE]");
else if (key_stroke == VK_END)
printf("%s\n", "[END]");
else if (key_stroke == VK_HOME)
printf("%s\n", "[HOME]");
else if (key_stroke == VK_LEFT)
printf("%s\n", "[LEFT]");
else if (key_stroke == VK_UP)
printf("%s\n", "[UP]");
else if (key_stroke == VK_RIGHT)
printf("%s\n", "[RIGHT]");
else if (key_stroke == VK_DOWN)
printf("%s\n", "[DOWN]");
else if (key_stroke == VK_DELETE)
printf("%s\n", "[DEL]");
else if (key_stroke == 190 || key_stroke == 110)
printf("%s\n", ".");
else
printf("%s\n", &key_stroke);
return 0;
}
- 1. Как узнать, какая клавиша нажата?
- 2. определить, какая клавиша нажата
- 3. как показать, какая клавиша нажата
- 4. Как проверить, какая клавиша нажата в LUWIT?
- 5. pygame обнаруживает, какая клавиша нажата
- 6. Определение того, какая клавиша нажата
- 7. Как найти, какая клавиша была нажата
- 8. Как определить, какая клавиша Alt была нажата
- 9. Как определить, какая клавиша SHIFT была нажата?
- 10. Как узнать, какая кнопка нажата?
- 11. Как узнать, какая кнопка нажата?
- 12. Как узнать, какая кнопка нажата?
- 13. Как узнать, какая кнопка нажата?
- 14. Перерыв, если какая-либо клавиша нажата C++
- 15. Зная, нажата ли какая-либо клавиша, wxPython
- 16. Определение того, какая клавиша была нажата
- 17. Можно ли определить, какая клавиша нажата для событий прослушивания клавиш JAVA? (нажата клавиша, напечатана или выпущена)
- 18. Как узнать, какая позиция массива нажата?
- 19. Как узнать, какая единая сетка была нажата?
- 20. Как узнать, какая кнопка нажата в flex?
- 21. Как узнать, какая кнопка была нажата?
- 22. Как узнать, какая кнопка нажата на Android?
- 23. Xamarin Grid как узнать, какая кнопка нажата
- 24. Как узнать, какая кнопка нажата на Jsp
- 25. Как я могу определить, какая клавиша нажата на клавиатуре? C++
- 26. Java KeyListener - Как определить, нажата ли какая-либо клавиша?
- 27. Как определить, какая клавиша была нажата на BlackBerry
- 28. Как узнать, какая клавиша нажата на пользовательскую клавиатуру и какое текстовое поле выбрано.
- 29. Android: Как узнать, нажата ли клавиша ok на клавиатуре?
- 30. Как узнать, что клавиша со стрелкой клавиатуры нажата, программно
вы задаете в целом (что могло бы объяснить, почему вы не смогли получить он работает), или конкретно о [функции Windows] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx)? – usr2564301
Windows или Linux? – ANjaNA
Я программирую в окнах. –