Andre wrote:Is there any possibility on MacOS to recognize a right-mouseclick in an empty (!) window, means without adding (dummy) imagegadgets or similar?
Code: Select all
#kEventClassMouse = 'mous'
#kEventMouseButtonPrimary = 1
#kEventMouseButtonSecondary = 2
#kEventMouseButtonTertiary = 3
#kEventMouseDown = 1
#kEventParamKeyModifiers = 'kmod'
#kEventParamMouseButton = 'mbtn'
#typeMouseButton = 'mbtn'
#typeUInt32 = 'magn'
ImportC ""
GetEventClass(Event)
EndImport
Structure EventTypeSpec
EventClass.L
EventKind.L
EndStructure
Procedure EventHandler(*NextEventHandler, Event, UserData)
Select GetEventClass(Event)
Case #kEventClassMouse
Select GetEventKind_(Event)
Case #kEventMouseDown
If GetEventParameter_(Event, #kEventParamMouseButton, #typeMouseButton, 0, 4, 0, @ButtonType) = 0
If GetEventParameter_(Event, #kEventParamKeyModifiers, #typeUInt32, 0, 4, 0, @KeyModifier) = 0
Select ButtonType
Case #kEventMouseButtonPrimary
If KeyModifier = $00001000
Debug "Right mouse button"
Else
Debug "Left mouse button"
EndIf
Case #kEventMouseButtonSecondary
Debug "Right mouse button"
Case #kEventMouseButtonTertiary
Debug "Middle mouse button"
EndSelect
EndIf
EndIf
EndSelect
EndSelect
If *NextEventHandler
CallNextEventHandler_(*NextEventHandler, Event)
EndIf
EndProcedure
OpenWindow(0, 100, 100, 400, 200, "Detect left, middle and right mouse button click")
EventHandlerUPP = NewEventHandlerUPP_(@EventHandler())
EventCount = 1
Dim EventTypes.EventTypeSpec(EventCount - 1)
EventTypes(0)\EventClass = #kEventClassMouse
EventTypes(0)\EventKind = #kEventMouseDown
InstallEventHandler_(GetWindowEventTarget_(WindowID(0)), EventHandlerUPP, EventCount, @EventTypes(), UserData, @EventHandlerRef)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow