220 lines
5.2 KiB
C
220 lines
5.2 KiB
C
|
/*
|
||
|
* Copyright 2009 Vincent Sanders <vince@simtec.co.uk>
|
||
|
*
|
||
|
* This file is part of libnsfb, http://www.netsurf-browser.org/
|
||
|
* Licenced under the MIT License,
|
||
|
* http://www.opensource.org/licenses/mit-license.php
|
||
|
*
|
||
|
* This is the exported interface for the libnsfb graphics library.
|
||
|
*/
|
||
|
|
||
|
#ifndef _LIBNSFB_EVENT_H
|
||
|
#define _LIBNSFB_EVENT_H 1
|
||
|
|
||
|
enum nsfb_event_type_e {
|
||
|
NSFB_EVENT_NONE,
|
||
|
NSFB_EVENT_CONTROL,
|
||
|
NSFB_EVENT_KEY_DOWN,
|
||
|
NSFB_EVENT_KEY_UP,
|
||
|
NSFB_EVENT_MOVE_RELATIVE,
|
||
|
NSFB_EVENT_MOVE_ABSOLUTE,
|
||
|
};
|
||
|
|
||
|
|
||
|
/** keycodes which mostly map to ascii chars */
|
||
|
enum nsfb_key_code_e {
|
||
|
NSFB_KEY_UNKNOWN = 0,
|
||
|
NSFB_KEY_BACKSPACE = 8,
|
||
|
NSFB_KEY_TAB = 9,
|
||
|
NSFB_KEY_LF = 10,
|
||
|
NSFB_KEY_CLEAR = 12,
|
||
|
NSFB_KEY_RETURN = 13,
|
||
|
NSFB_KEY_PAUSE = 19,
|
||
|
NSFB_KEY_ESCAPE = 27,
|
||
|
NSFB_KEY_SPACE = 32,
|
||
|
NSFB_KEY_EXCLAIM = 33,
|
||
|
NSFB_KEY_QUOTEDBL = 34,
|
||
|
NSFB_KEY_HASH = 35,
|
||
|
NSFB_KEY_DOLLAR = 36,
|
||
|
NSFB_KEY_AMPERSAND = 38,
|
||
|
NSFB_KEY_QUOTE = 39,
|
||
|
NSFB_KEY_LEFTPAREN = 40,
|
||
|
NSFB_KEY_RIGHTPAREN = 41,
|
||
|
NSFB_KEY_ASTERISK = 42,
|
||
|
NSFB_KEY_PLUS = 43,
|
||
|
NSFB_KEY_COMMA = 44,
|
||
|
NSFB_KEY_MINUS = 45,
|
||
|
NSFB_KEY_PERIOD = 46,
|
||
|
NSFB_KEY_SLASH = 47,
|
||
|
NSFB_KEY_0 = 48,
|
||
|
NSFB_KEY_1 = 49,
|
||
|
NSFB_KEY_2 = 50,
|
||
|
NSFB_KEY_3 = 51,
|
||
|
NSFB_KEY_4 = 52,
|
||
|
NSFB_KEY_5 = 53,
|
||
|
NSFB_KEY_6 = 54,
|
||
|
NSFB_KEY_7 = 55,
|
||
|
NSFB_KEY_8 = 56,
|
||
|
NSFB_KEY_9 = 57,
|
||
|
NSFB_KEY_COLON = 58,
|
||
|
NSFB_KEY_SEMICOLON = 59,
|
||
|
NSFB_KEY_LESS = 60,
|
||
|
NSFB_KEY_EQUALS = 61,
|
||
|
NSFB_KEY_GREATER = 62,
|
||
|
NSFB_KEY_QUESTION = 63,
|
||
|
NSFB_KEY_AT = 64,
|
||
|
NSFB_KEY_LEFTBRACKET = 91,
|
||
|
NSFB_KEY_BACKSLASH = 92,
|
||
|
NSFB_KEY_RIGHTBRACKET = 93,
|
||
|
NSFB_KEY_CARET = 94,
|
||
|
NSFB_KEY_UNDERSCORE = 95,
|
||
|
NSFB_KEY_BACKQUOTE = 96,
|
||
|
NSFB_KEY_a = 97,
|
||
|
NSFB_KEY_b = 98,
|
||
|
NSFB_KEY_c = 99,
|
||
|
NSFB_KEY_d = 100,
|
||
|
NSFB_KEY_e = 101,
|
||
|
NSFB_KEY_f = 102,
|
||
|
NSFB_KEY_g = 103,
|
||
|
NSFB_KEY_h = 104,
|
||
|
NSFB_KEY_i = 105,
|
||
|
NSFB_KEY_j = 106,
|
||
|
NSFB_KEY_k = 107,
|
||
|
NSFB_KEY_l = 108,
|
||
|
NSFB_KEY_m = 109,
|
||
|
NSFB_KEY_n = 110,
|
||
|
NSFB_KEY_o = 111,
|
||
|
NSFB_KEY_p = 112,
|
||
|
NSFB_KEY_q = 113,
|
||
|
NSFB_KEY_r = 114,
|
||
|
NSFB_KEY_s = 115,
|
||
|
NSFB_KEY_t = 116,
|
||
|
NSFB_KEY_u = 117,
|
||
|
NSFB_KEY_v = 118,
|
||
|
NSFB_KEY_w = 119,
|
||
|
NSFB_KEY_x = 120,
|
||
|
NSFB_KEY_y = 121,
|
||
|
NSFB_KEY_z = 122,
|
||
|
NSFB_KEY_DELETE = 127,
|
||
|
|
||
|
NSFB_KEY_KP0 = 256,
|
||
|
NSFB_KEY_KP1 = 257,
|
||
|
NSFB_KEY_KP2 = 258,
|
||
|
NSFB_KEY_KP3 = 259,
|
||
|
NSFB_KEY_KP4 = 260,
|
||
|
NSFB_KEY_KP5 = 261,
|
||
|
NSFB_KEY_KP6 = 262,
|
||
|
NSFB_KEY_KP7 = 263,
|
||
|
NSFB_KEY_KP8 = 264,
|
||
|
NSFB_KEY_KP9 = 265,
|
||
|
NSFB_KEY_KP_PERIOD = 266,
|
||
|
NSFB_KEY_KP_DIVIDE = 267,
|
||
|
NSFB_KEY_KP_MULTIPLY = 268,
|
||
|
NSFB_KEY_KP_MINUS = 269,
|
||
|
NSFB_KEY_KP_PLUS = 270,
|
||
|
NSFB_KEY_KP_ENTER = 271,
|
||
|
NSFB_KEY_KP_EQUALS = 272,
|
||
|
|
||
|
NSFB_KEY_UP = 273,
|
||
|
NSFB_KEY_DOWN = 274,
|
||
|
NSFB_KEY_RIGHT = 275,
|
||
|
NSFB_KEY_LEFT = 276,
|
||
|
NSFB_KEY_INSERT = 277,
|
||
|
NSFB_KEY_HOME = 278,
|
||
|
NSFB_KEY_END = 279,
|
||
|
NSFB_KEY_PAGEUP = 280,
|
||
|
NSFB_KEY_PAGEDOWN = 281,
|
||
|
|
||
|
/* Function keys */
|
||
|
NSFB_KEY_F1 = 282,
|
||
|
NSFB_KEY_F2 = 283,
|
||
|
NSFB_KEY_F3 = 284,
|
||
|
NSFB_KEY_F4 = 285,
|
||
|
NSFB_KEY_F5 = 286,
|
||
|
NSFB_KEY_F6 = 287,
|
||
|
NSFB_KEY_F7 = 288,
|
||
|
NSFB_KEY_F8 = 289,
|
||
|
NSFB_KEY_F9 = 290,
|
||
|
NSFB_KEY_F10 = 291,
|
||
|
NSFB_KEY_F11 = 292,
|
||
|
NSFB_KEY_F12 = 293,
|
||
|
NSFB_KEY_F13 = 294,
|
||
|
NSFB_KEY_F14 = 295,
|
||
|
NSFB_KEY_F15 = 296,
|
||
|
|
||
|
/* Key state modifier keys */
|
||
|
NSFB_KEY_NUMLOCK = 300,
|
||
|
NSFB_KEY_CAPSLOCK = 301,
|
||
|
NSFB_KEY_SCROLLOCK = 302,
|
||
|
NSFB_KEY_RSHIFT = 303,
|
||
|
NSFB_KEY_LSHIFT = 304,
|
||
|
NSFB_KEY_RCTRL = 305,
|
||
|
NSFB_KEY_LCTRL = 306,
|
||
|
NSFB_KEY_RALT = 307,
|
||
|
NSFB_KEY_LALT = 308,
|
||
|
NSFB_KEY_RMETA = 309,
|
||
|
NSFB_KEY_LMETA = 310,
|
||
|
NSFB_KEY_LSUPER = 311,
|
||
|
NSFB_KEY_RSUPER = 312,
|
||
|
NSFB_KEY_MODE = 313,
|
||
|
NSFB_KEY_COMPOSE = 314,
|
||
|
|
||
|
/* Miscellaneous function keys */
|
||
|
NSFB_KEY_HELP = 315,
|
||
|
NSFB_KEY_PRINT = 316,
|
||
|
NSFB_KEY_SYSREQ = 317,
|
||
|
NSFB_KEY_BREAK = 318,
|
||
|
NSFB_KEY_MENU = 319,
|
||
|
NSFB_KEY_POWER = 320,
|
||
|
NSFB_KEY_EURO = 321,
|
||
|
NSFB_KEY_UNDO = 322,
|
||
|
|
||
|
/* mouse buttons */
|
||
|
NSFB_KEY_MOUSE_1 = 401,
|
||
|
NSFB_KEY_MOUSE_2 = 402,
|
||
|
NSFB_KEY_MOUSE_3 = 403,
|
||
|
NSFB_KEY_MOUSE_4 = 404,
|
||
|
NSFB_KEY_MOUSE_5 = 405,
|
||
|
|
||
|
};
|
||
|
|
||
|
enum nsfb_control_e {
|
||
|
NSFB_CONTROL_NONE,
|
||
|
NSFB_CONTROL_TIMEOUT, /* timeout event */
|
||
|
NSFB_CONTROL_QUIT, /* surface handler quit event */
|
||
|
};
|
||
|
|
||
|
struct nsfb_event_s {
|
||
|
enum nsfb_event_type_e type;
|
||
|
union {
|
||
|
enum nsfb_key_code_e keycode;
|
||
|
enum nsfb_control_e controlcode;
|
||
|
struct {
|
||
|
int x;
|
||
|
int y;
|
||
|
int z;
|
||
|
} vector;
|
||
|
} value;
|
||
|
};
|
||
|
|
||
|
/** Process input events.
|
||
|
*
|
||
|
* Gather events from a frontend.
|
||
|
*
|
||
|
* @param nsfb The library handle.
|
||
|
* @param event The event structure to fill.
|
||
|
* @param timeout The number of milliseconds to wait for input, -1 is wait
|
||
|
* forever, 0 returns immediately.
|
||
|
* @return If the /a event structure is updated true else false.
|
||
|
*/
|
||
|
bool nsfb_event(nsfb_t *nsfb, nsfb_event_t *event, int timeout);
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Local variables:
|
||
|
* c-basic-offset: 4
|
||
|
* tab-width: 8
|
||
|
* End:
|
||
|
*/
|