macos-corelibs-0.0.1.0: src/MacSdk/Framework/CoreGraphics/Event/Field.hsc
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
-- | Constants and ADTs used as keys to access specialized fields in low-level
-- Quartz events.
module MacSdk.Framework.CoreGraphics.Event.Field where
#include <Carbon/Carbon.h>
import Data.Word
data EventField :: * -> * where
-- | Key to access an integer field that contains the mouse button event number.
-- Matching mouse-down and mouse-up events will have the same event number.
MouseEventNumber :: EventField Word64
-- | Key to access an integer field that contains the mouse button click state.
-- A click state of 1 represents a single click. A click state of 2 represents a
-- double-click. A click state of 3 represents a triple-click.
MouseEventClickState :: EventField Word64
-- | Key to access a double field that contains the mouse button pressure. The
-- pressure value may range from 0 to 1, with 0 representing the mouse being up.
-- This value is commonly set by tablet pens mimicking a mouse.
MouseEventPressure :: EventField Double
-- | Key to access an integer field that contains the mouse button number. For
-- information about the possible values, see CGMouseButton.
MouseEventButtonNumber :: EventField Word64
-- | Key to access an integer field that contains the horizontal mouse delta
-- since the last mouse movement event.
MouseEventDeltaX :: EventField Word64
-- | Key to access an integer field that contains the vertical mouse delta since
-- the last mouse movement event.
MouseEventDeltaY :: EventField Word64
-- | Key to access an integer field. The value is non-zero if the event should
-- be ignored by the Inkwell subsystem.
MouseEventInstantMouser :: EventField Word64
-- | Key to access an integer field that encodes the mouse event subtype as a
-- kCFNumberIntType.
MouseEventSubtype :: EventField Word64
-- | Key to access an integer field, non-zero when this is an autorepeat of a
-- key-down, and zero otherwise.
KeyboardEventAutorepeat :: EventField Word64
-- | Key to access an integer field that contains the virtual keycode of the
-- key-down or key-up event.
KeyboardEventKeycode :: EventField Word64
-- | Key to access an integer field that contains the keyboard type identifier.
KeyboardEventKeyboardType :: EventField Word64
-- | Key to access an integer field that contains scrolling data. This field
-- typically contains the change in vertical position since the last scrolling
-- event from a Mighty Mouse scroller or a single-wheel mouse scroller.
ScrollWheelEventDeltaAxis1 :: EventField Double
-- | Key to access an integer field that contains scrolling data. This field
-- typically contains the change in horizontal position since the last scrolling
-- event from a Mighty Mouse scroller.
ScrollWheelEventDeltaAxis2 :: EventField Double
-- | Key to access a field that contains scrolling data. The scrolling data
-- represents a line-based or pixel-based change in vertical position since the
-- last scrolling event from a Mighty Mouse scroller or a single-wheel mouse
-- scroller. The scrolling data uses a fixed-point 16.16 signed integer format.
-- For example, if the field contains a value of 1.0, the integer 0x00010000 is
-- returned by CGEventGetIntegerValueField. If this key is passed to
-- CGEventGetDoubleValueField, the fixed-point value is converted to a double
-- value.
ScrollWheelEventFixedPtDeltaAxis1 :: EventField Word64
-- | Key to access a field that contains scrolling data. The scrolling data
-- represents a line-based or pixel-based change in horizontal position since
-- the last scrolling event from a Mighty Mouse scroller. The scrolling data
-- uses a fixed-point 16.16 signed integer format. For example, if the field
-- contains a value of 1.0, the integer 0x00010000 is returned by
-- CGEventGetIntegerValueField. If this key is passed to
-- CGEventGetDoubleValueField, the fixed-point value is converted to a double
-- value.
ScrollWheelEventFixedPtDeltaAxis2 :: EventField Word64
-- | Key to access an integer field that contains pixel-based scrolling data.
-- The scrolling data represents the change in vertical position since the last
-- scrolling event from a Mighty Mouse scroller or a single-wheel mouse
-- scroller.
ScrollWheelEventPointDeltaAxis1 :: EventField Word64
-- | Key to access an integer field that contains pixel-based scrolling data.
-- The scrolling data represents the change in horizontal position since the
-- last scrolling event from a Mighty Mouse scroller.
ScrollWheelEventPointDeltaAxis2 :: EventField Word64
-- | Key to access an integer field that indicates whether the event should be
-- ignored by the Inkwell subsystem. If the value is non-zero, the event should be ignored.
ScrollWheelEventInstantMouser :: EventField Word64
-- | Key to access an integer field that contains the absolute X coordinate in
-- tablet space at full tablet resolution.
TabletEventPointX :: EventField Word64
-- | Key to access an integer field that contains the absolute Y coordinate in
-- tablet space at full tablet resolution.
TabletEventPointY :: EventField Word64
-- | Key to access an integer field that contains the absolute Z coordinate in
-- tablet space at full tablet resolution.
TabletEventPointZ :: EventField Word64
-- | Key to access an integer field that contains the tablet button state. Bit 0
-- is the first button, and a set bit represents a closed or pressed button. Up
-- to 16 buttons are supported.
TabletEventPointButtons :: EventField Word64
-- | Key to access a double field that contains the tablet pen pressure.
-- A value of 0.0 represents no pressure, and 1.0 represents maximum pressure.
TabletEventPointPressure :: EventField Double
-- | Key to access a double field that contains the horizontal tablet pen tilt.
-- A value of 0.0 represents no tilt, and 1.0 represents maximum tilt.
TabletEventTiltX :: EventField Double
-- | Key to access a double field that contains the vertical tablet pen tilt.
-- A value of 0.0 represents no tilt, and 1.0 represents maximum tilt.
TabletEventTiltY :: EventField Double
-- | Key to access a double field that contains the tablet pen rotation.
TabletEventRotation :: EventField Double
-- | Key to access a double field that contains the tangential pressure on the
-- device. A value of 0.0 represents no pressure, and 1.0 represents maximum
-- pressure.
TabletEventTangentialPressure :: EventField Double
-- | Key to access an integer field that contains the system-assigned unique
-- device ID.
TabletEventDeviceID :: EventField Word64
-- | Key to access an integer field that contains a vendor-specified value.
TabletEventVendor1 :: EventField Word64
-- | Key to access an integer field that contains a vendor-specified value.
TabletEventVendor2 :: EventField Word64
-- | Key to access an integer field that contains a vendor-specified value.
TabletEventVendor3 :: EventField Word64
-- | Key to access an integer field that contains the vendor-defined ID,
-- typically the USB vendor ID.
TabletProximityEventVendorID :: EventField Word64
-- | Key to access an integer field that contains the vendor-defined tablet ID,
-- typically the USB product ID.
TabletProximityEventTabletID :: EventField Word64
-- | Key to access an integer field that contains the vendor-defined ID of the
-- pointing device.
TabletProximityEventPointerID :: EventField Word64
-- | Key to access an integer field that contains the system-assigned device ID.
TabletProximityEventDeviceID :: EventField Word64
-- | Key to access an integer field that contains the system-assigned unique
-- tablet ID.
TabletProximityEventSystemTabletID :: EventField Word64
-- | Key to access an integer field that contains the vendor-assigned pointer
-- type.
TabletProximityEventVendorPointerType :: EventField Word64
-- | Key to access an integer field that contains the vendor-defined pointer
-- serial number.
TabletProximityEventVendorPointerSerialNumber :: EventField Word64
-- | Key to access an integer field that contains the vendor-defined unique ID.
TabletProximityEventVendorUniqueID :: EventField Word64
-- | Key to access an integer field that contains the device capabilities mask.
TabletProximityEventCapabilityMask :: EventField Word64
-- | Key to access an integer field that contains the pointer type.
TabletProximityEventPointerType :: EventField Word64
-- | Key to access an integer field that indicates whether the pen is in
-- proximity to the tablet. The value is non-zero if the pen is in proximity to
-- the tablet and zero when leaving the tablet.
TabletProximityEventEnterProximity :: EventField Word64
-- | Key to access a field that contains the event target process serial
-- number. The value is a 64-bit long word.
EventTargetProcessSerialNumber :: EventField Word64
-- | Key to access a field that contains the event target Unix process ID.
EventTargetUnixProcessID :: EventField Word64
-- | Key to access a field that contains the event source Unix process ID.
EventSourceUnixProcessID :: EventField Word64
-- | Key to access a field that contains the event source user-supplied data,
-- up to 64 bits.
EventSourceUserData :: EventField Word64
-- | Key to access a field that contains the event source Unix effective UID.
EventSourceUserID :: EventField Word64
-- | Key to access a field that contains the event source Unix effective GID.
EventSourceGroupID :: EventField Word64
-- | Key to access a field that contains the event source state ID used to
-- create this event.
EventSourceStateID :: EventField Word64
-- | Key to access an integer field that indicates whether a scrolling event
-- contains continuous, pixel-based scrolling data. The value is non-zero when
-- the scrolling data is pixel-based and zero when the scrolling data is
-- line-based.
ScrollWheelEventIsContinuous :: EventField Word64
MouseEventWindowUnderMousePointer :: EventField Word64
MouseEventWindowUnderMousePointerThatCanHandleThisEvent :: EventField Word64
ScrollWheelEventMomentumPhase :: EventField Word64
ScrollWheelEventScrollCount :: EventField Word64
ScrollWheelEventScrollPhase :: EventField Word64
mouseEventNumber :: Word32
mouseEventNumber = #const kCGMouseEventNumber
mouseEventClickState :: Word32
mouseEventClickState = #const kCGMouseEventClickState
mouseEventPressure :: Word32
mouseEventPressure = #const kCGMouseEventPressure
mouseEventButtonNumber :: Word32
mouseEventButtonNumber = #const kCGMouseEventButtonNumber
mouseEventDeltaX :: Word32
mouseEventDeltaX = #const kCGMouseEventDeltaX
mouseEventDeltaY :: Word32
mouseEventDeltaY = #const kCGMouseEventDeltaY
mouseEventInstantMouser :: Word32
mouseEventInstantMouser = #const kCGMouseEventInstantMouser
mouseEventSubtype :: Word32
mouseEventSubtype = #const kCGMouseEventSubtype
keyboardEventAutorepeat :: Word32
keyboardEventAutorepeat = #const kCGKeyboardEventAutorepeat
keyboardEventKeycode :: Word32
keyboardEventKeycode = #const kCGKeyboardEventKeycode
keyboardEventKeyboardType :: Word32
keyboardEventKeyboardType = #const kCGKeyboardEventKeyboardType
scrollWheelEventDeltaAxis1 :: Word32
scrollWheelEventDeltaAxis1 = #const kCGScrollWheelEventDeltaAxis1
scrollWheelEventDeltaAxis2 :: Word32
scrollWheelEventDeltaAxis2 = #const kCGScrollWheelEventDeltaAxis2
scrollWheelEventDeltaAxis3 :: Word32
scrollWheelEventDeltaAxis3 = #const kCGScrollWheelEventDeltaAxis3
scrollWheelEventFixedPtDeltaAxis1 :: Word32
scrollWheelEventFixedPtDeltaAxis1 = #const kCGScrollWheelEventFixedPtDeltaAxis1
scrollWheelEventFixedPtDeltaAxis2 :: Word32
scrollWheelEventFixedPtDeltaAxis2 = #const kCGScrollWheelEventFixedPtDeltaAxis2
scrollWheelEventFixedPtDeltaAxis3 :: Word32
scrollWheelEventFixedPtDeltaAxis3 = #const kCGScrollWheelEventFixedPtDeltaAxis3
scrollWheelEventPointDeltaAxis1 :: Word32
scrollWheelEventPointDeltaAxis1 = #const kCGScrollWheelEventPointDeltaAxis1
scrollWheelEventPointDeltaAxis2 :: Word32
scrollWheelEventPointDeltaAxis2 = #const kCGScrollWheelEventPointDeltaAxis2
scrollWheelEventPointDeltaAxis3 :: Word32
scrollWheelEventPointDeltaAxis3 = #const kCGScrollWheelEventPointDeltaAxis3
scrollWheelEventInstantMouser :: Word32
scrollWheelEventInstantMouser = #const kCGScrollWheelEventInstantMouser
tabletEventPointX :: Word32
tabletEventPointX = #const kCGTabletEventPointX
tabletEventPointY :: Word32
tabletEventPointY = #const kCGTabletEventPointY
tabletEventPointZ :: Word32
tabletEventPointZ = #const kCGTabletEventPointZ
tabletEventPointButtons :: Word32
tabletEventPointButtons = #const kCGTabletEventPointButtons
tabletEventPointPressure :: Word32
tabletEventPointPressure = #const kCGTabletEventPointPressure
tabletEventTiltX :: Word32
tabletEventTiltX = #const kCGTabletEventTiltX
tabletEventTiltY :: Word32
tabletEventTiltY = #const kCGTabletEventTiltY
tabletEventRotation :: Word32
tabletEventRotation = #const kCGTabletEventRotation
tabletEventTangentialPressure :: Word32
tabletEventTangentialPressure = #const kCGTabletEventTangentialPressure
tabletEventDeviceID :: Word32
tabletEventDeviceID = #const kCGTabletEventDeviceID
tabletEventVendor1 :: Word32
tabletEventVendor1 = #const kCGTabletEventVendor1
tabletEventVendor2 :: Word32
tabletEventVendor2 = #const kCGTabletEventVendor2
tabletEventVendor3 :: Word32
tabletEventVendor3 = #const kCGTabletEventVendor3
tabletProximityEventVendorID :: Word32
tabletProximityEventVendorID = #const kCGTabletProximityEventVendorID
tabletProximityEventTabletID :: Word32
tabletProximityEventTabletID = #const kCGTabletProximityEventTabletID
tabletProximityEventPointerID :: Word32
tabletProximityEventPointerID = #const kCGTabletProximityEventPointerID
tabletProximityEventDeviceID :: Word32
tabletProximityEventDeviceID = #const kCGTabletProximityEventDeviceID
tabletProximityEventSystemTabletID :: Word32
tabletProximityEventSystemTabletID = #const kCGTabletProximityEventSystemTabletID
tabletProximityEventVendorPointerType :: Word32
tabletProximityEventVendorPointerType = #const kCGTabletProximityEventVendorPointerType
tabletProximityEventVendorPointerSerialNumber :: Word32
tabletProximityEventVendorPointerSerialNumber = #const kCGTabletProximityEventVendorPointerSerialNumber
tabletProximityEventVendorUniqueID :: Word32
tabletProximityEventVendorUniqueID = #const kCGTabletProximityEventVendorUniqueID
tabletProximityEventCapabilityMask :: Word32
tabletProximityEventCapabilityMask = #const kCGTabletProximityEventCapabilityMask
tabletProximityEventPointerType :: Word32
tabletProximityEventPointerType = #const kCGTabletProximityEventPointerType
tabletProximityEventEnterProximity :: Word32
tabletProximityEventEnterProximity = #const kCGTabletProximityEventEnterProximity
eventTargetProcessSerialNumber :: Word32
eventTargetProcessSerialNumber = #const kCGEventTargetProcessSerialNumber
eventTargetUnixProcessID :: Word32
eventTargetUnixProcessID = #const kCGEventTargetUnixProcessID
eventSourceUnixProcessID :: Word32
eventSourceUnixProcessID = #const kCGEventSourceUnixProcessID
eventSourceUserData :: Word32
eventSourceUserData = #const kCGEventSourceUserData
eventSourceUserID :: Word32
eventSourceUserID = #const kCGEventSourceUserID
eventSourceGroupID :: Word32
eventSourceGroupID = #const kCGEventSourceGroupID
eventSourceStateID :: Word32
eventSourceStateID = #const kCGEventSourceStateID
scrollWheelEventIsContinuous :: Word32
scrollWheelEventIsContinuous = #const kCGScrollWheelEventIsContinuous
mouseEventWindowUnderMousePointer :: Word32
mouseEventWindowUnderMousePointer = #const kCGMouseEventWindowUnderMousePointer
mouseEventWindowUnderMousePointerThatCanHandleThisEvent :: Word32
mouseEventWindowUnderMousePointerThatCanHandleThisEvent = #const kCGMouseEventWindowUnderMousePointerThatCanHandleThisEvent
scrollWheelEventMomentumPhase :: Word32
scrollWheelEventMomentumPhase = #const kCGScrollWheelEventMomentumPhase
scrollWheelEventScrollCount :: Word32
scrollWheelEventScrollCount = #const kCGScrollWheelEventScrollCount
scrollWheelEventScrollPhase :: Word32
scrollWheelEventScrollPhase = #const kCGScrollWheelEventScrollPhase
toEventFieldCode :: EventField ty -> Word32
toEventFieldCode = \case
MouseEventNumber -> mouseEventNumber
MouseEventClickState -> mouseEventClickState
MouseEventPressure -> mouseEventPressure
MouseEventButtonNumber -> mouseEventButtonNumber
MouseEventDeltaX -> mouseEventDeltaX
MouseEventDeltaY -> mouseEventDeltaY
MouseEventInstantMouser -> mouseEventInstantMouser
MouseEventSubtype -> mouseEventSubtype
KeyboardEventAutorepeat -> keyboardEventAutorepeat
KeyboardEventKeycode -> keyboardEventKeycode
KeyboardEventKeyboardType -> keyboardEventKeyboardType
ScrollWheelEventDeltaAxis1 -> scrollWheelEventDeltaAxis1
ScrollWheelEventDeltaAxis2 -> scrollWheelEventDeltaAxis2
ScrollWheelEventFixedPtDeltaAxis1 -> scrollWheelEventFixedPtDeltaAxis1
ScrollWheelEventFixedPtDeltaAxis2 -> scrollWheelEventFixedPtDeltaAxis2
ScrollWheelEventPointDeltaAxis1 -> scrollWheelEventPointDeltaAxis1
ScrollWheelEventPointDeltaAxis2 -> scrollWheelEventPointDeltaAxis2
ScrollWheelEventInstantMouser -> scrollWheelEventInstantMouser
TabletEventPointX -> tabletEventPointX
TabletEventPointY -> tabletEventPointY
TabletEventPointZ -> tabletEventPointZ
TabletEventPointButtons -> tabletEventPointButtons
TabletEventPointPressure -> tabletEventPointPressure
TabletEventTiltX -> tabletEventTiltX
TabletEventTiltY -> tabletEventTiltY
TabletEventRotation -> tabletEventRotation
TabletEventTangentialPressure -> tabletEventTangentialPressure
TabletEventDeviceID -> tabletEventDeviceID
TabletEventVendor1 -> tabletEventVendor1
TabletEventVendor2 -> tabletEventVendor2
TabletEventVendor3 -> tabletEventVendor3
TabletProximityEventVendorID -> tabletProximityEventVendorID
TabletProximityEventTabletID -> tabletProximityEventTabletID
TabletProximityEventPointerID -> tabletProximityEventPointerID
TabletProximityEventDeviceID -> tabletProximityEventDeviceID
TabletProximityEventSystemTabletID -> tabletProximityEventSystemTabletID
TabletProximityEventVendorPointerType -> tabletProximityEventVendorPointerType
TabletProximityEventVendorPointerSerialNumber -> tabletProximityEventVendorPointerSerialNumber
TabletProximityEventVendorUniqueID -> tabletProximityEventVendorUniqueID
TabletProximityEventCapabilityMask -> tabletProximityEventCapabilityMask
TabletProximityEventPointerType -> tabletProximityEventPointerType
TabletProximityEventEnterProximity -> tabletProximityEventEnterProximity
EventTargetProcessSerialNumber -> eventTargetProcessSerialNumber
EventTargetUnixProcessID -> eventTargetUnixProcessID
EventSourceUnixProcessID -> eventSourceUnixProcessID
EventSourceUserData -> eventSourceUserData
EventSourceUserID -> eventSourceUserID
EventSourceGroupID -> eventSourceGroupID
EventSourceStateID -> eventSourceStateID
ScrollWheelEventIsContinuous -> scrollWheelEventIsContinuous
MouseEventWindowUnderMousePointer -> mouseEventWindowUnderMousePointer
MouseEventWindowUnderMousePointerThatCanHandleThisEvent ->
mouseEventWindowUnderMousePointerThatCanHandleThisEvent
ScrollWheelEventMomentumPhase -> scrollWheelEventMomentumPhase
ScrollWheelEventScrollCount -> scrollWheelEventScrollCount
ScrollWheelEventScrollPhase -> scrollWheelEventScrollPhase
-- decideFieldType :: EventField ty
-- -> Either (Dict (ty ~ Word64)) (Dict (ty ~ Double))
decideFieldType
:: (ty ~ Word64 => a) -> (ty ~ Double => a) -> EventField ty -> a
decideFieldType f g = \case
MouseEventNumber -> f
MouseEventClickState -> f
MouseEventPressure -> g
MouseEventButtonNumber -> f
MouseEventDeltaX -> f
MouseEventDeltaY -> f
MouseEventInstantMouser -> f
MouseEventSubtype -> f
KeyboardEventAutorepeat -> f
KeyboardEventKeycode -> f
KeyboardEventKeyboardType -> f
ScrollWheelEventDeltaAxis1 -> g
ScrollWheelEventDeltaAxis2 -> g
ScrollWheelEventFixedPtDeltaAxis1 -> f
ScrollWheelEventFixedPtDeltaAxis2 -> f
ScrollWheelEventPointDeltaAxis1 -> f
ScrollWheelEventPointDeltaAxis2 -> f
ScrollWheelEventInstantMouser -> f
TabletEventPointX -> f
TabletEventPointY -> f
TabletEventPointZ -> f
TabletEventPointButtons -> f
TabletEventPointPressure -> g
TabletEventTiltX -> g
TabletEventTiltY -> g
TabletEventRotation -> g
TabletEventTangentialPressure -> g
TabletEventDeviceID -> f
TabletEventVendor1 -> f
TabletEventVendor2 -> f
TabletEventVendor3 -> f
TabletProximityEventVendorID -> f
TabletProximityEventTabletID -> f
TabletProximityEventPointerID -> f
TabletProximityEventDeviceID -> f
TabletProximityEventSystemTabletID -> f
TabletProximityEventVendorPointerType -> f
TabletProximityEventVendorPointerSerialNumber -> f
TabletProximityEventVendorUniqueID -> f
TabletProximityEventCapabilityMask -> f
TabletProximityEventPointerType -> f
TabletProximityEventEnterProximity -> f
EventTargetProcessSerialNumber -> f
EventTargetUnixProcessID -> f
EventSourceUnixProcessID -> f
EventSourceUserData -> f
EventSourceUserID -> f
EventSourceGroupID -> f
EventSourceStateID -> f
ScrollWheelEventIsContinuous -> f
MouseEventWindowUnderMousePointer -> f
MouseEventWindowUnderMousePointerThatCanHandleThisEvent -> f
ScrollWheelEventMomentumPhase -> f
ScrollWheelEventScrollCount -> f
ScrollWheelEventScrollPhase -> f