From 2b23052622dc6d4effbeee4f079561343347ebf7 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 15 Apr 2009 11:33:03 +0000 Subject: add event interface svn path=/trunk/libnsfb/; revision=7088 --- include/frontend.h | 5 +- include/libnsfb.h | 11 +-- include/libnsfb_event.h | 183 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 193 insertions(+), 6 deletions(-) create mode 100644 include/libnsfb_event.h (limited to 'include') diff --git a/include/frontend.h b/include/frontend.h index 5590543..9e5bedf 100644 --- a/include/frontend.h +++ b/include/frontend.h @@ -9,8 +9,10 @@ typedef int (nsfb_fendfn_defaults_t)(nsfb_t *nsfb); typedef int (nsfb_fendfn_init_t)(nsfb_t *nsfb); /* frontend finalise */ typedef int (nsfb_fendfn_fini_t)(nsfb_t *nsfb); +/* frontend set geometry */ +typedef int (nsfb_fendfn_geometry_t)(nsfb_t *nsfb, int width, int height, int bpp); /* frontend input */ -typedef int (nsfb_fendfn_input_t)(nsfb_t *nsfb); +typedef bool (nsfb_fendfn_input_t)(nsfb_t *nsfb, nsfb_event_t *event, int timeout); /* frontend area claim */ typedef int (nsfb_fendfn_claim_t)(nsfb_t *nsfb, nsfb_bbox_t *box); /* frontend area release */ @@ -20,6 +22,7 @@ typedef struct nsfb_frontend_rtns_s { nsfb_fendfn_defaults_t *defaults; nsfb_fendfn_init_t *initialise; nsfb_fendfn_fini_t *finalise; + nsfb_fendfn_geometry_t *geometry; nsfb_fendfn_input_t *input; nsfb_fendfn_claim_t *claim; nsfb_fendfn_release_t *release; diff --git a/include/libnsfb.h b/include/libnsfb.h index 8e07c7c..3236ea5 100644 --- a/include/libnsfb.h +++ b/include/libnsfb.h @@ -6,6 +6,7 @@ typedef struct nsfb_cursor_s nsfb_cursor_t; typedef struct nsfb_s nsfb_t; typedef uint32_t nsfb_colour_t; +typedef struct nsfb_event_s nsfb_event_t; /** bounding box for plotting operations */ typedef struct nsfb_bbox_s { @@ -19,10 +20,10 @@ typedef struct nsfb_bbox_s { enum nsfb_frontend_e { NSFB_FRONTEND_NONE = 0, /**< Empty frontend. */ NSFB_FRONTEND_SDL, /**< SDL frontend */ - NSFB_FRONTEND_LINUX, - NSFB_FRONTEND_VNC, - NSFB_FRONTEND_ABLE, - NSFB_FRONTEND_RAM, + NSFB_FRONTEND_LINUX, /**< Linux frontend */ + NSFB_FRONTEND_VNC, /**< VNC frontend */ + NSFB_FRONTEND_ABLE, /**< ABLE frontend */ + NSFB_FRONTEND_RAM, /**< RAM frontend */ }; /** Initialise nsfb context. @@ -57,7 +58,7 @@ enum nsfb_frontend_e nsfb_frontend_from_name(const char *name); /** Process input from a frontend. */ -int nsfb_input(nsfb_t *nsfb); +bool nsfb_input(nsfb_t *nsfb, nsfb_event_t *event, int timeout); /** Claim an area of screen to be redrawn. * diff --git a/include/libnsfb_event.h b/include/libnsfb_event.h new file mode 100644 index 0000000..179f24b --- /dev/null +++ b/include/libnsfb_event.h @@ -0,0 +1,183 @@ +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, +}; + + +enum nsfb_key_code_e { + /* keycodes which map to ascii chars */ + NSFB_KEY_UNKNOWN = 0, + NSFB_KEY_BACKSPACE = 8, + NSFB_KEY_TAB = 9, + 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 keys */ + 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_QUIT, +}; + +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; +}; -- cgit v1.2.1