Перейти к содержимому

Как проверить нажата ли клавиша 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

Шаг 64.
Библиотека PyQt5. Обработка сигналов и событий. События клавиатуры. Нажатие и отпускание клавиши на клавиатуре

На этом шаге мы рассмотрим методы, используемые для обработки этих событий .

  • keyPressEvent (self, ) — вызывается при нажатии клавиши на клавиатуре. Если клавишу удерживать нажатой, то метод станет многократно вызываться, пока клавиша не будет отпущена;
  • keyReleaseEvent (self, ) — вызывается при отпускании нажатой ранее клавиши.


    key () — возвращает код нажатой клавиши. Пример определения клавиши:

if e.key() == QtCore.Qt.Кеу_В: print ("Нажата клавиша ")

  • NoModifier — модификаторы не были нажаты;
  • ShiftModifier — была нажата клавиша Shift ;
  • ControlModifier — была нажата клавиша Ctrl ;
  • AltModifier — была нажата клавиша Alt ;
  • MetaModifier — была нажата клавиша Meta ;
  • KeypadModifier — была нажата любая клавиша на дополнительной клавиатуре;
  • GroupSwitchModifier — была нажата клавиша Mode_switch (только в X11 ).

Пример определения, была ли нажата клавиша-модификатор Shift :

if e.modifiers() & QtCore.Qt.ShiftModifier: print("Нажата клавиша-модификатор ")
if e.matches (QtGui.QKeySequence.Copy): print("Нажата комбинация +")

  • компонент должен иметь возможность принимать фокус ввода. Некоторые компоненты по умолчанию не могут принимать фокус ввода — например, надпись. Чтобы изменить способ получения фокуса, следует воспользоваться методом setFocusPolicy(< Способ >) , который мы рассматривали на 61 шаге;
  • чтобы захватить эксклюзивный ввод с клавиатуры, следует воспользоваться методом grabKeyboard() , а чтобы освободить ввод — методом releaseKeyboard() ;
  • можно перехватить нажатие любых клавиш, кроме клавиши Tab и комбинации Shift+Tab . Эти клавиши используются для передачи фокуса следующему и предыдущему компоненту соответственно. Перехватить нажатие этих клавиш можно только в методе event(self, ) ;
  • если событие обработано, следует вызвать метод accept() объекта события. Чтобы родительский компонент смог получить событие, вместо метода accept() необходимо вызвать метод ignore() .

Со следующего шага мы начнем рассматривать события мыши .

Как проверить нажата ли любая клавиша?

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

invilso.
Известный

Автор темы

Версия MoonLoader .027.0-preview

Мне нужно сделать проверку на нажатие любой клавиши на клавиатуре, как это можно сделать?
Заранее спасибо

Quasper
--в начало скрипта local wm = require('windows.message') --в любом месте function onWindowMessage(msg, wparam, lparam) if msg == wm.WM_KEYDOWN then print('Нажата клавиша') end end
Quasper
Известный
--в начало скрипта local wm = require('windows.message') --в любом месте function onWindowMessage(msg, wparam, lparam) if msg == wm.WM_KEYDOWN then print('Нажата клавиша') end end

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

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