Название: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Ноябрь 16, 2010, 12:41 Доброго времени суток!
Есть задача: по нажатию левой кнопки мыши или любой клавиши клавиатуры выполняющаяся программа должна (плейер) становиться на паузу или выключаться. Это можно реализовать используя, например, системный хук (в виндовз). Наверняка что-то такое есть и в X. Однако же хотелось бы заюзать кроссплатформенную либу. Смотрел QXT - хорошо отлавливает глобальный шорткат, но не совсем то. Подскажите, плз, может кто знает подобную либу, желательно, совместимую с Qt (предосталяющую Qt интерфейс). Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: GreatSnake от Ноябрь 16, 2010, 12:47 QWidget::grabShortcut()
QObject::eventFilter() Естественно, это будет работать, если окно вашего плейера будет иметь фокус. Или вы имели в виду перехват клавиатуры/мыши для всего десктопа? Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Ноябрь 16, 2010, 12:59 Я имею ввиду именно весь десктоп.
(Мне поставлена такая задача (не учеба) избавиться от этого перехвата не могу, хотя по смыслу можно было просто управлять дочерним процессом). Хорошо отрабатывает Qxt'шный QxtGlobalShortcut - но его не достаточно, поскольку QKeySequence не понимает мышь Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: GreatSnake от Ноябрь 16, 2010, 13:05 Цитировать Мне поставлена такая задача... А почему вам глобального shortcut-а мало?И что-то я не понимаю зачем вам мышь. Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Ноябрь 16, 2010, 13:08 У устройства, на котором это будет работать, - тачскрин. Нет клавы. Там драйвера обрабатывают касание экрана как мышиный клик. При нажатии на экран, моя прожка должна уходить в себя. причем не важно, была ли она при этом в фокусе или нет.
Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Ноябрь 16, 2010, 13:12 Грубо говоря, прожка должна работать как скринсейвер, но в то же время иметь возможность не занимать весь экран, работать в нескольких экземплярах (возможно на разных мониторах) и много чего другого. Прожка есть. работает. не хватает только такого функционала.
Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: GreatSnake от Ноябрь 16, 2010, 13:16 Я уверенно могу сказать, что прозрачно для других приложений под X11 такое не сделать.
Т.е. отловить нажатие можно через граб, а вот как его правильно доставить другому приложению... Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Ноябрь 16, 2010, 13:18 Досадно. Про Х11 я не знаю наверняка. Под виндовз можно. Очень надеялся, что если есть Глобал шорткат, то может быть и глобал mouse event.
Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Ноябрь 16, 2010, 13:21 Ага. его нужно не просто поймать, но и отпустить дальше.
Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: GreatSnake от Ноябрь 16, 2010, 13:26 Теоретически без граб-а такое можно сделать через InputOnly окна.
Но Qt их не поддерживает. Да и писанины много будет и не факт, что будет работать всегда. Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Ноябрь 16, 2010, 13:34 Я, честно говоря, не подозреваю вообще, как на иксах такое сделать. под линем гуи только на qt и fox писал. Хотя, может быть, просто слушать устройства клавы и мыши и реагировать на их активность. отследить присутствие человека рядом хватит
Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: GreatSnake от Ноябрь 16, 2010, 14:05 Цитировать Хотя, может быть, просто слушать устройства клавы и мыши и реагировать на их активность. Xlib API не позволяет этого. Может XInputExtension позволяет.Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: gogi от Ноябрь 16, 2010, 14:15 Доброго времени суток! Есть задача: по нажатию левой кнопки мыши или любой клавиши клавиатуры выполняющаяся программа должна (плейер) становиться на паузу или выключаться. Это можно реализовать используя, например, системный хук (в виндовз). Наверняка что-то такое есть и в X. Однако же хотелось бы заюзать кроссплатформенную либу. Смотрел QXT - хорошо отлавливает глобальный шорткат, но не совсем то. Подскажите, плз, может кто знает подобную либу, желательно, совместимую с Qt (предосталяющую Qt интерфейс). Под виндовз сам знаешь как. Под линуксом можно на уровне иксов, а можно на более низком уровне: читать события напрямую от файлов устройств /dev/input/*(event, mouse, mice, ...). >Подскажите, плз, может кто знает подобную либу, желательно, совместимую с Qt (предосталяющую Qt интерфейс). Вот и займись. Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: mityane от Октябрь 07, 2011, 13:43 Ага. его нужно не просто поймать, но и отпустить дальше. Интересно, а как Вы реализовали функцию "и отпустить дальше"? Название: Re: Как отловить глобальное нажатие кнопки мыши? Отправлено: ddrtn от Октябрь 07, 2011, 14:07 Честно говоря, уже и не помню вообще. Под виндой точно работало. под линем - не помню. вот сорцы кусочка.
|