You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.9 KiB
62 lines
1.9 KiB
#ifndef QHOTKEY_P_H |
|
#define QHOTKEY_P_H |
|
|
|
#include "qhotkey.h" |
|
#include <QAbstractNativeEventFilter> |
|
#include <QMultiHash> |
|
#include <QMutex> |
|
#include <QGlobalStatic> |
|
|
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) |
|
#define _NATIVE_EVENT_RESULT qintptr |
|
#else |
|
#define _NATIVE_EVENT_RESULT long |
|
#endif |
|
|
|
class QHOTKEY_EXPORT QHotkeyPrivate : public QObject, public QAbstractNativeEventFilter |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
QHotkeyPrivate();//singleton!!! |
|
~QHotkeyPrivate(); |
|
|
|
static QHotkeyPrivate *instance(); |
|
static bool isPlatformSupported(); |
|
|
|
QHotkey::NativeShortcut nativeShortcut(Qt::Key keycode, Qt::KeyboardModifiers modifiers); |
|
|
|
bool addShortcut(QHotkey *hotkey); |
|
bool removeShortcut(QHotkey *hotkey); |
|
|
|
protected: |
|
void activateShortcut(QHotkey::NativeShortcut shortcut); |
|
void releaseShortcut(QHotkey::NativeShortcut shortcut); |
|
|
|
virtual quint32 nativeKeycode(Qt::Key keycode, bool &ok) = 0;//platform implement |
|
virtual quint32 nativeModifiers(Qt::KeyboardModifiers modifiers, bool &ok) = 0;//platform implement |
|
|
|
virtual bool registerShortcut(QHotkey::NativeShortcut shortcut) = 0;//platform implement |
|
virtual bool unregisterShortcut(QHotkey::NativeShortcut shortcut) = 0;//platform implement |
|
|
|
QString error; |
|
|
|
private: |
|
QHash<QPair<Qt::Key, Qt::KeyboardModifiers>, QHotkey::NativeShortcut> mapping; |
|
QMultiHash<QHotkey::NativeShortcut, QHotkey*> shortcuts; |
|
|
|
Q_INVOKABLE void addMappingInvoked(Qt::Key keycode, Qt::KeyboardModifiers modifiers, QHotkey::NativeShortcut nativeShortcut); |
|
Q_INVOKABLE bool addShortcutInvoked(QHotkey *hotkey); |
|
Q_INVOKABLE bool removeShortcutInvoked(QHotkey *hotkey); |
|
Q_INVOKABLE QHotkey::NativeShortcut nativeShortcutInvoked(Qt::Key keycode, Qt::KeyboardModifiers modifiers); |
|
}; |
|
|
|
#define NATIVE_INSTANCE(ClassName) \ |
|
Q_GLOBAL_STATIC(ClassName, hotkeyPrivate) \ |
|
\ |
|
QHotkeyPrivate *QHotkeyPrivate::instance()\ |
|
{\ |
|
return hotkeyPrivate;\ |
|
} |
|
|
|
#endif // QHOTKEY_P_H
|
|
|