enum IOMouseButton { Left, Middle, Right, } [@Cpp(::vl::presentation::NativeWindowMouseInfo)] struct IOMouseInfo { var ctrl: bool; var shift: bool; var left: bool; var middle: bool; var right: bool; var x: NativeCoordinate; var y: NativeCoordinate; var wheel: int; var nonClient: bool; } struct IOMouseInfoWithButton { var button: IOMouseButton; var info: IOMouseInfo; } [@Cpp(::vl::presentation::NativeWindowKeyInfo)] struct IOKeyInfo { var code: key; var ctrl: bool; var shift: bool; var alt: bool; var capslock: bool; var autoRepeatKeyDown: bool; } [@Cpp(::vl::presentation::NativeWindowCharInfo)] struct IOCharInfo { var code: char; var ctrl: bool; var shift: bool; var alt: bool; var capslock: bool; } struct GlobalShortcutKey { var id : int; var ctrl : bool; var shift : bool; var alt : bool; var code : key; } message IOUpdateGlobalShortcutKey { request: GlobalShortcutKey[]; } event IOGlobalShortcutKey { request: int; } message IORequireCapture {} message IOReleaseCapture {} message IOIsKeyPressing { request: key; response: bool; } message IOIsKeyToggled { request: key; response: bool; } event IOButtonDown { request: IOMouseInfoWithButton; } event IOButtonDoubleClick { request: IOMouseInfoWithButton; } event IOButtonUp { request: IOMouseInfoWithButton; } event IOHWheel { request: IOMouseInfo; } event IOVWheel { request: IOMouseInfo; } [@DropConsecutive] event IOMouseMoving { request: IOMouseInfo; } event IOMouseEntered {} event IOMouseLeaved {} event IOKeyDown { request: IOKeyInfo; } event IOKeyUp { request: IOKeyInfo; } event IOChar { request: IOCharInfo; }