Как проверить нажата ли клавиша c
Перейти к содержимому

Как проверить нажата ли клавиша c

  • автор:

Как проверить нажата ли клавиша 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
  • Стилизация Скролла
  • События Формы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *