6#ifndef QT_NO_TABLETEVENT
8#include <QtGui/qpointingdevice.h>
9#include <QtCore/private/qflatmap_p.h>
18- (
bool)handleTabletEvent:(NSEvent *)theEvent
22 if (!m_platformWindow)
25 NSEventType eventType = [theEvent
type];
26 if (eventType != NSEventTypeTabletPoint && [theEvent subtype] != NSEventSubtypeTabletPoint)
29 ulong timestamp = [theEvent timestamp] * 1000;
33 [self convertFromScreen:[self screenMousePoint:theEvent] toWindowPoint: &windowPoint andScreenPoint: &screenPoint];
37 const auto deviceId = theEvent.deviceID;
38 const auto *
device = devicesInProximity->value(deviceId);
39 if (!
device && deviceId == 0) {
42 device = tabletToolInstance(theEvent);
43 devicesInProximity->insert(deviceId,
device);
49 bool down = (eventType != NSEventTypeMouseMoved);
53 pressure = [theEvent pressure];
58 NSPoint tilt = [theEvent tilt];
59 int xTilt =
qRound(tilt.x * 60.0);
60 int yTilt =
qRound(tilt.y * -60.0);
61 qreal tangentialPressure = 0;
65 z = [theEvent absoluteZ];
68 tangentialPressure = ([theEvent tangentialPressure] * 2.0) - 1.0;
70 rotation = 360.0 - [theEvent rotation];
74 Qt::KeyboardModifiers keyboardModifiers = QAppleKeyMapper::fromCocoaModifiers(theEvent.modifierFlags);
75 Qt::MouseButtons buttons = ignoreButtonMapping ?
static_cast<Qt::MouseButtons
>(
static_cast<uint>([theEvent buttonMask])) :
m_buttons;
78 buttons, pressure, xTilt, yTilt, tangentialPressure, rotation,
z, keyboardModifiers);
82- (
void)tabletPoint:(NSEvent *)theEvent
84 if ([self isTransparentForUserInput])
85 return [super tabletPoint:theEvent];
87 [
self handleTabletEvent: theEvent];
99 qint64 uid = theEvent.uniqueID;
100 uint bits = theEvent.vendorPointingDeviceType;
101 if (
bits == 0 && uid != 0) {
116 if (((
bits & 0x0006) == 0x0002) && (toolId != 0x0902)) {
146 uint capabilityMask = theEvent.capabilityMask;
147 if (capabilityMask & 0x0200)
149 if (capabilityMask & 0x0800)
153 switch (theEvent.pointingDeviceType) {
154 case NSPointingDeviceTypeUnknown:
157 case NSPointingDeviceTypePen:
160 case NSPointingDeviceTypeCursor:
163 case NSPointingDeviceTypeEraser:
169 auto windowSystemId = theEvent.deviceID;
183- (
void)tabletProximity:(NSEvent *)theEvent
185 if ([self isTransparentForUserInput])
186 return [super tabletProximity:theEvent];
188 const ulong timestamp = theEvent.timestamp * 1000;
189 const qint64 windowSystemId = theEvent.deviceID;
194 if (theEvent.isEnteringProximity)
195 devicesInProximity->insert_or_assign(windowSystemId,
device);
197 devicesInProximity->remove(windowSystemId);
IOBluetoothDevice * device
static QCocoaIntegration * instance()
\inmodule QtCore\reentrant
static const QPointingDevice * queryTabletDevice(QInputDevice::DeviceType deviceType, QPointingDevice::PointerType pointerType, QPointingDeviceUniqueId uniqueId, QInputDevice::Capabilities capabilities=QInputDevice::Capability::None, qint64 systemId=0)
static QPointingDevicePrivate * get(QPointingDevice *q)
static QPointingDeviceUniqueId fromNumericId(qint64 id)
Constructs a unique pointer ID from numeric ID id.
The QPointingDevice class describes a device from which mouse, touch or tablet events originate.
PointerType
This enum represents what is interacting with the pointing device.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static bool handleTabletEvent(QWindow *window, ulong timestamp, const QPointingDevice *device, const QPointF &local, const QPointF &global, Qt::MouseButtons buttons, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
static void registerInputDevice(const QInputDevice *device)
static bool handleTabletEnterLeaveProximityEvent(QWindow *window, ulong timestamp, const QPointingDevice *device, bool inProximity, const QPointF &local=QPointF(), const QPointF &global=QPointF(), Qt::MouseButtons buttons={}, int xTilt=0, int yTilt=0, qreal tangentialPressure=0, qreal rotation=0, int z=0, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
int qRound(qfloat16 d) noexcept
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
#define Q_LOGGING_CATEGORY(name,...)
Qt::MouseButtons m_buttons
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat z
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const void * bits
Q_CORE_EXPORT bool qEnvironmentVariableIsSet(const char *varName) noexcept
static QPointingDevice::PointerType pointerType(unsigned currentCursor)