1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.gui.inputdevice;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.flags;
17 import qt.core.global;
18 import qt.core.list;
19 import qt.core.object;
20 import qt.core.rect;
21 import qt.core.string;
22 import qt.helpers;
23 
24 /+ class QDebug; +/
25 extern(C++, class) struct QInputDevicePrivate;
26 
27 /// Binding for C++ class [QInputDevice](https://doc.qt.io/qt-6/qinputdevice.html).
28 class /+ Q_GUI_EXPORT +/ QInputDevice : QObject
29 {
30     mixin(Q_OBJECT);
31     /+ Q_DECLARE_PRIVATE(QInputDevice) +/
32     /+ Q_PROPERTY(QString name READ name CONSTANT)
33     Q_PROPERTY(DeviceType type READ type CONSTANT)
34     Q_PROPERTY(Capabilities capabilities READ capabilities CONSTANT)
35     Q_PROPERTY(qint64 systemId READ systemId CONSTANT)
36     Q_PROPERTY(QString seatName READ seatName CONSTANT)
37     Q_PROPERTY(QRect availableVirtualGeometry READ availableVirtualGeometry
38                NOTIFY availableVirtualGeometryChanged) +/
39 
40 public:
41     enum /+ class +/ DeviceType {
42         Unknown = 0x0000,
43         Mouse = 0x0001,
44         TouchScreen = 0x0002,
45         TouchPad = 0x0004,
46         Puck = 0x0008,
47         Stylus = 0x0010,
48         Airbrush = 0x0020,
49         Keyboard = 0x1000,
50         AllDevices = 0x7FFFFFFF
51     }
52     /+ Q_DECLARE_FLAGS(DeviceTypes, DeviceType) +/
53 alias DeviceTypes = QFlags!(DeviceType);    /+ Q_FLAG(DeviceTypes) +/
54 
55     enum /+ class +/ Capability {
56         None = 0,
57         Position = 0x0001,
58         Area = 0x0002,
59         Pressure = 0x0004,
60         Velocity = 0x0008,
61         NormalizedPosition = 0x0020,
62         MouseEmulation = 0x0040,
63         PixelScroll = 0x0080,
64         Scroll      = 0x0100,
65         Hover       = 0x0200,
66         Rotation    = 0x0400,
67         XTilt       = 0x0800,
68         YTilt       = 0x1000,
69         TangentialPressure = 0x2000,
70         ZPosition   = 0x4000,
71         All = 0x7FFFFFFF
72     }
73     /+ Q_DECLARE_FLAGS(Capabilities, Capability) +/
74 alias Capabilities = QFlags!(Capability);    /+ Q_FLAG(Capabilities) +/
75 
76     this(QObject parent = null);
77     ~this();
78     this(ref const(QString) name, qint64 systemId, DeviceType type,
79                      ref const(QString) seatName = globalInitVar!QString, QObject parent = null);
80 
81     final QString name() const;
82     final DeviceType type() const;
83     final Capabilities capabilities() const;
84     final bool hasCapability(Capability cap) const;
85     final qint64 systemId() const;
86     final QString seatName() const;
87     final QRect availableVirtualGeometry() const;
88 
89     //static QList!(const(QInputDevice)) devices();
90     mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
91     static const(QInputDevice) primaryKeyboard(ref const(QString) seatName = globalInitVar!QString);
92     }));
93 
94     /+final bool operator ==(ref const(ValueClass!(QInputDevice)) other) const;+/
95 
96 /+ Q_SIGNALS +/public:
97     @QSignal final void availableVirtualGeometryChanged(QRect area);
98 
99 protected:
100     this(ref QInputDevicePrivate d, QObject parent);
101 
102     /+ Q_DISABLE_COPY_MOVE(QInputDevice) +/
103     mixin(CREATE_CONVENIENCE_WRAPPERS);
104 }
105 /+pragma(inline, true) QFlags!(QInputDevice.DeviceTypes.enum_type) operator |(QInputDevice.DeviceTypes.enum_type f1, QInputDevice.DeviceTypes.enum_type f2)/+noexcept+/{return QFlags!(QInputDevice.DeviceTypes.enum_type)(f1)|f2;}+/
106 /+pragma(inline, true) QFlags!(QInputDevice.DeviceTypes.enum_type) operator |(QInputDevice.DeviceTypes.enum_type f1, QFlags!(QInputDevice.DeviceTypes.enum_type) f2)/+noexcept+/{return f2|f1;}+/
107 /+pragma(inline, true) QFlags!(QInputDevice.DeviceTypes.enum_type) operator &(QInputDevice.DeviceTypes.enum_type f1, QInputDevice.DeviceTypes.enum_type f2)/+noexcept+/{return QFlags!(QInputDevice.DeviceTypes.enum_type)(f1)&f2;}+/
108 /+pragma(inline, true) QFlags!(QInputDevice.DeviceTypes.enum_type) operator &(QInputDevice.DeviceTypes.enum_type f1, QFlags!(QInputDevice.DeviceTypes.enum_type) f2)/+noexcept+/{return f2&f1;}+/
109 /+pragma(inline, true) void operator +(QInputDevice.DeviceTypes.enum_type f1, QInputDevice.DeviceTypes.enum_type f2)/+noexcept+/;+/
110 /+pragma(inline, true) void operator +(QInputDevice.DeviceTypes.enum_type f1, QFlags!(QInputDevice.DeviceTypes.enum_type) f2)/+noexcept+/;+/
111 /+pragma(inline, true) void operator +(int f1, QFlags!(QInputDevice.DeviceTypes.enum_type) f2)/+noexcept+/;+/
112 /+pragma(inline, true) void operator -(QInputDevice.DeviceTypes.enum_type f1, QInputDevice.DeviceTypes.enum_type f2)/+noexcept+/;+/
113 /+pragma(inline, true) void operator -(QInputDevice.DeviceTypes.enum_type f1, QFlags!(QInputDevice.DeviceTypes.enum_type) f2)/+noexcept+/;+/
114 /+pragma(inline, true) void operator -(int f1, QFlags!(QInputDevice.DeviceTypes.enum_type) f2)/+noexcept+/;+/
115 /+pragma(inline, true) QIncompatibleFlag operator |(QInputDevice.DeviceTypes.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
116 /+pragma(inline, true) void operator +(int f1, QInputDevice.DeviceTypes.enum_type f2)/+noexcept+/;+/
117 /+pragma(inline, true) void operator +(QInputDevice.DeviceTypes.enum_type f1, int f2)/+noexcept+/;+/
118 /+pragma(inline, true) void operator -(int f1, QInputDevice.DeviceTypes.enum_type f2)/+noexcept+/;+/
119 /+pragma(inline, true) void operator -(QInputDevice.DeviceTypes.enum_type f1, int f2)/+noexcept+/;+/
120 
121 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QInputDevice::DeviceTypes) +/
122 /+pragma(inline, true) QFlags!(QInputDevice.Capabilities.enum_type) operator |(QInputDevice.Capabilities.enum_type f1, QInputDevice.Capabilities.enum_type f2)/+noexcept+/{return QFlags!(QInputDevice.Capabilities.enum_type)(f1)|f2;}+/
123 /+pragma(inline, true) QFlags!(QInputDevice.Capabilities.enum_type) operator |(QInputDevice.Capabilities.enum_type f1, QFlags!(QInputDevice.Capabilities.enum_type) f2)/+noexcept+/{return f2|f1;}+/
124 /+pragma(inline, true) QFlags!(QInputDevice.Capabilities.enum_type) operator &(QInputDevice.Capabilities.enum_type f1, QInputDevice.Capabilities.enum_type f2)/+noexcept+/{return QFlags!(QInputDevice.Capabilities.enum_type)(f1)&f2;}+/
125 /+pragma(inline, true) QFlags!(QInputDevice.Capabilities.enum_type) operator &(QInputDevice.Capabilities.enum_type f1, QFlags!(QInputDevice.Capabilities.enum_type) f2)/+noexcept+/{return f2&f1;}+/
126 /+pragma(inline, true) void operator +(QInputDevice.Capabilities.enum_type f1, QInputDevice.Capabilities.enum_type f2)/+noexcept+/;+/
127 /+pragma(inline, true) void operator +(QInputDevice.Capabilities.enum_type f1, QFlags!(QInputDevice.Capabilities.enum_type) f2)/+noexcept+/;+/
128 /+pragma(inline, true) void operator +(int f1, QFlags!(QInputDevice.Capabilities.enum_type) f2)/+noexcept+/;+/
129 /+pragma(inline, true) void operator -(QInputDevice.Capabilities.enum_type f1, QInputDevice.Capabilities.enum_type f2)/+noexcept+/;+/
130 /+pragma(inline, true) void operator -(QInputDevice.Capabilities.enum_type f1, QFlags!(QInputDevice.Capabilities.enum_type) f2)/+noexcept+/;+/
131 /+pragma(inline, true) void operator -(int f1, QFlags!(QInputDevice.Capabilities.enum_type) f2)/+noexcept+/;+/
132 /+pragma(inline, true) QIncompatibleFlag operator |(QInputDevice.Capabilities.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
133 /+pragma(inline, true) void operator +(int f1, QInputDevice.Capabilities.enum_type f2)/+noexcept+/;+/
134 /+pragma(inline, true) void operator +(QInputDevice.Capabilities.enum_type f1, int f2)/+noexcept+/;+/
135 /+pragma(inline, true) void operator -(int f1, QInputDevice.Capabilities.enum_type f2)/+noexcept+/;+/
136 /+pragma(inline, true) void operator -(QInputDevice.Capabilities.enum_type f1, int f2)/+noexcept+/;+/
137 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QInputDevice::Capabilities)
138 #ifndef QT_NO_DEBUG_STREAM
139 Q_GUI_EXPORT QDebug operator<<(QDebug, const QInputDevice *);
140 #endif +/
141