Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qate от Июнь 24, 2014, 09:41



Название: как узнать были ли нажатия клавиш
Отправлено: qate от Июнь 24, 2014, 09:41
пусть, например, есть таймер на 5 сек, необходимо узнать были ли любые нажатия клавиш клавиатуры в течении этого времени
необходимое условие - должно работать если окно свернуто и фокус вообще в другом приложении


Название: Re: как узнать были ли нажатия клавиш
Отправлено: carrygun от Июнь 24, 2014, 10:10
Если надо вне приложения - то придется либо смотреть API системы (оконного менеджера), либо копать в сторону Qxt. Оно под Qt5 сейчас вообще собирается?


Название: Re: как узнать были ли нажатия клавиш
Отправлено: GreatSnake от Июнь 24, 2014, 10:19
Если надо вне приложения - то придется либо смотреть API системы (оконного менеджера), либо копать в сторону Qxt. Оно под Qt5 сейчас вообще собирается?
Вот только никак не "оконного менеджера")


Название: Re: как узнать были ли нажатия клавиш
Отправлено: qate от Июнь 24, 2014, 10:43
если api систем, то
1. для win нашел SetWindowsHookEx, вроде несложно
2. для linux нашел XGrabKey, но пока не ясно как им пользоваться

жаль то нет внутри qt


Название: Re: как узнать были ли нажатия клавиш
Отправлено: GreatSnake от Июнь 24, 2014, 10:51
2. для linux нашел XGrabKey, но пока не ясно как им пользоваться
Не то нашёл. Читай про XSelectInput.


Название: Re: как узнать были ли нажатия клавиш
Отправлено: Alex Custov от Июнь 24, 2014, 11:02
если имеется ввиду idle, то в Linux/X11 это делается через XScreenSaverQueryInfo()


Название: Re: как узнать были ли нажатия клавиш
Отправлено: carrygun от Июнь 24, 2014, 11:04
Может все-таки лучше это (http://libqxt.bitbucket.org/doc/0.6/qxtglobalshortcut.html)?


Название: Re: как узнать были ли нажатия клавиш
Отправлено: GreatSnake от Июнь 24, 2014, 11:07
Может все-таки лучше это (http://libqxt.bitbucket.org/doc/0.6/qxtglobalshortcut.html)?
И чем ТС это поможет коли
необходимо узнать были ли любые нажатия клавиш клавиатуры в течении этого времени


Название: Re: как узнать были ли нажатия клавиш
Отправлено: qate от Июнь 24, 2014, 11:23
2. для linux нашел XGrabKey, но пока не ясно как им пользоваться
Не то нашёл. Читай про XSelectInput.

да, наверно XSelectInput, но чтото не соображу как использовать:
1. вызвать XSelectInput при старте программы
2. а далее гдето вызывать XNextEvent ? (в eventFilter основного окна?)



Название: Re: как узнать были ли нажатия клавиш
Отправлено: qate от Июнь 24, 2014, 11:28
если имеется ввиду idle, то в Linux/X11 это делается через XScreenSaverQueryInfo()

чтото типа скринсервера и делаю )
но более простой - выключаю монитор

про XScreenSaverQueryInfo почитаю - подойдет ли, да и на win тоже нужна поддержка