mirror of
https://github.com/robotn/gohook.git
synced 2024-11-15 04:46:38 +08:00
104 lines
3.3 KiB
C
104 lines
3.3 KiB
C
|
|
#ifndef _included_input_helper
|
|
#define _included_input_helper
|
|
|
|
#include <ApplicationServices/ApplicationServices.h>
|
|
#include <Carbon/Carbon.h> // For HIToolbox kVK_ keycodes and TIS funcitons.
|
|
#ifdef USE_IOKIT
|
|
#include <IOKit/hidsystem/ev_keymap.h>
|
|
#endif
|
|
#include <stdbool.h>
|
|
|
|
|
|
#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
|