OpenCore  1.0.4
OpenCore Bootloader
1.0.4
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PointerHandler.c File Reference
#include <AppleMacEfi.h>
#include <Guid/AppleVariable.h>
#include <Protocol/GraphicsOutput.h>
#include <Protocol/UgaDraw.h>
#include <Protocol/SimplePointer.h>
#include <Library/AppleEventLib.h>
#include <Library/OcAppleEventLib.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/TimerLib.h>
#include "AppleEventInternal.h"

Go to the source code of this file.

Data Structures

struct  POINTER_BUTTON_INFORMATION
 
struct  SIMPLE_POINTER_INSTANCE
 

Macros

#define MIN_POINTER_POLL_PERIOD   10
 
#define MAX_POINTER_POLL_PERIOD   80
 
#define MAX_CLICK_DURATION   148
 
#define MAX_DOUBLE_CLICK_SPEED   748
 
#define MAX_POLL_DURATION   ((MAX_UINT32 / 10000) / MAX_DOUBLE_CLICK_SPEED)
 
#define MINIMAL_MOVEMENT   5
 

Functions

VOID InternalInitializePointerUiScale (VOID)
 
VOID InternalSetPointerPolling (IN UINT32 PointerPollMin, IN UINT32 PointerPollMax, IN UINT32 PointerPollMask)
 
VOID InternalSetPointerSpeed (IN UINT16 PointerSpeedDiv, IN UINT16 PointerSpeedMul)
 
VOID InternalSetDwellClicking (IN UINT16 ClickTimeout, IN UINT16 DoubleClickTimeout, IN UINT16 Radius)
 
STATIC VOID InternalRegisterSimplePointerInterface (IN EFI_HANDLE Handle, IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer)
 
VOID EventSimplePointerDesctructor (VOID)
 
STATIC VOID InternalRemoveUninstalledInstances (IN OUT SIMPLE_POINTER_INSTANCE **InstancesPtr, IN UINTN *NumberOfInstances, IN EFI_GUID *Protocol)
 
STATIC VOID EFIAPI InternalSimplePointerInstallNotifyFunction (IN EFI_EVENT Event, IN VOID *Context)
 
EFI_STATUS EventCreateSimplePointerInstallNotifyEvent (VOID)
 
VOID EventCloseSimplePointerInstallNotifyEvent (VOID)
 
STATIC VOID InternalGetScreenResolution (VOID)
 
STATIC INT64 InternalGetUiScaleData (IN INT64 Movement)
 
STATIC APPLE_EVENT_INFORMATIONInternalCreatePointerEventQueueInformation (IN APPLE_EVENT_TYPE EventType, IN APPLE_MODIFIER_MAP Modifiers)
 
STATIC VOID InternalHandleButtonInteraction (IN EFI_STATUS PointerStatus, IN OUT POINTER_BUTTON_INFORMATION *Pointer, IN APPLE_MODIFIER_MAP Modifiers)
 
STATIC VOID InternalResetDwellClicking (VOID)
 
STATIC VOID InternalQueueDwellClick (IN APPLE_EVENT_TYPE EventType, IN APPLE_MODIFIER_MAP Modifiers)
 
STATIC VOID InternalHandleDwellClicking (IN APPLE_MODIFIER_MAP Modifiers)
 
STATIC VOID EFIAPI InternalSimplePointerPollNotifyFunction (IN EFI_EVENT Event, IN VOID *Context)
 
EFI_STATUS EventCreateSimplePointerPollEvent (VOID)
 
VOID EventCancelSimplePointerPollEvent (VOID)
 
EFI_STATUS EventSetCursorPositionImpl (IN DIMENSION *Position)
 

Variables

GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mPointerSpeedDiv = 0
 
GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mPointerSpeedMul = 0
 
STATIC UINT16 mMaximumDoubleClickSpeed = 0
 
STATIC UINT16 mMaximumClickDuration = 0
 
STATIC EFI_EVENT mSimplePointerInstallNotifyEvent = NULL
 
STATIC VOID * mSimplePointerInstallNotifyRegistration = NULL
 
STATIC SIMPLE_POINTER_INSTANCEmPointerProtocols = NULL
 
STATIC UINTN mNumberOfPointerProtocols = 0
 
STATIC EFI_EVENT mSimplePointerPollEvent = NULL
 
STATIC UINT32 mSimplePointerPollTime = 0
 
STATIC UINT32 mSimplePointerMinPollTime = 0
 
STATIC UINT32 mSimplePointerMaxPollTime = 0
 
STATIC UINT32 mSimplePointerPollMask = POINTER_POLL_ALL_MASK
 
STATIC UINT8 mUiScale = 1
 
STATIC POINTER_BUTTON_INFORMATION mLeftButtonInfo
 
STATIC POINTER_BUTTON_INFORMATION mRightButtonInfo
 
STATIC DIMENSION mCursorPosition
 
STATIC BOOLEAN mMouseMoved
 
STATIC DIMENSION mResolution = { 800, 600 }
 
STATIC UINT64 mMaxPointerResolutionX = 1
 
STATIC UINT64 mMaxPointerResolutionY = 1
 
STATIC UINT64 mPointerRawX
 
STATIC UINT64 mPointerRawY
 
STATIC UINT32 mDwellClickTimeout
 
STATIC UINT32 mDwellDoubleClickTimeout
 
STATIC UINT32 mDwellClickRadiusSqr
 
STATIC DIMENSION mDwellPosition
 
STATIC UINT32 mDwellClickTime
 

Detailed Description

AppleEventDxe

Copyright (c) 2018, vit9696

All rights reserved.

This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Definition in file PointerHandler.c.

Macro Definition Documentation

◆ MAX_CLICK_DURATION

#define MAX_CLICK_DURATION   148

Definition at line 50 of file PointerHandler.c.

◆ MAX_DOUBLE_CLICK_SPEED

#define MAX_DOUBLE_CLICK_SPEED   748

Definition at line 51 of file PointerHandler.c.

◆ MAX_POINTER_POLL_PERIOD

#define MAX_POINTER_POLL_PERIOD   80

Definition at line 48 of file PointerHandler.c.

◆ MAX_POLL_DURATION

#define MAX_POLL_DURATION   ((MAX_UINT32 / 10000) / MAX_DOUBLE_CLICK_SPEED)

Definition at line 53 of file PointerHandler.c.

◆ MIN_POINTER_POLL_PERIOD

#define MIN_POINTER_POLL_PERIOD   10

Definition at line 47 of file PointerHandler.c.

◆ MINIMAL_MOVEMENT

#define MINIMAL_MOVEMENT   5

Definition at line 62 of file PointerHandler.c.

Function Documentation

◆ EventCancelSimplePointerPollEvent()

VOID EventCancelSimplePointerPollEvent ( VOID )

Definition at line 1116 of file PointerHandler.c.

◆ EventCloseSimplePointerInstallNotifyEvent()

VOID EventCloseSimplePointerInstallNotifyEvent ( VOID )

Definition at line 505 of file PointerHandler.c.

◆ EventCreateSimplePointerInstallNotifyEvent()

EFI_STATUS EventCreateSimplePointerInstallNotifyEvent ( VOID )

Definition at line 468 of file PointerHandler.c.

◆ EventCreateSimplePointerPollEvent()

EFI_STATUS EventCreateSimplePointerPollEvent ( VOID )

Definition at line 1067 of file PointerHandler.c.

◆ EventSetCursorPositionImpl()

EFI_STATUS EventSetCursorPositionImpl ( IN DIMENSION * Position)

Definition at line 1129 of file PointerHandler.c.

◆ EventSimplePointerDesctructor()

VOID EventSimplePointerDesctructor ( VOID )

Definition at line 302 of file PointerHandler.c.

◆ InternalCreatePointerEventQueueInformation()

STATIC APPLE_EVENT_INFORMATION * InternalCreatePointerEventQueueInformation ( IN APPLE_EVENT_TYPE EventType,
IN APPLE_MODIFIER_MAP Modifiers )

Definition at line 635 of file PointerHandler.c.

◆ InternalGetScreenResolution()

STATIC VOID InternalGetScreenResolution ( VOID )

Definition at line 519 of file PointerHandler.c.

◆ InternalGetUiScaleData()

STATIC INT64 InternalGetUiScaleData ( IN INT64 Movement)

Definition at line 608 of file PointerHandler.c.

◆ InternalHandleButtonInteraction()

STATIC VOID InternalHandleButtonInteraction ( IN EFI_STATUS PointerStatus,
IN OUT POINTER_BUTTON_INFORMATION * Pointer,
IN APPLE_MODIFIER_MAP Modifiers )

Definition at line 668 of file PointerHandler.c.

◆ InternalHandleDwellClicking()

STATIC VOID InternalHandleDwellClicking ( IN APPLE_MODIFIER_MAP Modifiers)

Definition at line 812 of file PointerHandler.c.

◆ InternalInitializePointerUiScale()

VOID InternalInitializePointerUiScale ( VOID )

Definition at line 154 of file PointerHandler.c.

◆ InternalQueueDwellClick()

STATIC VOID InternalQueueDwellClick ( IN APPLE_EVENT_TYPE EventType,
IN APPLE_MODIFIER_MAP Modifiers )

Definition at line 778 of file PointerHandler.c.

◆ InternalRegisterSimplePointerInterface()

STATIC VOID InternalRegisterSimplePointerInterface ( IN EFI_HANDLE Handle,
IN EFI_SIMPLE_POINTER_PROTOCOL * SimplePointer )

Definition at line 238 of file PointerHandler.c.

◆ InternalRemoveUninstalledInstances()

STATIC VOID InternalRemoveUninstalledInstances ( IN OUT SIMPLE_POINTER_INSTANCE ** InstancesPtr,
IN UINTN * NumberOfInstances,
IN EFI_GUID * Protocol )

Definition at line 320 of file PointerHandler.c.

◆ InternalResetDwellClicking()

STATIC VOID InternalResetDwellClicking ( VOID )

Definition at line 764 of file PointerHandler.c.

◆ InternalSetDwellClicking()

VOID InternalSetDwellClicking ( IN UINT16 ClickTimeout,
IN UINT16 DoubleClickTimeout,
IN UINT16 Radius )

Definition at line 224 of file PointerHandler.c.

◆ InternalSetPointerPolling()

VOID InternalSetPointerPolling ( IN UINT32 PointerPollMin,
IN UINT32 PointerPollMax,
IN UINT32 PointerPollMask )

Definition at line 175 of file PointerHandler.c.

◆ InternalSetPointerSpeed()

VOID InternalSetPointerSpeed ( IN UINT16 PointerSpeedDiv,
IN UINT16 PointerSpeedMul )

Definition at line 204 of file PointerHandler.c.

◆ InternalSimplePointerInstallNotifyFunction()

STATIC VOID EFIAPI InternalSimplePointerInstallNotifyFunction ( IN EFI_EVENT Event,
IN VOID * Context )

Definition at line 418 of file PointerHandler.c.

◆ InternalSimplePointerPollNotifyFunction()

STATIC VOID EFIAPI InternalSimplePointerPollNotifyFunction ( IN EFI_EVENT Event,
IN VOID * Context )

Definition at line 850 of file PointerHandler.c.

Variable Documentation

◆ mCursorPosition

STATIC DIMENSION mCursorPosition

Definition at line 133 of file PointerHandler.c.

◆ mDwellClickRadiusSqr

STATIC UINT32 mDwellClickRadiusSqr

Definition at line 149 of file PointerHandler.c.

◆ mDwellClickTime

STATIC UINT32 mDwellClickTime

Definition at line 151 of file PointerHandler.c.

◆ mDwellClickTimeout

STATIC UINT32 mDwellClickTimeout

Definition at line 147 of file PointerHandler.c.

◆ mDwellDoubleClickTimeout

STATIC UINT32 mDwellDoubleClickTimeout

Definition at line 148 of file PointerHandler.c.

◆ mDwellPosition

STATIC DIMENSION mDwellPosition

Definition at line 150 of file PointerHandler.c.

◆ mLeftButtonInfo

STATIC POINTER_BUTTON_INFORMATION mLeftButtonInfo
Initial value:
= {
0,
0,
0,
FALSE,
FALSE,
{ 0, 0 },
{ 0, 0 }
}
#define APPLE_EVENT_TYPE_LEFT_BUTTON
Definition AppleEvent.h:26

Definition at line 109 of file PointerHandler.c.

◆ mMaximumClickDuration

STATIC UINT16 mMaximumClickDuration = 0

Definition at line 59 of file PointerHandler.c.

◆ mMaximumDoubleClickSpeed

STATIC UINT16 mMaximumDoubleClickSpeed = 0

Definition at line 58 of file PointerHandler.c.

◆ mMaxPointerResolutionX

STATIC UINT64 mMaxPointerResolutionX = 1

Definition at line 141 of file PointerHandler.c.

◆ mMaxPointerResolutionY

STATIC UINT64 mMaxPointerResolutionY = 1

Definition at line 142 of file PointerHandler.c.

◆ mMouseMoved

STATIC BOOLEAN mMouseMoved

Definition at line 136 of file PointerHandler.c.

◆ mNumberOfPointerProtocols

STATIC UINTN mNumberOfPointerProtocols = 0

Definition at line 93 of file PointerHandler.c.

◆ mPointerProtocols

STATIC SIMPLE_POINTER_INSTANCE* mPointerProtocols = NULL

Definition at line 90 of file PointerHandler.c.

◆ mPointerRawX

STATIC UINT64 mPointerRawX

Definition at line 144 of file PointerHandler.c.

◆ mPointerRawY

STATIC UINT64 mPointerRawY

Definition at line 145 of file PointerHandler.c.

◆ mPointerSpeedDiv

GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mPointerSpeedDiv = 0

Definition at line 55 of file PointerHandler.c.

◆ mPointerSpeedMul

GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mPointerSpeedMul = 0

Definition at line 56 of file PointerHandler.c.

◆ mResolution

STATIC DIMENSION mResolution = { 800, 600 }

Definition at line 139 of file PointerHandler.c.

◆ mRightButtonInfo

STATIC POINTER_BUTTON_INFORMATION mRightButtonInfo
Initial value:
= {
0,
0,
0,
FALSE,
FALSE,
{ 0, 0 },
{ 0, 0 }
}
#define APPLE_EVENT_TYPE_RIGHT_BUTTON
Definition AppleEvent.h:27

Definition at line 121 of file PointerHandler.c.

◆ mSimplePointerInstallNotifyEvent

STATIC EFI_EVENT mSimplePointerInstallNotifyEvent = NULL

Definition at line 84 of file PointerHandler.c.

◆ mSimplePointerInstallNotifyRegistration

STATIC VOID* mSimplePointerInstallNotifyRegistration = NULL

Definition at line 87 of file PointerHandler.c.

◆ mSimplePointerMaxPollTime

STATIC UINT32 mSimplePointerMaxPollTime = 0

Definition at line 101 of file PointerHandler.c.

◆ mSimplePointerMinPollTime

STATIC UINT32 mSimplePointerMinPollTime = 0

Definition at line 100 of file PointerHandler.c.

◆ mSimplePointerPollEvent

STATIC EFI_EVENT mSimplePointerPollEvent = NULL

Definition at line 96 of file PointerHandler.c.

◆ mSimplePointerPollMask

STATIC UINT32 mSimplePointerPollMask = POINTER_POLL_ALL_MASK

Definition at line 103 of file PointerHandler.c.

◆ mSimplePointerPollTime

STATIC UINT32 mSimplePointerPollTime = 0

Definition at line 99 of file PointerHandler.c.

◆ mUiScale

STATIC UINT8 mUiScale = 1

Definition at line 106 of file PointerHandler.c.