#ifndef _included_input_helper #define _included_input_helper #include #include // For HIToolbox kVK_ keycodes and TIS funcitons. #ifdef USE_IOKIT #include #endif #include #ifndef USE_IOKIT // Some of the system key codes that are needed from IOKit. #define NX_KEYTYPE_SOUND_UP 0x00 #define NX_KEYTYPE_SOUND_DOWN 0x01 #define NX_KEYTYPE_MUTE 0x07 /* Display controls... #define NX_KEYTYPE_BRIGHTNESS_UP 0x02 #define NX_KEYTYPE_BRIGHTNESS_DOWN 0x03 #define NX_KEYTYPE_CONTRAST_UP 0x0B #define NX_KEYTYPE_CONTRAST_DOWN 0x0C #define NX_KEYTYPE_ILLUMINATION_UP 0x15 #define NX_KEYTYPE_ILLUMINATION_DOWN 0x16 #define NX_KEYTYPE_ILLUMINATION_TOGGLE 0x17 */ #define NX_KEYTYPE_CAPS_LOCK 0x04 //#define NX_KEYTYPE_HELP 0x05 #define NX_POWER_KEY 0x06 #define NX_KEYTYPE_EJECT 0x0E #define NX_KEYTYPE_PLAY 0x10 #define NX_KEYTYPE_NEXT 0x12 #define NX_KEYTYPE_PREVIOUS 0x13 /* There is no official fast-forward or rewind scan code support.*/ #define NX_KEYTYPE_FAST 0x14 #define NX_KEYTYPE_REWIND 0x15 #endif // These virtual key codes do not appear to be defined anywhere by Apple. #define kVK_NX_Power 0xE0 | NX_POWER_KEY /* 0xE6 */ #define kVK_NX_Eject 0xE0 | NX_KEYTYPE_EJECT /* 0xEE */ #define kVK_MEDIA_Play 0xE0 | NX_KEYTYPE_PLAY /* 0xF0 */ #define kVK_MEDIA_Next 0xE0 | NX_KEYTYPE_NEXT /* 0xF1 */ #define kVK_MEDIA_Previous 0xE0 | NX_KEYTYPE_PREVIOUS /* 0xF2 */ #define kVK_RightCommand 0x36 #define kVK_ContextMenu 0x6E // AKA kMenuPowerGlyph #define kVK_Undefined 0xFF // These button codes do not appear to be defined anywhere by Apple. #define kVK_LBUTTON kCGMouseButtonLeft #define kVK_RBUTTON kCGMouseButtonRight #define kVK_MBUTTON kCGMouseButtonCenter #define kVK_XBUTTON1 3 #define kVK_XBUTTON2 4 // These button masks do not appear to be defined anywhere by Apple. #define kCGEventFlagMaskButtonLeft 1 << 0 #define kCGEventFlagMaskButtonRight 1 << 1 #define kCGEventFlagMaskButtonCenter 1 << 2 #define kCGEventFlagMaskXButton1 1 << 3 #define kCGEventFlagMaskXButton2 1 << 4 /* Check for access to Apples accessibility API. */ extern bool is_accessibility_enabled(); /* Converts an OSX key code and event mask to the appropriate Unicode character * representation. */ extern UniCharCount keycode_to_unicode(CGEventRef event_ref, UniChar *buffer, UniCharCount size); /* Converts an OSX keycode to the appropriate IOHook scancode constant. */ extern uint16_t keycode_to_scancode(UInt64 keycode); /* Converts a IOHook scancode constant to the appropriate OSX keycode. */ extern UInt64 scancode_to_keycode(uint16_t keycode); /* Initialize items required for KeyCodeToKeySym() and KeySymToUnicode() * functionality. This method is called by OnLibraryLoad() and may need to be * called in combination with UnloadInputHelper() if the native keyboard layout * is changed. */ extern void load_input_helper(); /* De-initialize items required for KeyCodeToKeySym() and KeySymToUnicode() * functionality. This method is called by OnLibraryUnload() and may need to be * called in combination with LoadInputHelper() if the native keyboard layout * is changed. */ extern void unload_input_helper(); #endif