qxtglobalshortcut
qxtglobalshortcut_p.h
1 #ifndef QXTGLOBALSHORTCUT_P_H
2 /****************************************************************************
3 ** Copyright (c) 2006 - 2011, the LibQxt project.
4 ** See the Qxt AUTHORS file for a list of authors and copyright holders.
5 ** All rights reserved.
6 **
7 ** Redistribution and use in source and binary forms, with or without
8 ** modification, are permitted provided that the following conditions are met:
9 ** * Redistributions of source code must retain the above copyright
10 ** notice, this list of conditions and the following disclaimer.
11 ** * Redistributions in binary form must reproduce the above copyright
12 ** notice, this list of conditions and the following disclaimer in the
13 ** documentation and/or other materials provided with the distribution.
14 ** * Neither the name of the LibQxt project nor the
15 ** names of its contributors may be used to endorse or promote products
16 ** derived from this software without specific prior written permission.
17 **
18 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 ** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 ** DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
22 ** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 ** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 ** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 **
29 ** <http://libqxt.org> <foundation@libqxt.org>
30 *****************************************************************************/
31 
32 #define QXTGLOBALSHORTCUT_P_H
33 
34 #include <QAbstractEventDispatcher>
35 #include <QHash>
36 
37 class QKeySequence;
38 class QxtGlobalShortcut;
39 
40 #if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
41 #include <QAbstractNativeEventFilter>
42 #endif
43 
45 #if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
46  : public QAbstractNativeEventFilter
47 #endif
48 {
49 public:
52 
53  bool enabled;
54  Qt::Key key;
55  Qt::KeyboardModifiers mods;
56  quint32 nativeKey;
57  quint32 nativeMods;
58  bool registered;
59 
60  bool setShortcut(const QKeySequence& shortcut);
61  bool unsetShortcut();
62 
63 # ifndef Q_OS_MAC
64  static int ref;
65 # endif // Q_OS_MAC
66 
67 # if QT_VERSION < QT_VERSION_CHECK(5,0,0)
68 # ifndef Q_OS_MAC
69  static QAbstractEventDispatcher::EventFilter prevEventFilter;
70  static bool eventFilter(void* message);
71 # endif // Q_OS_MAC
72 # else
73  bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override;
74 # endif // QT_VERSION < QT_VERSION_CHECK(5,0,0)
75 
76  static void activateShortcut(quint32 nativeKey, quint32 nativeMods);
77 
78 private:
79  QxtGlobalShortcut *q_ptr;
80 
81  static quint32 nativeKeycode(Qt::Key keycode);
82  static quint32 nativeModifiers(Qt::KeyboardModifiers modifiers);
83 
84  static bool registerShortcut(quint32 nativeKey, quint32 nativeMods);
85  static bool unregisterShortcut(quint32 nativeKey, quint32 nativeMods);
86 
87  static QHash<QPair<quint32, quint32>, QxtGlobalShortcut*> shortcuts;
88 };
89 
90 #endif // QXTGLOBALSHORTCUT_P_H
The QxtGlobalShortcut class provides a global shortcut aka "hotkey".
Definition: qxtglobalshortcut.h:41
Definition: qxtglobalshortcut_p.h:44