summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2009-04-15 11:33:03 +0000
committerVincent Sanders <vince@netsurf-browser.org>2009-04-15 11:33:03 +0000
commit2b23052622dc6d4effbeee4f079561343347ebf7 (patch)
treeb411dbb345012196dde7f8b00b143c59427f44c5 /include
parentc554e32f8202e6628422cab831c996615911092d (diff)
downloadlibnsfb-2b23052622dc6d4effbeee4f079561343347ebf7.tar.gz
libnsfb-2b23052622dc6d4effbeee4f079561343347ebf7.tar.bz2
add event interface
svn path=/trunk/libnsfb/; revision=7088
Diffstat (limited to 'include')
-rw-r--r--include/frontend.h5
-rw-r--r--include/libnsfb.h11
-rw-r--r--include/libnsfb_event.h183
3 files changed, 193 insertions, 6 deletions
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;
+};