Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Copyright 2009 Vincent Sanders <vince@simtec.co.uk>
  3.  *
  4.  * This file is part of libnsfb, http://www.netsurf-browser.org/
  5.  * Licenced under the MIT License,
  6.  *                http://www.opensource.org/licenses/mit-license.php
  7.  *
  8.  * This is the exported interface for the libnsfb graphics library.
  9.  */
  10.  
  11. #ifndef _LIBNSFB_EVENT_H
  12. #define _LIBNSFB_EVENT_H 1
  13.  
  14. enum nsfb_event_type_e {
  15.     NSFB_EVENT_NONE,
  16.     NSFB_EVENT_CONTROL,
  17.     NSFB_EVENT_KEY_DOWN,
  18.     NSFB_EVENT_KEY_UP,
  19.     NSFB_EVENT_MOVE_RELATIVE,
  20.     NSFB_EVENT_MOVE_ABSOLUTE,
  21. };
  22.  
  23.  
  24. /** keycodes which mostly map to ascii chars */
  25. enum nsfb_key_code_e {
  26.     NSFB_KEY_UNKNOWN            = 0,
  27.     NSFB_KEY_BACKSPACE          = 8,
  28.     NSFB_KEY_TAB                = 9,
  29.     NSFB_KEY_LF                 = 10,
  30.     NSFB_KEY_CLEAR              = 12,
  31.     NSFB_KEY_RETURN             = 13,
  32.     NSFB_KEY_PAUSE              = 19,
  33.     NSFB_KEY_ESCAPE             = 27,
  34.     NSFB_KEY_SPACE              = 32,
  35.     NSFB_KEY_EXCLAIM            = 33,
  36.     NSFB_KEY_QUOTEDBL           = 34,
  37.     NSFB_KEY_HASH               = 35,
  38.     NSFB_KEY_DOLLAR             = 36,
  39.     NSFB_KEY_AMPERSAND          = 38,
  40.     NSFB_KEY_QUOTE              = 39,
  41.     NSFB_KEY_LEFTPAREN          = 40,
  42.     NSFB_KEY_RIGHTPAREN         = 41,
  43.     NSFB_KEY_ASTERISK           = 42,
  44.     NSFB_KEY_PLUS               = 43,
  45.     NSFB_KEY_COMMA              = 44,
  46.     NSFB_KEY_MINUS              = 45,
  47.     NSFB_KEY_PERIOD             = 46,
  48.     NSFB_KEY_SLASH              = 47,
  49.     NSFB_KEY_0                  = 48,
  50.     NSFB_KEY_1                  = 49,
  51.     NSFB_KEY_2                  = 50,
  52.     NSFB_KEY_3                  = 51,
  53.     NSFB_KEY_4                  = 52,
  54.     NSFB_KEY_5                  = 53,
  55.     NSFB_KEY_6                  = 54,
  56.     NSFB_KEY_7                  = 55,
  57.     NSFB_KEY_8                  = 56,
  58.     NSFB_KEY_9                  = 57,
  59.     NSFB_KEY_COLON              = 58,
  60.     NSFB_KEY_SEMICOLON          = 59,
  61.     NSFB_KEY_LESS               = 60,
  62.     NSFB_KEY_EQUALS             = 61,
  63.     NSFB_KEY_GREATER            = 62,
  64.     NSFB_KEY_QUESTION           = 63,
  65.     NSFB_KEY_AT                 = 64,
  66.     NSFB_KEY_LEFTBRACKET        = 91,
  67.     NSFB_KEY_BACKSLASH          = 92,
  68.     NSFB_KEY_RIGHTBRACKET       = 93,
  69.     NSFB_KEY_CARET              = 94,
  70.     NSFB_KEY_UNDERSCORE         = 95,
  71.     NSFB_KEY_BACKQUOTE          = 96,
  72.     NSFB_KEY_a                  = 97,
  73.     NSFB_KEY_b                  = 98,
  74.     NSFB_KEY_c                  = 99,
  75.     NSFB_KEY_d                  = 100,
  76.     NSFB_KEY_e                  = 101,
  77.     NSFB_KEY_f                  = 102,
  78.     NSFB_KEY_g                  = 103,
  79.     NSFB_KEY_h                  = 104,
  80.     NSFB_KEY_i                  = 105,
  81.     NSFB_KEY_j                  = 106,
  82.     NSFB_KEY_k                  = 107,
  83.     NSFB_KEY_l                  = 108,
  84.     NSFB_KEY_m                  = 109,
  85.     NSFB_KEY_n                  = 110,
  86.     NSFB_KEY_o                  = 111,
  87.     NSFB_KEY_p                  = 112,
  88.     NSFB_KEY_q                  = 113,
  89.     NSFB_KEY_r                  = 114,
  90.     NSFB_KEY_s                  = 115,
  91.     NSFB_KEY_t                  = 116,
  92.     NSFB_KEY_u                  = 117,
  93.     NSFB_KEY_v                  = 118,
  94.     NSFB_KEY_w                  = 119,
  95.     NSFB_KEY_x                  = 120,
  96.     NSFB_KEY_y                  = 121,
  97.     NSFB_KEY_z                  = 122,
  98.     NSFB_KEY_DELETE             = 127,
  99.  
  100.     NSFB_KEY_KP0                = 256,
  101.     NSFB_KEY_KP1                = 257,
  102.     NSFB_KEY_KP2                = 258,
  103.     NSFB_KEY_KP3                = 259,
  104.     NSFB_KEY_KP4                = 260,
  105.     NSFB_KEY_KP5                = 261,
  106.     NSFB_KEY_KP6                = 262,
  107.     NSFB_KEY_KP7                = 263,
  108.     NSFB_KEY_KP8                = 264,
  109.     NSFB_KEY_KP9                = 265,
  110.     NSFB_KEY_KP_PERIOD          = 266,
  111.     NSFB_KEY_KP_DIVIDE          = 267,
  112.     NSFB_KEY_KP_MULTIPLY        = 268,
  113.     NSFB_KEY_KP_MINUS           = 269,
  114.     NSFB_KEY_KP_PLUS            = 270,
  115.     NSFB_KEY_KP_ENTER           = 271,
  116.     NSFB_KEY_KP_EQUALS          = 272,
  117.  
  118.     NSFB_KEY_UP                 = 273,
  119.     NSFB_KEY_DOWN               = 274,
  120.     NSFB_KEY_RIGHT              = 275,
  121.     NSFB_KEY_LEFT               = 276,
  122.     NSFB_KEY_INSERT             = 277,
  123.     NSFB_KEY_HOME               = 278,
  124.     NSFB_KEY_END                = 279,
  125.     NSFB_KEY_PAGEUP             = 280,
  126.     NSFB_KEY_PAGEDOWN           = 281,
  127.  
  128.     /* Function keys */
  129.     NSFB_KEY_F1                 = 282,
  130.     NSFB_KEY_F2                 = 283,
  131.     NSFB_KEY_F3                 = 284,
  132.     NSFB_KEY_F4                 = 285,
  133.     NSFB_KEY_F5                 = 286,
  134.     NSFB_KEY_F6                 = 287,
  135.     NSFB_KEY_F7                 = 288,
  136.     NSFB_KEY_F8                 = 289,
  137.     NSFB_KEY_F9                 = 290,
  138.     NSFB_KEY_F10                = 291,
  139.     NSFB_KEY_F11                = 292,
  140.     NSFB_KEY_F12                = 293,
  141.     NSFB_KEY_F13                = 294,
  142.     NSFB_KEY_F14                = 295,
  143.     NSFB_KEY_F15                = 296,
  144.  
  145.     /* Key state modifier keys */
  146.     NSFB_KEY_NUMLOCK            = 300,
  147.     NSFB_KEY_CAPSLOCK           = 301,
  148.     NSFB_KEY_SCROLLOCK          = 302,
  149.     NSFB_KEY_RSHIFT             = 303,
  150.     NSFB_KEY_LSHIFT             = 304,
  151.     NSFB_KEY_RCTRL              = 305,
  152.     NSFB_KEY_LCTRL              = 306,
  153.     NSFB_KEY_RALT               = 307,
  154.     NSFB_KEY_LALT               = 308,
  155.     NSFB_KEY_RMETA              = 309,
  156.     NSFB_KEY_LMETA              = 310,
  157.     NSFB_KEY_LSUPER             = 311,
  158.     NSFB_KEY_RSUPER             = 312,
  159.     NSFB_KEY_MODE               = 313,
  160.     NSFB_KEY_COMPOSE            = 314,
  161.  
  162.     /* Miscellaneous function keys */
  163.     NSFB_KEY_HELP               = 315,
  164.     NSFB_KEY_PRINT              = 316,
  165.     NSFB_KEY_SYSREQ             = 317,
  166.     NSFB_KEY_BREAK              = 318,
  167.     NSFB_KEY_MENU               = 319,
  168.     NSFB_KEY_POWER              = 320,
  169.     NSFB_KEY_EURO               = 321,
  170.     NSFB_KEY_UNDO               = 322,
  171.  
  172.     /* mouse buttons */
  173.     NSFB_KEY_MOUSE_1 = 401,
  174.     NSFB_KEY_MOUSE_2 = 402,
  175.     NSFB_KEY_MOUSE_3 = 403,
  176.     NSFB_KEY_MOUSE_4 = 404,
  177.     NSFB_KEY_MOUSE_5 = 405,
  178.  
  179. };
  180.  
  181. enum nsfb_control_e {
  182.     NSFB_CONTROL_NONE,
  183.     NSFB_CONTROL_TIMEOUT, /* timeout event */
  184.     NSFB_CONTROL_QUIT, /* surface handler quit event */
  185. };
  186.  
  187. struct nsfb_event_s {
  188.     enum nsfb_event_type_e type;
  189.     union {
  190.         enum nsfb_key_code_e keycode;
  191.         enum nsfb_control_e controlcode;
  192.         struct {
  193.             int x;
  194.             int y;
  195.             int z;
  196.         } vector;
  197.     } value;
  198. };
  199.  
  200. /** Process input events.
  201.  *
  202.  * Gather events from a frontend.
  203.  *
  204.  * @param nsfb The library handle.
  205.  * @param event The event structure to fill.
  206.  * @param timeout The number of milliseconds to wait for input, -1 is wait
  207.  * forever, 0 returns immediately.
  208.  * @return If the /a event structure is updated true else false.
  209.  */
  210. bool nsfb_event(nsfb_t *nsfb, nsfb_event_t *event, int timeout);
  211.  
  212. #endif
  213.  
  214. /*
  215.  * Local variables:
  216.  *  c-basic-offset: 4
  217.  *  tab-width: 8
  218.  * End:
  219.  */
  220.