Event (Message Data From Screenevent)
Pre-defined structure (UDT) from fbgfx.bi used by ScreenEvent to return event data
Syntax
`
#include once "fbgfx.bi"
using fb
Dim variable As Event
`
Description
Here we report the `EVENT` structure for clarity:
`
Type Event Field = 1
Type As Long
Union
Type
scancode As Long
ascii As Long
End Type
Type
x As Long
y As Long
dx As Long
dy As Long
End Type
button As Long
z As Long
w As Long
End Union
End Type
`
The `Type` field will contain the event type ID, while the remaining 4 integers will hold sensitive data to the event type.
Event types
The event type is identified by an ID number returned into the first integer of the `event` buffer (the `.type` field in the `EVENT` structure). Known event type IDs - and their values at time of writing - are:

- `EVENT_KEY_PRESS` (`1`) A key was pressed on the keyboard. The `.scancode` field contains the platform independent scancode value for the key; if the key has an ascii representation, it is held into the `.ascii` field, which otherwise has a value of 0.
- `EVENT_KEY_RELEASE` (`2`) A key was released on the keyboard. The `.scancode` and `.ascii` fields have the same meaning as with the `EVENT_KEY_PRESS` event.
- `EVENT_KEY_REPEAT` (`3`) A key is being held down repeatedly. The `.scancode` and `.ascii` fields have the same meaning as with the `EVENT_KEY_PRESS` event.
- `EVENT_MOUSE_MOVE` (`4`) The mouse was moved while it was on the program window. The `.x` and `.y` fields contain the new mouse position relative to the upper-left corner of the screen, while the `.dx` and `.dy` fields contain the motion deltas.
- `EVENT_MOUSE_BUTTON_PRESS` (`5`) One of the mouse buttons was pressed. The `.button` field has one bit set identifying the button that was pressed; bit 0 identifies the left mouse button, bit 1 the right mouse button and bit 2 the middle mouse button.
- `EVENT_MOUSE_BUTTON_RELEASE` (`6`) One of the mouse buttons was released. The `.button` field has the same meaning as with the `EVENT_MOUSE_BUTTON_PRESS` event.
- `EVENT_MOUSE_DOUBLE_CLICK` (`7`) One of the mouse buttons was double clicked. The `.button` field has the same meaning as with the `EVENT_MOUSE_BUTTON_PRESS` event.
- `EVENT_MOUSE_WHEEL` (`8`) The mouse wheel was used; the new wheel position is returned into the `.z` field.
- `EVENT_MOUSE_ENTER` (`9`) The mouse was moved into the program window.
- `EVENT_MOUSE_EXIT` (`10`) The mouse was moved out of the program window.
- `EVENT_WINDOW_GOT_FOCUS` (`11`) The program window has got focus.
- `EVENT_WINDOW_LOST_FOCUS` (`12`) The program window has lost focus.
- `EVENT_WINDOW_CLOSE` (`13`) The user attempted to close the program window.
- `EVENT_MOUSE_HWHEEL` (`14`) The horizontal mouse wheel was used; the new horizontal wheel position is returned into the `.w` field.

The `fbgfx.bi` header file contains a definition of the `EVENT` user data type, so it is not necessary to declare it manually.
Example
See example at `ScreenEvent`.
Dialect Differences

- In lang fb, the structure and constants are stored in the `FB` `Namespace`. This is not the case in other dialects.

Differences from QB

- New to FreeBASIC

See also

- `ScreenEvent`
- Event Handling
- Keyboard scancodes
- Keyboard Input