Название: Как отловить нажатие и отжатие клавиши PrintScreen? Отправлено: billy4685 от Январь 29, 2016, 09:35 Добрый день, всем посетителям данного форума. Пишу вот тест клавиатуры для Windows. Не думал, что при написании столь простого приложения
столкнусь с проблемами. Но увы я ошибался)). По началу для отлавливания нажатия и отжатия клавиши использовал следующие методы: Код: QString pressStyle = "QPushButton{background-color: green; border: 2px solid grey;}"; Столкнулся с проблемой что клавиша PrintScreen (пытался отлавливать по ключу Key_Print) не срабатывает. Так же по ключам Key_Shift, Key_Control, Key_Meta, Key_Alt определялось нажатие соответственно как и левых так и правых клавиш Shift, Сtrl, Meta(Win), Alt (а хотелось бы их различать). По этому решил использовать кода клавиш, это бы позволило запускать тест не только при английской раскладке. Переписал свои методы в другой вид: Код: void KEY_TEST::keyPressEvent(QKeyEvent *event) Это решило проблему с клавишами Shift, Сtrl, Win, Alt. Но с PrintScreen проблема так и осталась не решенной. Также на украинской раскладке при нажатии правого Alt-а почему-то срабатывает и нажатие левого Ctrl-а. Не знаю может это специально реализовано для каких-нибудь целей. Нашел вот пример по PrintScreen: https://sites.google.com/site/ecspertiza/stati/qt/perehvat-nazatia-print-screen-v-qt Но увы, когда я подцепил это к своему тесту, то такое ощущение, что клавиатура отлавливает только нажатие клавиш, а отжатие нет. К тому же замечал, что клавиатура за частую начинает тупить, как буд-то отключается, и чтобы она снова запустилась нужно выключить приложение, выйти из системы Windows и снова ввойти. Буду рад всем советам по-поводу отлавливания нажатия и отжатия клавиши PrintScreen в Windows. Название: Re: Как отловить нажатие и отжатие клавиши PrintScreen? Отправлено: panAlexey от Январь 29, 2016, 11:20 В виндовс клавиатурные хуки работают только из dll.
ПС. Так на всякий случай говорю. Название: Re: Как отловить нажатие и отжатие клавиши PrintScreen? Отправлено: kuzulis от Январь 29, 2016, 11:43 Не только
Название: Re: Как отловить нажатие и отжатие клавиши PrintScreen? Отправлено: Igors от Январь 29, 2016, 11:56 Все задачи такого плана начинаются со стандартной процедуры: вешаете фильтр на qApp (или перекрываете notify) и печатаете все приходящие события (кроме таймера, задолбает). Нажимаете прынт-скрын и смотрите какие еветны вообще пришли. Бывает так что вообще "ничего", тогда лезть в nativeEvent, ну то редко
Печаталку событий лучше иметь всегда и включать напр по #ifdef Название: Re: Как отловить нажатие и отжатие клавиши PrintScreen? Отправлено: billy4685 от Январь 30, 2016, 10:29 Все задачи такого плана начинаются со стандартной процедуры: вешаете фильтр на qApp (или перекрываете notify) и печатаете все приходящие события (кроме таймера, задолбает). Нажимаете прынт-скрын и смотрите какие еветны вообще пришли. Бывает так что вообще "ничего", тогда лезть в nativeEvent, ну то редко спасибо, буду пробоватьПечаталку событий лучше иметь всегда и включать напр по #ifdef Название: Re: Как отловить нажатие и отжатие клавиши PrintScreen? Отправлено: Old от Январь 30, 2016, 10:40 спасибо, буду пробовать У вас не получится отловить PrintScreen средствами Qt. Смотрите, что для этого есть в венде.Название: Re: Как отловить нажатие и отжатие клавиши PrintScreen? Отправлено: billy4685 от Январь 30, 2016, 12:17 спасибо, буду пробовать У вас не получится отловить PrintScreen средствами Qt. Смотрите, что для этого есть в венде.хорошо, буду смотреть в сторону win api |