| /**************************************************************************** |
| * |
| * SciTech OS Portability Manager Library |
| * |
| * ======================================================================== |
| * |
| * The contents of this file are subject to the SciTech MGL Public |
| * License Version 1.0 (the "License"); you may not use this file |
| * except in compliance with the License. You may obtain a copy of |
| * the License at http://www.scitechsoft.com/mgl-license.txt |
| * |
| * Software distributed under the License is distributed on an |
| * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
| * implied. See the License for the specific language governing |
| * rights and limitations under the License. |
| * |
| * The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc. |
| * |
| * The Initial Developer of the Original Code is SciTech Software, Inc. |
| * All Rights Reserved. |
| * |
| * ======================================================================== |
| * |
| * Language: ANSI C |
| * Environment: Any |
| * |
| * Description: Header file for the SciTech cross platform event library |
| * |
| ****************************************************************************/ |
| |
| #ifndef __EVENT_H |
| #define __EVENT_H |
| |
| #include "scitech.h" |
| |
| /*---------------------- Macros and type definitions ----------------------*/ |
| |
| #pragma pack(1) |
| |
| /* 'C' calling conventions always */ |
| |
| #define EVTAPI _ASMAPI |
| #define EVTAPIP _ASMAPIP |
| |
| /* Event message masks for keyDown events */ |
| |
| #define EVT_ASCIIMASK 0x00FF /* ASCII code of key pressed */ |
| #define EVT_SCANMASK 0xFF00 /* Scan code of key pressed */ |
| #define EVT_COUNTMASK 0x7FFF0000L /* Count for KEYREPEAT's */ |
| |
| /* Macros to extract values from the message fields */ |
| |
| #define EVT_asciiCode(m) ( (uchar) (m & EVT_ASCIIMASK) ) |
| #define EVT_scanCode(m) ( (uchar) ( (m & EVT_SCANMASK) >> 8 ) ) |
| #define EVT_repeatCount(m) ( (short) ( (m & EVT_COUNTMASK) >> 16 ) ) |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the set of ASCII codes reported by the event library functions |
| in the message field. Use the EVT_asciiCode macro to extract the code |
| from the event structure. |
| |
| HEADER: |
| event.h |
| ****************************************************************************/ |
| typedef enum { |
| ASCII_ctrlA = 0x01, |
| ASCII_ctrlB = 0x02, |
| ASCII_ctrlC = 0x03, |
| ASCII_ctrlD = 0x04, |
| ASCII_ctrlE = 0x05, |
| ASCII_ctrlF = 0x06, |
| ASCII_ctrlG = 0x07, |
| ASCII_backspace = 0x08, |
| ASCII_ctrlH = 0x08, |
| ASCII_tab = 0x09, |
| ASCII_ctrlI = 0x09, |
| ASCII_ctrlJ = 0x0A, |
| ASCII_ctrlK = 0x0B, |
| ASCII_ctrlL = 0x0C, |
| ASCII_enter = 0x0D, |
| ASCII_ctrlM = 0x0D, |
| ASCII_ctrlN = 0x0E, |
| ASCII_ctrlO = 0x0F, |
| ASCII_ctrlP = 0x10, |
| ASCII_ctrlQ = 0x11, |
| ASCII_ctrlR = 0x12, |
| ASCII_ctrlS = 0x13, |
| ASCII_ctrlT = 0x14, |
| ASCII_ctrlU = 0x15, |
| ASCII_ctrlV = 0x16, |
| ASCII_ctrlW = 0x17, |
| ASCII_ctrlX = 0x18, |
| ASCII_ctrlY = 0x19, |
| ASCII_ctrlZ = 0x1A, |
| ASCII_esc = 0x1B, |
| ASCII_space = 0x20, |
| ASCII_exclamation = 0x21, /* ! */ |
| ASCII_quote = 0x22, /* " */ |
| ASCII_pound = 0x23, /* # */ |
| ASCII_dollar = 0x24, /* $ */ |
| ASCII_percent = 0x25, /* % */ |
| ASCII_ampersand = 0x26, /* & */ |
| ASCII_apostrophe = 0x27, /* ' */ |
| ASCII_leftBrace = 0x28, /* ( */ |
| ASCII_rightBrace = 0x29, /* ) */ |
| ASCII_times = 0x2A, /* * */ |
| ASCII_plus = 0x2B, /* + */ |
| ASCII_comma = 0x2C, /* , */ |
| ASCII_minus = 0x2D, /* - */ |
| ASCII_period = 0x2E, /* . */ |
| ASCII_divide = 0x2F, /* / */ |
| ASCII_0 = 0x30, |
| ASCII_1 = 0x31, |
| ASCII_2 = 0x32, |
| ASCII_3 = 0x33, |
| ASCII_4 = 0x34, |
| ASCII_5 = 0x35, |
| ASCII_6 = 0x36, |
| ASCII_7 = 0x37, |
| ASCII_8 = 0x38, |
| ASCII_9 = 0x39, |
| ASCII_colon = 0x3A, /* : */ |
| ASCII_semicolon = 0x3B, /* ; */ |
| ASCII_lessThan = 0x3C, /* < */ |
| ASCII_equals = 0x3D, /* = */ |
| ASCII_greaterThan = 0x3E, /* > */ |
| ASCII_question = 0x3F, /* ? */ |
| ASCII_at = 0x40, /* @ */ |
| ASCII_A = 0x41, |
| ASCII_B = 0x42, |
| ASCII_C = 0x43, |
| ASCII_D = 0x44, |
| ASCII_E = 0x45, |
| ASCII_F = 0x46, |
| ASCII_G = 0x47, |
| ASCII_H = 0x48, |
| ASCII_I = 0x49, |
| ASCII_J = 0x4A, |
| ASCII_K = 0x4B, |
| ASCII_L = 0x4C, |
| ASCII_M = 0x4D, |
| ASCII_N = 0x4E, |
| ASCII_O = 0x4F, |
| ASCII_P = 0x50, |
| ASCII_Q = 0x51, |
| ASCII_R = 0x52, |
| ASCII_S = 0x53, |
| ASCII_T = 0x54, |
| ASCII_U = 0x55, |
| ASCII_V = 0x56, |
| ASCII_W = 0x57, |
| ASCII_X = 0x58, |
| ASCII_Y = 0x59, |
| ASCII_Z = 0x5A, |
| ASCII_leftSquareBrace = 0x5B, /* [ */ |
| ASCII_backSlash = 0x5C, /* \ */ |
| ASCII_rightSquareBrace = 0x5D, /* ] */ |
| ASCII_caret = 0x5E, /* ^ */ |
| ASCII_underscore = 0x5F, /* _ */ |
| ASCII_leftApostrophe = 0x60, /* ` */ |
| ASCII_a = 0x61, |
| ASCII_b = 0x62, |
| ASCII_c = 0x63, |
| ASCII_d = 0x64, |
| ASCII_e = 0x65, |
| ASCII_f = 0x66, |
| ASCII_g = 0x67, |
| ASCII_h = 0x68, |
| ASCII_i = 0x69, |
| ASCII_j = 0x6A, |
| ASCII_k = 0x6B, |
| ASCII_l = 0x6C, |
| ASCII_m = 0x6D, |
| ASCII_n = 0x6E, |
| ASCII_o = 0x6F, |
| ASCII_p = 0x70, |
| ASCII_q = 0x71, |
| ASCII_r = 0x72, |
| ASCII_s = 0x73, |
| ASCII_t = 0x74, |
| ASCII_u = 0x75, |
| ASCII_v = 0x76, |
| ASCII_w = 0x77, |
| ASCII_x = 0x78, |
| ASCII_y = 0x79, |
| ASCII_z = 0x7A, |
| ASCII_leftCurlyBrace = 0x7B, /* { */ |
| ASCII_verticalBar = 0x7C, /* | */ |
| ASCII_rightCurlyBrace = 0x7D, /* } */ |
| ASCII_tilde = 0x7E /* ~ */ |
| } EVT_asciiCodesType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the set of scan codes reported by the event library functions |
| in the message field. Use the EVT_scanCode macro to extract the code |
| from the event structure. Note that the scan codes reported will be the |
| same across all keyboards (assuming the placement of keys on a 101 key US |
| keyboard), but the translated ASCII values may be different depending on |
| the country code pages in use. |
| |
| NOTE: Scan codes in the event library are not really hardware scan codes, |
| but rather virtual scan codes as generated by a low level keyboard |
| interface driver. All virtual codes begin with scan code 0x60 and |
| range up from there. |
| |
| HEADER: |
| event.h |
| ****************************************************************************/ |
| typedef enum { |
| KB_padEnter = 0x60, /* Keypad keys */ |
| KB_padMinus = 0x4A, |
| KB_padPlus = 0x4E, |
| KB_padTimes = 0x37, |
| KB_padDivide = 0x61, |
| KB_padLeft = 0x62, |
| KB_padRight = 0x63, |
| KB_padUp = 0x64, |
| KB_padDown = 0x65, |
| KB_padInsert = 0x66, |
| KB_padDelete = 0x67, |
| KB_padHome = 0x68, |
| KB_padEnd = 0x69, |
| KB_padPageUp = 0x6A, |
| KB_padPageDown = 0x6B, |
| KB_padCenter = 0x4C, |
| KB_F1 = 0x3B, /* Function keys */ |
| KB_F2 = 0x3C, |
| KB_F3 = 0x3D, |
| KB_F4 = 0x3E, |
| KB_F5 = 0x3F, |
| KB_F6 = 0x40, |
| KB_F7 = 0x41, |
| KB_F8 = 0x42, |
| KB_F9 = 0x43, |
| KB_F10 = 0x44, |
| KB_F11 = 0x57, |
| KB_F12 = 0x58, |
| KB_left = 0x4B, /* Cursor control keys */ |
| KB_right = 0x4D, |
| KB_up = 0x48, |
| KB_down = 0x50, |
| KB_insert = 0x52, |
| KB_delete = 0x53, |
| KB_home = 0x47, |
| KB_end = 0x4F, |
| KB_pageUp = 0x49, |
| KB_pageDown = 0x51, |
| KB_capsLock = 0x3A, |
| KB_numLock = 0x45, |
| KB_scrollLock = 0x46, |
| KB_leftShift = 0x2A, |
| KB_rightShift = 0x36, |
| KB_leftCtrl = 0x1D, |
| KB_rightCtrl = 0x6C, |
| KB_leftAlt = 0x38, |
| KB_rightAlt = 0x6D, |
| KB_leftWindows = 0x5B, |
| KB_rightWindows = 0x5C, |
| KB_menu = 0x5D, |
| KB_sysReq = 0x54, |
| KB_esc = 0x01, /* Normal keyboard keys */ |
| KB_1 = 0x02, |
| KB_2 = 0x03, |
| KB_3 = 0x04, |
| KB_4 = 0x05, |
| KB_5 = 0x06, |
| KB_6 = 0x07, |
| KB_7 = 0x08, |
| KB_8 = 0x09, |
| KB_9 = 0x0A, |
| KB_0 = 0x0B, |
| KB_minus = 0x0C, |
| KB_equals = 0x0D, |
| KB_backSlash = 0x2B, |
| KB_backspace = 0x0E, |
| KB_tab = 0x0F, |
| KB_Q = 0x10, |
| KB_W = 0x11, |
| KB_E = 0x12, |
| KB_R = 0x13, |
| KB_T = 0x14, |
| KB_Y = 0x15, |
| KB_U = 0x16, |
| KB_I = 0x17, |
| KB_O = 0x18, |
| KB_P = 0x19, |
| KB_leftSquareBrace = 0x1A, |
| KB_rightSquareBrace = 0x1B, |
| KB_enter = 0x1C, |
| KB_A = 0x1E, |
| KB_S = 0x1F, |
| KB_D = 0x20, |
| KB_F = 0x21, |
| KB_G = 0x22, |
| KB_H = 0x23, |
| KB_J = 0x24, |
| KB_K = 0x25, |
| KB_L = 0x26, |
| KB_semicolon = 0x27, |
| KB_apostrophe = 0x28, |
| KB_Z = 0x2C, |
| KB_X = 0x2D, |
| KB_C = 0x2E, |
| KB_V = 0x2F, |
| KB_B = 0x30, |
| KB_N = 0x31, |
| KB_M = 0x32, |
| KB_comma = 0x33, |
| KB_period = 0x34, |
| KB_divide = 0x35, |
| KB_space = 0x39, |
| KB_tilde = 0x29 |
| } EVT_scanCodesType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the mask for the joystick axes that are present |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| EVT_JOY_AXIS_X1 - Joystick 1, X axis is present |
| EVT_JOY_AXIS_Y1 - Joystick 1, Y axis is present |
| EVT_JOY_AXIS_X2 - Joystick 2, X axis is present |
| EVT_JOY_AXIS_Y2 - Joystick 2, Y axis is present |
| EVT_JOY_AXIS_ALL - Mask for all axes |
| ****************************************************************************/ |
| typedef enum { |
| EVT_JOY_AXIS_X1 = 0x00000001, |
| EVT_JOY_AXIS_Y1 = 0x00000002, |
| EVT_JOY_AXIS_X2 = 0x00000004, |
| EVT_JOY_AXIS_Y2 = 0x00000008, |
| EVT_JOY_AXIS_ALL = 0x0000000F |
| } EVT_eventJoyAxisType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the event message masks for joystick events |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| EVT_JOY1_BUTTONA - Joystick 1, button A is down |
| EVT_JOY1_BUTTONB - Joystick 1, button B is down |
| EVT_JOY2_BUTTONA - Joystick 2, button A is down |
| EVT_JOY2_BUTTONB - Joystick 2, button B is down |
| ****************************************************************************/ |
| typedef enum { |
| EVT_JOY1_BUTTONA = 0x00000001, |
| EVT_JOY1_BUTTONB = 0x00000002, |
| EVT_JOY2_BUTTONA = 0x00000004, |
| EVT_JOY2_BUTTONB = 0x00000008 |
| } EVT_eventJoyMaskType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the event message masks for mouse events |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| EVT_LEFTBMASK - Left button is held down |
| EVT_RIGHTBMASK - Right button is held down |
| EVT_MIDDLEBMASK - Middle button is held down |
| EVT_BOTHBMASK - Both left and right held down together |
| EVT_ALLBMASK - All buttons pressed |
| EVT_DBLCLICK - Set if mouse down event was a double click |
| ****************************************************************************/ |
| typedef enum { |
| EVT_LEFTBMASK = 0x00000001, |
| EVT_RIGHTBMASK = 0x00000002, |
| EVT_MIDDLEBMASK = 0x00000004, |
| EVT_BOTHBMASK = 0x00000007, |
| EVT_ALLBMASK = 0x00000007, |
| EVT_DBLCLICK = 0x00010000 |
| } EVT_eventMouseMaskType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the event modifier masks. These are the masks used to extract |
| the modifier information from the modifiers field of the event_t structure. |
| Note that the values in the modifiers field represent the values of these |
| modifier keys at the time the event occurred, not the time you decided |
| to process the event. |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| EVT_LEFTBUT - Set if left mouse button was down |
| EVT_RIGHTBUT - Set if right mouse button was down |
| EVT_MIDDLEBUT - Set if the middle button was down |
| EVT_RIGHTSHIFT - Set if right shift was down |
| EVT_LEFTSHIFT - Set if left shift was down |
| EVT_RIGHTCTRL - Set if right ctrl key was down |
| EVT_RIGHTALT - Set if right alt key was down |
| EVT_LEFTCTRL - Set if left ctrl key was down |
| EVT_LEFTALT - Set if left alt key was down |
| EVT_SHIFTKEY - Mask for any shift key down |
| EVT_CTRLSTATE - Set if ctrl key was down |
| EVT_ALTSTATE - Set if alt key was down |
| EVT_CAPSLOCK - Caps lock is active |
| EVT_NUMLOCK - Num lock is active |
| EVT_SCROLLLOCK - Scroll lock is active |
| ****************************************************************************/ |
| typedef enum { |
| EVT_LEFTBUT = 0x00000001, |
| EVT_RIGHTBUT = 0x00000002, |
| EVT_MIDDLEBUT = 0x00000004, |
| EVT_RIGHTSHIFT = 0x00000008, |
| EVT_LEFTSHIFT = 0x00000010, |
| EVT_RIGHTCTRL = 0x00000020, |
| EVT_RIGHTALT = 0x00000040, |
| EVT_LEFTCTRL = 0x00000080, |
| EVT_LEFTALT = 0x00000100, |
| EVT_SHIFTKEY = 0x00000018, |
| EVT_CTRLSTATE = 0x000000A0, |
| EVT_ALTSTATE = 0x00000140, |
| EVT_SCROLLLOCK = 0x00000200, |
| EVT_NUMLOCK = 0x00000400, |
| EVT_CAPSLOCK = 0x00000800 |
| } EVT_eventModMaskType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the event codes returned in the event_t structures what field. Note |
| that these are defined as a set of mutually exlusive bit fields, so you |
| can test for multiple event types using the combined event masks defined |
| in the EVT_eventMaskType enumeration. |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| EVT_NULLEVT - A null event |
| EVT_KEYDOWN - Key down event |
| EVT_KEYREPEAT - Key repeat event |
| EVT_KEYUP - Key up event |
| EVT_MOUSEDOWN - Mouse down event |
| EVT_MOUSEAUTO - Mouse down autorepeat event |
| EVT_MOUSEUP - Mouse up event |
| EVT_MOUSEMOVE - Mouse movement event |
| EVT_JOYCLICK - Joystick button state change event |
| EVT_JOYMOVE - Joystick movement event |
| EVT_USEREVT - First user event |
| ****************************************************************************/ |
| typedef enum { |
| EVT_NULLEVT = 0x00000000, |
| EVT_KEYDOWN = 0x00000001, |
| EVT_KEYREPEAT = 0x00000002, |
| EVT_KEYUP = 0x00000004, |
| EVT_MOUSEDOWN = 0x00000008, |
| EVT_MOUSEAUTO = 0x00000010, |
| EVT_MOUSEUP = 0x00000020, |
| EVT_MOUSEMOVE = 0x00000040, |
| EVT_JOYCLICK = 0x00000080, |
| EVT_JOYMOVE = 0x00000100, |
| EVT_USEREVT = 0x00000200 |
| } EVT_eventType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Defines the event code masks you can use to test for multiple types of |
| events, since the event codes are mutually exlusive bit fields. |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| EVT_KEYEVT - Mask for any key event |
| EVT_MOUSEEVT - Mask for any mouse event |
| EVT_MOUSECLICK - Mask for any mouse click event |
| EVT_JOYEVT - Mask for any joystick event |
| EVT_EVERYEVT - Mask for any event |
| ****************************************************************************/ |
| typedef enum { |
| EVT_KEYEVT = (EVT_KEYDOWN | EVT_KEYREPEAT | EVT_KEYUP), |
| EVT_MOUSEEVT = (EVT_MOUSEDOWN | EVT_MOUSEAUTO | EVT_MOUSEUP | EVT_MOUSEMOVE), |
| EVT_MOUSECLICK = (EVT_MOUSEDOWN | EVT_MOUSEUP), |
| EVT_JOYEVT = (EVT_JOYCLICK | EVT_JOYMOVE), |
| EVT_EVERYEVT = 0x7FFFFFFF |
| } EVT_eventMaskType; |
| |
| /**************************************************************************** |
| REMARKS: |
| Structure describing the information contained in an event extracted from |
| the event queue. |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| which - Window identifier for message for use by high level window manager |
| code (i.e. MegaVision GUI or Windows API). |
| what - Type of event that occurred. Will be one of the values defined by |
| the EVT_eventType enumeration. |
| when - Time that the event occurred in milliseconds since startup |
| where_x - X coordinate of the mouse cursor location at the time of the event |
| (in screen coordinates). For joystick events this represents |
| the position of the first joystick X axis. |
| where_y - Y coordinate of the mouse cursor location at the time of the event |
| (in screen coordinates). For joystick events this represents |
| the position of the first joystick Y axis. |
| relative_x - Relative movement of the mouse cursor in the X direction (in |
| units of mickeys, or 1/200th of an inch). For joystick events |
| this represents the position of the second joystick X axis. |
| relative_y - Relative movement of the mouse cursor in the Y direction (in |
| units of mickeys, or 1/200th of an inch). For joystick events |
| this represents the position of the second joystick Y axis. |
| message - Event specific message for the event. For use events this can be |
| any user specific information. For keyboard events this contains |
| the ASCII code in bits 0-7, the keyboard scan code in bits 8-15 and |
| the character repeat count in bits 16-30. You can use the |
| EVT_asciiCode, EVT_scanCode and EVT_repeatCount macros to extract |
| this information from the message field. For mouse events this |
| contains information about which button was pressed, and will be a |
| combination of the flags defined by the EVT_eventMouseMaskType |
| enumeration. For joystick events, this conatins information |
| about which buttons were pressed, and will be a combination of |
| the flags defined by the EVT_eventJoyMaskType enumeration. |
| modifiers - Contains additional information about the state of the keyboard |
| shift modifiers (Ctrl, Alt and Shift keys) when the event |
| occurred. For mouse events it will also contain the state of |
| the mouse buttons. Will be a combination of the values defined |
| by the EVT_eventModMaskType enumeration. |
| next - Internal use; do not use. |
| prev - Internal use; do not use. |
| ****************************************************************************/ |
| typedef struct { |
| ulong which; |
| ulong what; |
| ulong when; |
| int where_x; |
| int where_y; |
| int relative_x; |
| int relative_y; |
| ulong message; |
| ulong modifiers; |
| int next; |
| int prev; |
| } event_t; |
| |
| /**************************************************************************** |
| REMARKS: |
| Structure describing an entry in the code page table. A table of translation |
| codes for scan codes to ASCII codes is provided in this table to be used |
| by the keyboard event libraries. On some OS'es the keyboard translation is |
| handled by the OS, but for DOS and embedded systems you must register a |
| different code page translation table if you want to support keyboards |
| other than the US English keyboard (the default). |
| |
| NOTE: Entries in code page tables *must* be in ascending order for the |
| scan codes as we do a binary search on the tables for the ASCII |
| code equivalents. |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| scanCode - Scan code to translate (really the virtual scan code). |
| asciiCode - ASCII code for this scan code. |
| ****************************************************************************/ |
| typedef struct { |
| uchar scanCode; |
| uchar asciiCode; |
| } codepage_entry_t; |
| |
| /**************************************************************************** |
| REMARKS: |
| Structure describing a complete code page translation table. The table |
| contains translation tables for normal keys, shifted keys and ctrl keys. |
| The Ctrl key always has precedence over the shift table, and the shift |
| table is used when the shift key is down or the CAPSLOCK key is down. |
| |
| HEADER: |
| event.h |
| |
| MEMBERS: |
| name - Name of the code page table (ie: "US English") |
| normal - Code page for translating normal keys |
| normalLen - Length of normal translation table |
| caps - Code page for translating keys when CAPSLOCK is down |
| capsLen - Length of CAPSLOCK translation table |
| shift - Code page for shifted keys (ie: shift key is held down) |
| shiftLen - Length of shifted translation table |
| shiftCaps - Code page for shifted keys when CAPSLOCK is down |
| shiftCapsLen - Length of shifted CAPSLOCK translation table |
| ctrl - Code page for ctrl'ed keys (ie: ctrl key is held down) |
| ctrlLen - Length of ctrl'ed translation table |
| numPad - Code page for NUMLOCK'ed keypad keys |
| numPadLen - Length of NUMLOCK'ed translation table |
| ****************************************************************************/ |
| typedef struct { |
| char name[20]; |
| codepage_entry_t *normal; |
| int normalLen; |
| codepage_entry_t *caps; |
| int capsLen; |
| codepage_entry_t *shift; |
| int shiftLen; |
| codepage_entry_t *shiftCaps; |
| int shiftCapsLen; |
| codepage_entry_t *ctrl; |
| int ctrlLen; |
| codepage_entry_t *numPad; |
| int numPadLen; |
| } codepage_t; |
| |
| /* {secret} */ |
| typedef ibool (EVTAPIP _EVT_userEventFilter)(event_t *evt); |
| /* {secret} */ |
| typedef void (EVTAPIP _EVT_mouseMoveHandler)(int x,int y); |
| /* {secret} */ |
| typedef void (EVTAPIP _EVT_heartBeatCallback)(void *params); |
| |
| /* Macro to find the size of a static array */ |
| |
| #define EVT_ARR_SIZE(a) (sizeof(a)/sizeof((a)[0])) |
| |
| #pragma pack() |
| |
| /*--------------------------- Global variables ----------------------------*/ |
| |
| #ifdef __cplusplus |
| extern "C" { /* Use "C" linkage when in C++ mode */ |
| #endif |
| |
| /* Standard code page tables */ |
| |
| extern codepage_t _CP_US_English; |
| |
| /*------------------------- Function Prototypes ---------------------------*/ |
| |
| /* Public API functions for user applications */ |
| |
| ibool EVTAPI EVT_getNext(event_t *evt,ulong mask); |
| ibool EVTAPI EVT_peekNext(event_t *evt,ulong mask); |
| ibool EVTAPI EVT_post(ulong which,ulong what,ulong message,ulong modifiers); |
| void EVTAPI EVT_flush(ulong mask); |
| void EVTAPI EVT_halt(event_t *evt,ulong mask); |
| ibool EVTAPI EVT_isKeyDown(uchar scanCode); |
| void EVTAPI EVT_setMousePos(int x,int y); |
| void EVTAPI EVT_getMousePos(int *x,int *y); |
| |
| /* Function to enable/disable updating of keyboard LED status indicators */ |
| |
| void EVTAPI EVT_allowLEDS(ibool enable); |
| |
| /* Function to install a custom keyboard code page. Default is US English */ |
| |
| codepage_t *EVTAPI EVT_getCodePage(void); |
| void EVTAPI EVT_setCodePage(codepage_t *page); |
| |
| /* Functions for fine grained joystick calibration */ |
| |
| void EVTAPI EVT_pollJoystick(void); |
| int EVTAPI EVT_joyIsPresent(void); |
| void EVTAPI EVT_joySetUpperLeft(void); |
| void EVTAPI EVT_joySetLowerRight(void); |
| void EVTAPI EVT_joySetCenter(void); |
| |
| /* Install user supplied event filter callback */ |
| |
| void EVTAPI EVT_setUserEventFilter(_EVT_userEventFilter filter); |
| |
| /* Install user supplied event heartbeat callback function */ |
| |
| void EVTAPI EVT_setHeartBeatCallback(_EVT_heartBeatCallback callback,void *params); |
| void EVTAPI EVT_getHeartBeatCallback(_EVT_heartBeatCallback *callback,void **params); |
| |
| /* Internal functions to initialise and kill the event manager. MGL |
| * applications should never call these functions directly as the MGL |
| * libraries do it for you. |
| */ |
| |
| /* {secret} */ |
| void EVTAPI EVT_init(_EVT_mouseMoveHandler mouseMove); |
| /* {secret} */ |
| void EVTAPI EVT_setMouseRange(int xRes,int yRes); |
| /* {secret} */ |
| void EVTAPI EVT_suspend(void); |
| /* {secret} */ |
| void EVTAPI EVT_resume(void); |
| /* {secret} */ |
| void EVTAPI EVT_exit(void); |
| |
| #ifdef __cplusplus |
| } /* End of "C" linkage for C++ */ |
| #endif /* __cplusplus */ |
| |
| #endif /* __EVENT_H */ |