Platforms to show: All Mac Windows Linux Cross-Platform
/MacCG/CGEventTapMBS test
Required plugins for this example: MBS MacCF Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacCG/CGEventTapMBS test
This example is the version from Wed, 5th Sep 2017.
Project "CGEventTapMBS test.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class MainWindow Inherits Window
Control Listbox1 Inherits Listbox
ControlInstance Listbox1 Inherits Listbox
End Control
EventHandler Sub Close()
if e<>Nil then
e.Enabled = False
e = nil
end if
End EventHandler
EventHandler Sub Open()
dim tapLocation as Integer = CGEventTapMBS.kCGAnnotatedSessionEventTap
dim Place as Integer = CGEventTapMBS.kCGTailAppendEventTap
dim Options as Integer = CGEventTapMBS.kCGEventTapOptionListenOnly
dim EventMask as Integer = Bitwise.BitOr(_
CGEventTapMBS.kCGEventMaskFlagsChanged, _
CGEventTapMBS.kCGEventMaskKeyDown, _
CGEventTapMBS.kCGEventMaskKeyUp, _
CGEventTapMBS.kCGEventMaskLeftMouseDown, _
CGEventTapMBS.kCGEventMaskLeftMouseDragged, _
CGEventTapMBS.kCGEventMaskLeftMouseUp, _
CGEventTapMBS.kCGEventMaskOtherMouseDown, _
CGEventTapMBS.kCGEventMaskOtherMouseDragged, _
CGEventTapMBS.kCGEventMaskOtherMouseUp, _
CGEventTapMBS.kCGEventMaskRightMouseDown, _
CGEventTapMBS.kCGEventMaskRightMouseDragged, _
CGEventTapMBS.kCGEventMaskRightMouseUp)
e = new MyCGEventTapMBS( tapLocation, Place, Options, EventMask)
e.l = Listbox1
e.Enabled = true
End EventHandler
Property e As MyCGEventTapMBS
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
Class MyCGEventTapMBS Inherits CGEventTapMBS
EventHandler Function GotEvent(Proxy as Ptr, type as Integer, e as CGEventMBS) As CGEventMBS
dim t as string
dim i as string
Select case e.Type
case CGEventMBS.kCGEventKeyDown
t = "KeyDown"
i = e.UnicodeString
case CGEventMBS.kCGEventKeyUp
t = "KeyUp"
i = e.UnicodeString
case CGEventMBS.kCGEventFlagsChanged
t = "FlagsChanged"
i = hex(e.Flags)
case CGEventMBS.kCGEventNull
t = "Null"
case CGEventMBS.kCGEventLeftMouseDown
t = "LeftMouseDown"
case CGEventMBS.kCGEventLeftMouseDragged
t = "LeftMouseDragged"
case CGEventMBS.kCGEventLeftMouseUp
t = "LeftMouseUp"
case CGEventMBS.kCGEventMouseMoved
return e // don't report as this gives a lot of events!
t = "MouseMoved"
case 8
t = "MouseEnter"
case 9
t = "MouseExit"
case CGEventMBS.kCGEventOtherMouseDown
t = "OtherMouseDown"
case CGEventMBS.kCGEventOtherMouseDragged
t = "OtherMouseDragged"
case CGEventMBS.kCGEventOtherMouseUp
t = "OtherMouseUp"
case CGEventMBS.kCGEventRightMouseDown
t = "RightMouseDown"
case CGEventMBS.kCGEventRightMouseDragged
t = "RightMouseDragged"
case CGEventMBS.kCGEventRightMouseUp
t = "RightMouseUp"
case CGEventMBS.kCGEventScrollWheel
t = "ScrollWheel"
case CGEventMBS.kCGEventTabletPointer
t = "TabletPointer"
case CGEventMBS.kCGEventTabletProximity
t = "TabletProximity"
case CGEventMBS.kCGEventTapDisabledByTimeout
t = "TapDisabledByTimeout"
case CGEventMBS.kCGEventTapDisabledByUserInput
t = "TapDisabledByUserInput"
// ignore some internal events
case 13
return e
case 14
return e
case 15
return e
end Select
dim ee as string = "Got "+t+" ("+str(type)+") event"
if i = "" then
l.AddRow ee
else
l.AddRow ee+": "+i
end if
return e
End EventHandler
Property l As Listbox
End Class
End Project
The items on this page are in the following plugins: MBS MacCG Plugin.