crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Мультимедиа клавиши
urandom
  опции профиля:
сообщение 25.11.2011, 22:28
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


приветствую.

хотел бы узнать, как можно в Qt обработать нажатие на мультимедийные клавиши?
погуглил, информации мало. печалька..
может кто уже сталкивался?

если не мультимедиа, то хотя бы как отловить нажатия на стандартные кнопы (глобально)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BlueIceScream
  опции профиля:
сообщение 26.11.2011, 0:07
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 21.11.2011
Из: Республика Дагестан
Пользователь №: 3016

Спасибо сказали: 18 раз(а)




Репутация:   3  


Qt::Key_MediaPlay 0x01000080
Qt::Key_MediaStop 0x01000081
Qt::Key_MediaPrevious 0x01000082
Qt::Key_MediaNext 0x01000083
Qt::Key_MediaRecord 0x01000084
Qt::Key_MediaPause 0x1000085
Qt::Key_MediaTogglePlayPause 0x1000086

Также :

"Key events for multimedia keys are ignored by default. You should call accept() if your widget handles those events."

Для глобального отлавливания событий нажатия клавиш клавиатуры, придется использовать глобальные ловушки. Для каждой операционной системы делается это различными способами. Кросплатформенной реализации в Qt для таких методов нет. Другое дело если предполагается использование вашей программы в операционной системе без потери фокуса. Тогда отлавливание глобальных событий нажатия клавиш сводится к отлавливанию их на локальном (в очередях событий вашей программы) уровне. Для упрощения создания кросплатформенности вы можете перенести процедуры создания глобальных ловушек в отдельные библиотеки. Глобальные ловушки дадут вам возможность использовать возможности системы по определению медиа клавиш на клавиатуре. Это значит что вы сможете обрабатывать эти клавиши, даже тогда, когда возможностей по определению их с помощью констант Qt будет недостаточно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
urandom
  опции профиля:
сообщение 26.11.2011, 11:08
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.11.2011
Пользователь №: 2983

Спасибо сказали: 1 раз(а)




Репутация:   0  


огромное спасибо, а можно пример подобной ловушки?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BlueIceScream
  опции профиля:
сообщение 26.11.2011, 12:34
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 21.11.2011
Из: Республика Дагестан
Пользователь №: 3016

Спасибо сказали: 18 раз(а)




Репутация:   3  


Вот пример для операционной системы Windows:

http://www.codeproject.com/KB/DLL/keyboardhook.aspx

Для системы XWindow придется использовать функции из XLib. Например XGrabKey

http://tronche.com/gui/x/xlib/input/XGrabKey.html


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 29.11.2011, 12:27
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(urandom @ 26.11.2011, 12:08) *
огромное спасибо, а можно пример подобной ловушки?

По рукам ходят 2 версии глобальных хоткеев на Qt. Первая - кусок libqxt, вторая ЕМНИП выдрана из PSi.
Вот PSi-хованная версия
Использовать очень просто:
#include "globalshortcutmanager.h"
...
    GlobalShortcutManager::instance()->connect(QKeySequence("Alt+F2"), this, SLOT(showHide()));



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 4:16