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