blob: 236938f9d4c72b8b9acaadea773c6fcbe1b169b5 [file] [log] [blame]
/*
* Copyright (C) 2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef IOKitSPI_h
#define IOKitSPI_h
#import <wtf/Platform.h>
#if PLATFORM(IOS)
#if USE(APPLE_INTERNAL_SDK)
#import <IOKit/hid/IOHIDEvent.h>
#import <IOKit/hid/IOHIDEventData.h>
#import <IOKit/hid/IOHIDEventSystemClient.h>
#import <IOKit/hid/IOHIDUsageTables.h>
#else
WTF_EXTERN_C_BEGIN
#ifdef __LP64__
typedef double IOHIDFloat;
#else
typedef float IOHIDFloat;
#endif
enum {
kIOHIDEventOptionNone = 0,
};
typedef UInt32 IOOptionBits;
typedef uint32_t IOHIDEventOptionBits;
typedef uint32_t IOHIDEventField;
typedef struct __IOHIDEventSystemClient * IOHIDEventSystemClientRef;
typedef struct __IOHIDEvent * IOHIDEventRef;
#define IOHIDEventFieldBase(type) (type << 16)
enum {
kHIDPage_KeyboardOrKeypad = 0x07,
kHIDPage_VendorDefinedStart = 0xFF00
};
enum {
kIOHIDDigitizerEventRange = 1<<0,
kIOHIDDigitizerEventTouch = 1<<1,
kIOHIDDigitizerEventPosition = 1<<2,
kIOHIDDigitizerEventIdentity = 1<<5,
kIOHIDDigitizerEventAttribute = 1<<6,
kIOHIDDigitizerEventCancel = 1<<7,
kIOHIDDigitizerEventStart = 1<<8,
kIOHIDDigitizerEventEstimatedAltitude = 1<<28,
kIOHIDDigitizerEventEstimatedAzimuth = 1<<29,
kIOHIDDigitizerEventEstimatedPressure = 1<<30
};
typedef uint32_t IOHIDDigitizerEventMask;
enum {
kIOHIDDigitizerEventUpdateAltitudeMask = 1<<28,
kIOHIDDigitizerEventUpdateAzimuthMask = 1<<29,
kIOHIDDigitizerEventUpdatePressureMask = 1<<30
};
enum {
kIOHIDEventTypeNULL,
kIOHIDEventTypeVendorDefined,
kIOHIDEventTypeKeyboard = 3,
kIOHIDEventTypeDigitizer = 11,
};
typedef uint32_t IOHIDEventType;
enum {
kIOHIDEventFieldVendorDefinedUsagePage = IOHIDEventFieldBase(kIOHIDEventTypeVendorDefined),
kIOHIDEventFieldVendorDefinedReserved,
kIOHIDEventFieldVendorDefinedReserved1,
kIOHIDEventFieldVendorDefinedDataLength,
kIOHIDEventFieldVendorDefinedData
};
enum {
kIOHIDEventFieldDigitizerX = IOHIDEventFieldBase(kIOHIDEventTypeDigitizer),
kIOHIDEventFieldDigitizerY,
kIOHIDEventFieldDigitizerMajorRadius = kIOHIDEventFieldDigitizerX + 20,
kIOHIDEventFieldDigitizerMinorRadius,
kIOHIDEventFieldDigitizerIsDisplayIntegrated = kIOHIDEventFieldDigitizerMajorRadius + 5,
};
enum {
kIOHIDTransducerRange = 0x00010000,
kIOHIDTransducerTouch = 0x00020000,
kIOHIDTransducerInvert = 0x00040000,
kIOHIDTransducerDisplayIntegrated = 0x00080000
};
enum {
kIOHIDDigitizerTransducerTypeHand = 3
};
typedef uint32_t IOHIDDigitizerTransducerType;
enum {
kIOHIDEventFieldDigitizerWillUpdateMask = 720924,
kIOHIDEventFieldDigitizerDidUpdateMask = 720925
};
IOHIDEventRef IOHIDEventCreateDigitizerEvent(CFAllocatorRef, uint64_t, IOHIDDigitizerTransducerType, uint32_t, uint32_t, IOHIDDigitizerEventMask, uint32_t, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, boolean_t, boolean_t, IOOptionBits);
IOHIDEventRef IOHIDEventCreateDigitizerFingerEvent(CFAllocatorRef, uint64_t, uint32_t, uint32_t, IOHIDDigitizerEventMask, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, boolean_t, boolean_t, IOHIDEventOptionBits);
IOHIDEventRef IOHIDEventCreateForceEvent(CFAllocatorRef, uint64_t, uint32_t, IOHIDFloat, uint32_t, IOHIDFloat, IOHIDEventOptionBits);
IOHIDEventRef IOHIDEventCreateKeyboardEvent(CFAllocatorRef, uint64_t, uint32_t, uint32_t, boolean_t, IOOptionBits);
IOHIDEventRef IOHIDEventCreateVendorDefinedEvent(CFAllocatorRef, uint64_t, uint32_t, uint32_t, uint32_t, uint8_t*, CFIndex, IOHIDEventOptionBits);
IOHIDEventRef IOHIDEventCreateDigitizerStylusEventWithPolarOrientation(CFAllocatorRef, uint64_t, uint32_t, uint32_t, IOHIDDigitizerEventMask, uint32_t, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, IOHIDFloat, boolean_t, boolean_t, IOHIDEventOptionBits);
IOHIDEventType IOHIDEventGetType(IOHIDEventRef);
void IOHIDEventSetFloatValue(IOHIDEventRef, IOHIDEventField, IOHIDFloat);
CFIndex IOHIDEventGetIntegerValue(IOHIDEventRef, IOHIDEventField);
void IOHIDEventSetIntegerValue(IOHIDEventRef, IOHIDEventField, CFIndex);
void IOHIDEventAppendEvent(IOHIDEventRef, IOHIDEventRef, IOOptionBits);
IOHIDEventSystemClientRef IOHIDEventSystemClientCreate(CFAllocatorRef);
#define kGSEventPathInfoInRange (1 << 0)
#define kGSEventPathInfoInTouch (1 << 1)
enum {
kHIDUsage_KeyboardA = 0x04,
kHIDUsage_Keyboard1 = 0x1E,
kHIDUsage_Keyboard2 = 0x1F,
kHIDUsage_Keyboard3 = 0x20,
kHIDUsage_Keyboard4 = 0x21,
kHIDUsage_Keyboard5 = 0x22,
kHIDUsage_Keyboard6 = 0x23,
kHIDUsage_Keyboard7 = 0x24,
kHIDUsage_Keyboard8 = 0x25,
kHIDUsage_Keyboard9 = 0x26,
kHIDUsage_Keyboard0 = 0x27,
kHIDUsage_KeyboardReturnOrEnter = 0x28,
kHIDUsage_KeyboardEscape = 0x29,
kHIDUsage_KeyboardDeleteOrBackspace = 0x2A,
kHIDUsage_KeyboardTab = 0x2B,
kHIDUsage_KeyboardSpacebar = 0x2C,
kHIDUsage_KeyboardHyphen = 0x2D,
kHIDUsage_KeyboardEqualSign = 0x2E,
kHIDUsage_KeyboardOpenBracket = 0x2F,
kHIDUsage_KeyboardCloseBracket = 0x30,
kHIDUsage_KeyboardBackslash = 0x31,
kHIDUsage_KeyboardSemicolon = 0x33,
kHIDUsage_KeyboardQuote = 0x34,
kHIDUsage_KeyboardGraveAccentAndTilde = 0x35,
kHIDUsage_KeyboardComma = 0x36,
kHIDUsage_KeyboardPeriod = 0x37,
kHIDUsage_KeyboardSlash = 0x38,
kHIDUsage_KeyboardF1 = 0x3A,
kHIDUsage_KeyboardHome = 0x4A,
kHIDUsage_KeyboardPageUp = 0x4B,
kHIDUsage_KeyboardEnd = 0x4D,
kHIDUsage_KeyboardRightArrow = 0x4F,
kHIDUsage_KeyboardLeftArrow = 0x50,
kHIDUsage_KeyboardDownArrow = 0x51,
kHIDUsage_KeyboardUpArrow = 0x52,
kHIDUsage_KeyboardLeftControl = 0xE0,
kHIDUsage_KeyboardLeftShift = 0xE1,
kHIDUsage_KeyboardLeftAlt = 0xE2
};
WTF_EXTERN_C_END
#endif // USE(APPLE_INTERNAL_SDK)
#endif // PLATFORM(IOS)
#endif // IOKitSPI_h