Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Декабрь 29, 2014, 13:28



Название: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: Igors от Декабрь 29, 2014, 13:28
Добрый день

К сожалению, использовать то что пришло c QEvent не выходит, нужно именно "как сейчас". Если "в Qt этого нет, нужно юзать нативняк", то доп вопрос: где это в Cocoa?

Спасибо


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: Пантер от Декабрь 29, 2014, 13:36
не совсем понял, объясни подробнее.


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: Igors от Декабрь 29, 2014, 13:49
не совсем понял, объясни подробнее.
Без ожидания/использования событий узнать что данная кнопка мыши или клавиша нажаты. Напр GetAsyncKeyState в Вындоуз


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: Пантер от Декабрь 29, 2014, 14:07
На крайний случай, можно хранить последнее состояние клавы/мыши, которое пришло с ивентом.


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: kambala от Декабрь 29, 2014, 15:02
в гугле забанили что ли? находится за считанные секунды, см. методы с плюсиком: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/index.html#//apple_ref/occ/clm/NSEvent


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: Igors от Декабрь 29, 2014, 16:14
в гугле забанили что ли? находится за считанные секунды, см. методы с плюсиком: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/index.html#//apple_ref/occ/clm/NSEvent
Такого много, но ведь это все - дела NSEvent, т.е. данные в момент генерации события. Или это не так? Еще пример
Код
C++ (Qt)
void mousePressEvent( QMouseEvent * e )
{
// что-то делаем
..
Point pos = QCursor::pos();
}
Здесь полученное pos может быть совсем не то что event->pos(). Нужно то же для нажатий. На Carbon все просто: GetKeys(),  GetCurrentButtonState. А на какаве что  ???


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: kambala от Декабрь 29, 2014, 16:16
плюсовые (статические) методы NSEvent позволяют получить состояние в любой момент времени


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: Igors от Декабрь 29, 2014, 16:22
плюсовые (статические) методы NSEvent позволяют получить состояние в любой момент времени
Ага, вроде да
Цитировать
Objective-C

+ (NSEventModifierFlags)modifierFlags
Return Value

A mask of the current modifiers using the values in Modifier Flags.
Discussion

This returns the state of devices combined with synthesized events at the moment, independent of which events have been delivered via the event stream.
Ладно, буду пыхтеть оформлять  :)

Спасибо


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: kambala от Декабрь 29, 2014, 16:29
там даже можно мониторить все события, включая события другим приложениям (раздел Monitoring Application Events)


Название: Re: Нажатые кнопки мыши/клавиши в данный момент
Отправлено: Igors от Декабрь 30, 2014, 08:36
Кнопки мыши и модифайеры сделал легко, а вот с клавишами немного застрял. Если "нажата ли именно эта" - то наверное хорошо через кварц CGEventSourceKeyState. А вот "нажата ли любая (но не modifier)" - ищу.

http://stofl.org/questions/5772680/how-to-get-keyboard-keys-state-on-mac-osx (http://stofl.org/questions/5772680/how-to-get-keyboard-keys-state-on-mac-osx)
Ничего так переводик  :)