Как проверить нажата ли клавиша Enter? C++ знаю что через функцию kbhit(). Но как именно?
kbhit просто возвращает 1 если была нажата клавиша.
есть getch() но программа останавливается и ожидает ввода.
Ентер = 13
Если нужно без ожиданий то необходимо использовать сторонние библиотеки типа SDL, DirectInput, какой нибудь движок (irrlicht к примеру, там есть возможность запуска без создания окна), системные функции типа GetAsyncKeyState для windows
int KEY_ENTER=13;
int KEY_ESCAPE=0x1B;
//бесконечный цикл
while( true )if (GetAsyncKeyState( KEY_ENTER ))printf(«Enter\n»);
>else if (GetAsyncKeyState( KEY_ESCAPE ))break;
>
>
Как проверить нажата ли клавиша c
Как узнать — нажата клавиша или нет?
Есть ли такая функция, которая при нажатии клавиши вернет истину, а иначе — ложь?
02.05.03 21:04: Перенесено модератором из ‘C/C++’ — ПК
Re: Как узнать — нажата ли клавиша
| От: | Sinatr |
| Дата: | 02.05.03 17:18 |
| Оценка: |
Привет!
G_B>Как узнать — нажата клавиша или нет?
G_B>Есть ли такая функция, которая при нажатии клавиши вернет истину, а иначе — ложь?
Узнать с помощью GetKeyboardState() или GetKeyState(). Еще по нажатию клавиши ты получаешь мессагу (в окно) WM_KEYDOWN, а если юзаешь TranslateMessage(), то и WM_CHAR (но это немного не то, что ты просишь).
Вообщем организуешь проверку:
short res; res=GetKeyState(ikey); //virtual code or ascii for "a-z,A-Z" if(res&0x80) < //типа нажата >
а вообще — юзай msdn, клевая штука!
—
ПроГLамеры объединяйтесь..
Re: Как узнать — нажата ли клавиша
| От: | vasketsov | http://ntprog.by.ru |
| Дата: | 02.05.03 19:00 | |
| Оценка: | +1 | |
Здравствуйте, Green_B, Вы писали:
Васкецов Сергей
http://registry.km.ru
Re[2]: Как узнать — нажата ли клавиша
| От: | Keeper_andrew |
| Дата: | 06.05.03 15:39 |
| Оценка: |
Здравствуйте, vasketsov, Вы писали:
V>Здравствуйте, Green_B, Вы писали:
V>GetAsyncKeyState()
Эта функция не работает, когда произошло нажатие кнопки на неактивном рабочем столе.
Измеряй высоту своего ума по тени, которую он отбрасывает.
Re[3]: Как узнать — нажата ли клавиша
| От: | vasketsov | http://ntprog.by.ru |
| Дата: | 06.05.03 18:04 | |
| Оценка: |
Здравствуйте, Keeper_andrew, Вы писали:
K_>на неактивном рабочем столе.
У Desktop нет понятия активен он или нет.
Напоминаю, что речь об ActiveDesktop не идет.
Вы имеете в виду невидимый рабочий стол?
Да, в общем-то, 1) и правильно это, 2) если уж залезли на «неактивный» десктоп — SetThreadDesktop и вперед.
Васкецов Сергей
http://registry.km.ru
Re[3]: Как узнать — нажата ли клавиша
| От: | vasketsov | http://ntprog.by.ru |
| Дата: | 06.05.03 18:06 | |
| Оценка: |
Здравствуйте, Keeper_andrew, Вы писали:
K_>Эта функция не работает, когда произошло нажатие кнопки на неактивном рабочем столе.
Я так подумал , это вообще как так понимать? Что именно происходит? Вы что, на невидимом десктопе кнопку нажали? А при чем тут KeyState?
Васкецов Сергей
http://registry.km.ru
Re[4]: Как узнать — нажата ли клавиша
| От: | Keeper_andrew |
| Дата: | 07.05.03 09:41 |
| Оценка: |
Здравствуйте, vasketsov, Вы писали:
V>Здравствуйте, Keeper_andrew, Вы писали:
K_>>на неактивном рабочем столе.
V>У Desktop нет понятия активен он или нет.
V>Напоминаю, что речь об ActiveDesktop не идет.
V>Вы имеете в виду невидимый рабочий стол?
V>Да, в общем-то, 1) и правильно это, 2) если уж залезли на «неактивный» десктоп — SetThreadDesktop и вперед.
Чтобы не разводить флейм приведу в пример мою переключалку десктопов Eiruk. Значит, если мы жмем Win+0 и не отпускаем Win, то активизируется десктоп с номером 0. Так вот, если сразу после этого попытаться вычислить состояние нажатости кнопки Win через GetAsyncKeyState(), то выдаст что кнопка Win не нажата. И Если мы хотим перейти на другой десктоп, то обязательно приходится отпускать и снова нажимать клавишу Win. На эти грабли я наступал. Больше не буду.
Как проверить нажата ли клавиша c
Как определить нажата ли клавиша. Как узнать включен ли NUM LOCK на C++.
Функция GetKeyState извлекает данные о состоянии заданной виртуальной клавиши. Состояние определяет, является ли клавиша нажатой, не нажатой или переключенной (вкл., выкл. — чередуется, каждый раз, когда нажимается клавиша).
#include «stdafx.h»
#include «windows.h»
#include «iostream.h»
#include «stdio.h»void main()
if (GetKeyState(VK_NUMLOCK)==1)
cout else
cout getchar
>
SHORT GetKeyState
(
int nVirtKey // код виртуальной клавиши
);
nVirtKey — Определяет виртуальную клавишу. Если нужная виртуальная клавиша — буква или цифра (от А до Z, от а до z или от 0 до 9), nVirtKey должен быть установлен в значение ASCII этого символа. Для других клавиш, он должен быть кодом виртуальной клавиши.
Если на клавиатуре используется неанглийская раскладка символов, используются виртуальные клавиши со значениями в диапазоне ASCII от А до Z и от 0 до 9, чтобы определить большинство знаковых клавиш. Например, для немецкой раскладки символов на клавиатуре, виртуальная клавиша «O» со значение ASCII (0x4F) представляет клавишу «o», принимая во внимание, что VK_OEM_1 представляет клавишу «o с умлаутом».
Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения определяет состояние данной виртуальной клавиши. Если старший бит равен 1, клавиша нажата; иначе она отпущена. Если младший бит равен 1, клавиша переключилась. Клавиша, такая как CAPS LOCK, переключается, если она является включенной. Клавиша выключена и не переключает, если младший бит равен 0. Когда клавиша переключается, индикатор переключения клавиши на клавиатуре (если он есть) должен быть включен, и отключен, когда клавиша не переключается.
Замечания
Состояние клавиши, возвращенное этой функцией, изменяется, так как данный поток читает клавишные сообщения из ее очереди сообщений. Состояние клавиши не отражает состояния уровня прерывания, связанное с аппаратными средствами. Используйте функцию GetAsyncKeyState, чтобы получить эту информацию.
Прикладная программа, в ответ на сообщение ввода информации с клавиатуры, вызывает GetKeyState. Эта функция извлекает данные о состоянии клавиши, когда было сгенерировано сообщение о вводе данных.
Чтобы получить информацию о состоянии для всех виртуальных клавиш, используйте функцию GetKeyboardState.
Прикладная программа может использовать константы кодов виртуальных клавиш VK_SHIFT, VK_CONTROL и VK_MENU как значения для параметра nVirtKey. Это дает состояние клавиш SHIFT, CTRL или ALT без различия между ними левого и правого расположения. Прикладная программа может также использовать следующие константы кода виртуальной клавиши как значения для nVirtKey, чтобы различить между левыми и правыми экземплярами этих клавиш:
VK_LSHIFT VK_RSHIFT
VK_LCONTROL VK_RCONTROL
VK_LMENU VK_RMENU
Эти лево- и правосторонние константы доступны прикладной программе только через функции GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState и MapVirtualKeyM.
Смотри также
GetAsyncKeyState, GetKeyboardState, MapVirtualKey, SetKeyboardState
JavaScript: Информация О Нажатой Клавише
В данной статье рассмотрим, как получить информацию о нажатой клавише клавиатуры или кнопки мыши, а также как выполнять необходимые действия (нужный код) при нажатии определенных сочетаний клавиш или кнопок (правый/левый клик мыши).
Чтобы получить информацию, о том какая кнопка клавиатуры нажимается в данный момент, воспользуемся следующим кодом:
function keyPress(e) < let keyNum; if (window.event) < keyNum = window.event.keyCode; >else if (e) < keyNum = e.which; >console.log(keyNum); > document.onkeydown = keyPress;
Номер кнопки находится в переменной keyNum
Узнать keyCode кнопки можете здесь:
Выполнение кода в зависимости от нажатой клавиши
Давайте теперь будем выполнять необходимые действия в зависимости от нажатой клавиши
Для этой задачи воспользуемся оператором switch .
В конструкции case укажите номер кнопки, для которой будет выполнен необходимый код.
document.onkeydown = function (e) < switch (e.keyCode) < case 49: console.log("Нажата единица"); break; case 50: console.log("Нажата двойка"); break; case 32: console.log("Нажат пробел"); break; case 9: console.log("Нажат tab"); break; case 16: console.log("Нажат shift"); break; default: console.log(e.keyCode); >>;
Вместо console.log выполняйте необходимые действия.
Если была нажата клавиша, которой нет в списке, то для неё можете выполнить другой код. Писать в default.
Как отследить комбинации нажатых клавиш
Отследить нажатие CTRL, SHIFT и ALT можно также другими способами (данный способ необходим чтобы отследить комбинации).
Например, отследить нажатие CTRL можно следующим образом:
document.addEventListener("keydown", function (e) < if (e.ctrlKey) < console.log("Был нажат CTRL"); document.getElementById("btnClick").textContent = "CTRL"; >>);
Используя всю ранее полученную информацию, определим нажатую комбинацию клавиш, например, CTRL + F5 :
document.addEventListener("keydown", function (e) < e.preventDefault(); if (e.ctrlKey && event.key == "F5") < console.log("Была нажата комбинация клавиш CTRL + F5"); >>);
Как вы могли заметить, обращаться к клавишам в JavaScript можно несколькими способами. Например, следующие строки кода позволяют нам получить один и тот же результат:
event.key == "F5" аналогично e.keyCode == 116
Мы рассмотрели, как получить информацию о нажатой клавише на клавиатуре. Теперь давайте рассмотрим, как обработать события мыши.
Информация о нажатой кнопке мыши JavaScript
Рассмотрим, как определить какая кнопка мыши нажимается над объектом: левая кнопка, правая или дабл клик.
Выполнение кода при клике левой кнопкой мыши:
document.querySelector(selector).onclick = function (e) < if (e.which == 1) < console.log("Нажата левая кнопка мыши"); >>
Выполнение кода при клике правой кнопкой мыши:
document.querySelector(selector).oncontextmenu = function (e)
Выполнение кода при двойном клике по кнопке:
document.querySelector(selector).ondblclick = function ()
Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.
Поделиться с друзьями:
Статьи из данной категории:
- JavaScript: Работа с Массивами
- Наличие Динамически Добавленного Элемента
- Стилизация Input File
- Предзагрузка Картинок — Предварительная Загрузка Изображений на JavaScript
- Стилизация Скролла
- События Формы