Banjo API 0.0.1
C99 game development API
Loading...
Searching...
No Matches
Event

Data Structures

struct  bj_enter_event_t
struct  bj_cursor_event_t
struct  bj_button_event_t
struct  bj_key_event_t
struct  bj_event_t
union  bj_event_t.__unnamed0__

Macros

#define BJ_BUTTON_1   1
#define BJ_BUTTON_2   2
#define BJ_BUTTON_3   3
#define BJ_BUTTON_4   4
#define BJ_BUTTON_5   5
#define BJ_BUTTON_LEFT   BJ_BUTTON_1
#define BJ_BUTTON_RIGHT   BJ_BUTTON_3
#define BJ_BUTTON_MIDDLE   BJ_BUTTON_2
#define BJ_BUTTON_UP   BJ_BUTTON_4
#define BJ_BUTTON_DOWN   BJ_BUTTON_5
#define BJ_KEY_APOSTROPHE   BJ_KEY_OEM_7
#define BJ_KEY_BACKSLASH   BJ_KEY_OEM_5
#define BJ_KEY_BACKSPACE   BJ_KEY_BACK
#define BJ_KEY_CAPSLOCK   BJ_KEY_CAPITAL
#define BJ_KEY_COMMA   BJ_KEY_OEM_COMMA
#define BJ_KEY_ENTER   BJ_KEY_RETURN
#define BJ_KEY_GRAVE_ACCENT   BJ_KEY_OEM_3
#define BJ_KEY_HANGUL   BJ_KEY_KANA
#define BJ_KEY_HANJA   BJ_KEY_KANJI
#define BJ_KEY_LEFT_ALT   BJ_KEY_LMENU
#define BJ_KEY_LEFT_BRACKET   BJ_KEY_OEM_4
#define BJ_KEY_LEFT_CONTROL   BJ_KEY_LCONTROL
#define BJ_KEY_LEFT_OS   BJ_KEY_LWIN
#define BJ_KEY_LEFT_SHIT   BJ_KEY_LSHIFT
#define BJ_KEY_MINUS   BJ_KEY_OEM_MINUS
#define BJ_KEY_PAGE_DOWN   BJ_KEY_NEXT
#define BJ_KEY_PAGE_UP   BJ_KEY_PRIOR
#define BJ_KEY_PERIOD   BJ_KEY_OEM_PERIOD
#define BJ_KEY_PLUS   BJ_KEY_OEM_PLUS
#define BJ_KEY_PRINT_SCREEN   BJ_KEY_SNAPSHOT
#define BJ_KEY_RIGHT_ALT   BJ_KEY_RMENU
#define BJ_KEY_RIGHT_BRACKET   BJ_KEY_OEM_6
#define BJ_KEY_RIGHT_CONTROL   BJ_KEY_RCONTROL
#define BJ_KEY_RIGHT_OS   BJ_KEY_RWIN
#define BJ_KEY_RIGHT_SHIFT   BJ_KEY_RSHIFT
#define BJ_KEY_SEMICOLON   BJ_KEY_OEM_1
#define BJ_KEY_SLASH   BJ_KEY_OEM_2

Typedefs

typedef enum bj_key_t bj_key
typedef enum bj_event_action_t bj_event_action
typedef struct bj_enter_event_t bj_enter_event
typedef struct bj_cursor_event_t bj_cursor_event
typedef struct bj_button_event_t bj_button_event
typedef struct bj_key_event_t bj_key_event
typedef enum bj_event_type_t bj_event_type
typedef struct bj_event_t bj_event
typedef void(* bj_enter_callback_fn_t) (bj_window *, const bj_enter_event *, void *)
typedef void(* bj_cursor_callback_fn_t) (bj_window *p_window, const bj_cursor_event *, void *)
typedef void(* bj_button_callback_fn_t) (bj_window *p_window, const bj_button_event *, void *)
typedef void(* bj_key_callback_fn_t) (bj_window *p_window, const bj_key_event *, void *)

Enumerations

enum  bj_key_t {
  BJ_KEY_UNKNOWN = 0x00 , BJ_KEY_LBUTTON = 0x01 , BJ_KEY_RBUTTON = 0x02 , BJ_KEY_CANCEL = 0x03 ,
  BJ_KEY_MBUTTON = 0x04 , BJ_KEY_XBUTTON1 = 0x05 , BJ_KEY_XBUTTON2 = 0x06 , BJ_KEY_BACK = 0x08 ,
  BJ_KEY_TAB = 0x09 , BJ_KEY_CLEAR = 0x0C , BJ_KEY_RETURN = 0x0D , BJ_KEY_SHIFT = 0x10 ,
  BJ_KEY_CONTROL = 0x11 , BJ_KEY_MENU = 0x12 , BJ_KEY_PAUSE = 0x13 , BJ_KEY_CAPITAL = 0x14 ,
  BJ_KEY_KANA = 0x15 , BJ_KEY_IME_ON = 0x16 , BJ_KEY_JUNJA = 0x17 , BJ_KEY_FINAL = 0x18 ,
  BJ_KEY_KANJI = 0x19 , BJ_KEY_IME_OFF = 0x1A , BJ_KEY_ESCAPE = 0x1B , BJ_KEY_CONVERT = 0x1C ,
  BJ_KEY_NONCONVERT = 0x1D , BJ_KEY_ACCEPT = 0x1E , BJ_KEY_MODECHANGE = 0x1F , BJ_KEY_SPACE = 0x20 ,
  BJ_KEY_PRIOR = 0x21 , BJ_KEY_NEXT = 0x22 , BJ_KEY_END = 0x23 , BJ_KEY_HOME = 0x24 ,
  BJ_KEY_LEFT = 0x25 , BJ_KEY_UP = 0x26 , BJ_KEY_RIGHT = 0x27 , BJ_KEY_DOWN = 0x28 ,
  BJ_KEY_SELECT = 0x29 , BJ_KEY_PRINT = 0x2A , BJ_KEY_EXECUTE = 0x2B , BJ_KEY_SNAPSHOT = 0x2C ,
  BJ_KEY_INSERT = 0x2D , BJ_KEY_DELETE = 0x2E , BJ_KEY_HELP = 0x2F , BJ_KEY_0 = 0x30 ,
  BJ_KEY_1 = 0x31 , BJ_KEY_2 = 0x32 , BJ_KEY_3 = 0x33 , BJ_KEY_4 = 0x34 ,
  BJ_KEY_5 = 0x35 , BJ_KEY_6 = 0x36 , BJ_KEY_7 = 0x37 , BJ_KEY_8 = 0x38 ,
  BJ_KEY_9 = 0x39 , BJ_KEY_A = 0x41 , BJ_KEY_B = 0x42 , BJ_KEY_C = 0x43 ,
  BJ_KEY_D = 0x44 , BJ_KEY_E = 0x45 , BJ_KEY_F = 0x46 , BJ_KEY_G = 0x47 ,
  BJ_KEY_H = 0x48 , BJ_KEY_I = 0x49 , BJ_KEY_J = 0x4A , BJ_KEY_K = 0x4B ,
  BJ_KEY_L = 0x4C , BJ_KEY_M = 0x4D , BJ_KEY_N = 0x4E , BJ_KEY_O = 0x4F ,
  BJ_KEY_P = 0x50 , BJ_KEY_Q = 0x51 , BJ_KEY_R = 0x52 , BJ_KEY_S = 0x53 ,
  BJ_KEY_T = 0x54 , BJ_KEY_U = 0x55 , BJ_KEY_V = 0x56 , BJ_KEY_W = 0x57 ,
  BJ_KEY_X = 0x58 , BJ_KEY_Y = 0x59 , BJ_KEY_Z = 0x5A , BJ_KEY_LWIN = 0x5B ,
  BJ_KEY_RWIN = 0x5C , BJ_KEY_APPS = 0x5D , BJ_KEY_SLEEP = 0x5F , BJ_KEY_NUMPAD0 = 0x60 ,
  BJ_KEY_NUMPAD1 = 0x61 , BJ_KEY_NUMPAD2 = 0x62 , BJ_KEY_NUMPAD3 = 0x63 , BJ_KEY_NUMPAD4 = 0x64 ,
  BJ_KEY_NUMPAD5 = 0x65 , BJ_KEY_NUMPAD6 = 0x66 , BJ_KEY_NUMPAD7 = 0x67 , BJ_KEY_NUMPAD8 = 0x68 ,
  BJ_KEY_NUMPAD9 = 0x69 , BJ_KEY_MULTIPLY = 0x6A , BJ_KEY_ADD = 0x6B , BJ_KEY_SEPARATOR = 0x6C ,
  BJ_KEY_SUBTRACT = 0x6D , BJ_KEY_DECIMAL = 0x6E , BJ_KEY_DIVIDE = 0x6F , BJ_KEY_F1 = 0x70 ,
  BJ_KEY_F2 = 0x71 , BJ_KEY_F3 = 0x72 , BJ_KEY_F4 = 0x73 , BJ_KEY_F5 = 0x74 ,
  BJ_KEY_F6 = 0x75 , BJ_KEY_F7 = 0x76 , BJ_KEY_F8 = 0x77 , BJ_KEY_F9 = 0x78 ,
  BJ_KEY_F10 = 0x79 , BJ_KEY_F11 = 0x7A , BJ_KEY_F12 = 0x7B , BJ_KEY_F13 = 0x7C ,
  BJ_KEY_F14 = 0x7D , BJ_KEY_F15 = 0x7E , BJ_KEY_F16 = 0x7F , BJ_KEY_F17 = 0x80 ,
  BJ_KEY_F18 = 0x81 , BJ_KEY_F19 = 0x82 , BJ_KEY_F20 = 0x83 , BJ_KEY_F21 = 0x84 ,
  BJ_KEY_F22 = 0x85 , BJ_KEY_F23 = 0x86 , BJ_KEY_F24 = 0x87 , BJ_KEY_NUMLOCK = 0x90 ,
  BJ_KEY_SCROLL = 0x91 , BJ_KEY_LSHIFT = 0xA0 , BJ_KEY_RSHIFT = 0xA1 , BJ_KEY_LCONTROL = 0xA2 ,
  BJ_KEY_RCONTROL = 0xA3 , BJ_KEY_LMENU = 0xA4 , BJ_KEY_RMENU = 0xA5 , BJ_KEY_BROWSER_BACK = 0xA6 ,
  BJ_KEY_BROWSER_FORWARD = 0xA7 , BJ_KEY_BROWSER_REFRESH = 0xA8 , BJ_KEY_BROWSER_STOP = 0xA9 , BJ_KEY_BROWSER_SEARCH = 0xAA ,
  BJ_KEY_BROWSER_FAVORITES = 0xAB , BJ_KEY_BROWSER_HOME = 0xAC , BJ_KEY_VOLUME_MUTE = 0xAD , BJ_KEY_VOLUME_DOWN = 0xAE ,
  BJ_KEY_VOLUME_UP = 0xAF , BJ_KEY_MEDIA_NEXT_TRACK = 0xB0 , BJ_KEY_MEDIA_PREV_TRACK = 0xB1 , BJ_KEY_MEDIA_STOP = 0xB2 ,
  BJ_KEY_MEDIA_PLAY_PAUSE = 0xB3 , BJ_KEY_LAUNCH_MAIL = 0xB4 , BJ_KEY_LAUNCH_MEDIA_SELECT = 0xB5 , BJ_KEY_LAUNCH_APP1 = 0xB6 ,
  BJ_KEY_LAUNCH_APP2 = 0xB7 , BJ_KEY_OEM_1 = 0xBA , BJ_KEY_OEM_PLUS = 0xBB , BJ_KEY_OEM_COMMA = 0xBC ,
  BJ_KEY_OEM_MINUS = 0xBD , BJ_KEY_OEM_PERIOD = 0xBE , BJ_KEY_OEM_2 = 0xBF , BJ_KEY_OEM_3 = 0xC0 ,
  BJ_KEY_OEM_4 = 0xDB , BJ_KEY_OEM_5 = 0xDC , BJ_KEY_OEM_6 = 0xDD , BJ_KEY_OEM_7 = 0xDE ,
  BJ_KEY_OEM_8 = 0xDF , BJ_KEY_OEM_102 = 0xE2 , BJ_KEY_PROCESSKEY = 0xE5 , BJ_KEY_PACKET = 0xE7 ,
  BJ_KEY_ATTN = 0xF6 , BJ_KEY_CRSEL = 0xF7 , BJ_KEY_EXSEL = 0xF8 , BJ_KEY_EREOF = 0xF9 ,
  BJ_KEY_PLAY = 0xFA , BJ_KEY_ZOOM = 0xFB , BJ_KEY_NONAME = 0xFC , BJ_KEY_PA1 = 0xFD ,
  BJ_KEY_OEM_CLEAR = 0xFE
}
enum  bj_event_action_t { BJ_RELEASE , BJ_PRESS , BJ_REPEAT }
enum  bj_event_type_t { BJ_EVENT_ENTER , BJ_EVENT_CURSOR , BJ_EVENT_KEY , BJ_EVENT_BUTTON }

Functions

const char * bj_key_name (int key)
bj_cursor_callback_fn_t bj_set_cursor_callback (bj_cursor_callback_fn_t p_callback, void *p_user_data)
bj_button_callback_fn_t bj_set_button_callback (bj_button_callback_fn_t p_callback, void *p_user_data)
bj_key_callback_fn_t bj_set_key_callback (bj_key_callback_fn_t p_callback, void *p_user_data)
bj_enter_callback_fn_t bj_set_enter_callback (bj_enter_callback_fn_t p_callback, void *p_user_data)
void bj_close_on_escape (bj_window *p_window, const bj_key_event *p_event, void *p_user_data)
void bj_push_event (const bj_event *e)
void bj_push_key_event (bj_window *p_window, bj_event_action action, bj_key key, int scancode)
void bj_push_cursor_event (bj_window *p_window, int x, int y)
void bj_push_button_event (bj_window *p_window, int button, bj_event_action action, int x, int y)
void bj_push_enter_event (bj_window *p_window, bj_bool enter, int x, int y)
void bj_dispatch_events (void)
bj_bool bj_poll_events (bj_event *p_event)
void bj_dispatch_event (const bj_event *p_event)

Detailed Description

Handle input events such as keyboard, mouse and focus.

The event system provides a simple callback interface for handling user interactions with windows, including cursor movement, button presses, keyboard input, and window enter/leave detection.

Events are dispatched via polling with bj_dispatch_events.


Data Structure Documentation

◆ bj_enter_event_t

struct bj_enter_event_t

Represent a mouse enter or leave event.

Data Fields
bj_bool enter BJ_TRUE if entering window, BJ_FALSE if leaving.
int x Cursor x position.
int y Cursor y position.

◆ bj_cursor_event_t

struct bj_cursor_event_t

Represent a mouse cursor movement event.

Data Fields
int x Cursor x position.
int y Cursor y position.

◆ bj_button_event_t

struct bj_button_event_t

Represent a mouse button event.

Data Fields
bj_event_action action Action (press/release)
int button Button identifier (e.g., BJ_BUTTON_LEFT)
int x Cursor x position.
int y Cursor y position.

◆ bj_key_event_t

struct bj_key_event_t

Represent a keyboard key event.

Data Fields
bj_event_action action Action (press/release/repeat)
bj_key key Key identifier.
int scancode Scancode (layout-independent)

◆ bj_event_t

struct bj_event_t

Represent a generic window-related event.

This union-based structure wraps all types of input events.

Data Fields
union bj_event_t.__unnamed0__ __unnamed__
bj_event_type type Type of event.
bj_window * window Target window.

◆ bj_event_t.__unnamed0__

union bj_event_t.__unnamed0__
Data Fields
bj_button_event button Button event data.
bj_cursor_event cursor Cursor event data.
bj_enter_event enter Enter/leave event data.
bj_key_event key Key event data.

Macro Definition Documentation

◆ BJ_BUTTON_1

#define BJ_BUTTON_1   1

First button.

◆ BJ_BUTTON_2

#define BJ_BUTTON_2   2

Second button.

◆ BJ_BUTTON_3

#define BJ_BUTTON_3   3

Third button.

◆ BJ_BUTTON_4

#define BJ_BUTTON_4   4

Fourth button.

◆ BJ_BUTTON_5

#define BJ_BUTTON_5   5

Fifth button.

◆ BJ_BUTTON_DOWN

#define BJ_BUTTON_DOWN   BJ_BUTTON_5

Scroll down mouse button.

◆ BJ_BUTTON_LEFT

#define BJ_BUTTON_LEFT   BJ_BUTTON_1

Left mouse button.

◆ BJ_BUTTON_MIDDLE

#define BJ_BUTTON_MIDDLE   BJ_BUTTON_2

Middle mouse button.

◆ BJ_BUTTON_RIGHT

#define BJ_BUTTON_RIGHT   BJ_BUTTON_3

Right mouse button.

◆ BJ_BUTTON_UP

#define BJ_BUTTON_UP   BJ_BUTTON_4

Scroll up mouse button.

◆ BJ_KEY_APOSTROPHE

#define BJ_KEY_APOSTROPHE   BJ_KEY_OEM_7

Alias for BJ_KEY_OEM_7.

◆ BJ_KEY_BACKSLASH

#define BJ_KEY_BACKSLASH   BJ_KEY_OEM_5

Alias for BJ_KEY_OEM_5.

◆ BJ_KEY_BACKSPACE

#define BJ_KEY_BACKSPACE   BJ_KEY_BACK

Alias for BJ_KEY_BACK.

◆ BJ_KEY_CAPSLOCK

#define BJ_KEY_CAPSLOCK   BJ_KEY_CAPITAL

Alias for BJ_KEY_CAPITAL.

◆ BJ_KEY_COMMA

#define BJ_KEY_COMMA   BJ_KEY_OEM_COMMA

Alias for BJ_KEY_OEM_COMMA.

◆ BJ_KEY_ENTER

#define BJ_KEY_ENTER   BJ_KEY_RETURN

Alias for BJ_KEY_RETURN.

◆ BJ_KEY_GRAVE_ACCENT

#define BJ_KEY_GRAVE_ACCENT   BJ_KEY_OEM_3

Alias for BJ_KEY_OEM_3.

◆ BJ_KEY_HANGUL

#define BJ_KEY_HANGUL   BJ_KEY_KANA

Alias for BJ_KEY_KANA.

◆ BJ_KEY_HANJA

#define BJ_KEY_HANJA   BJ_KEY_KANJI

Alias for BJ_KEY_KANJI.

◆ BJ_KEY_LEFT_ALT

#define BJ_KEY_LEFT_ALT   BJ_KEY_LMENU

Alias for BJ_KEY_LMENU.

◆ BJ_KEY_LEFT_BRACKET

#define BJ_KEY_LEFT_BRACKET   BJ_KEY_OEM_4

Alias for BJ_KEY_OEM_4.

◆ BJ_KEY_LEFT_CONTROL

#define BJ_KEY_LEFT_CONTROL   BJ_KEY_LCONTROL

Alias for BJ_KEY_LCONTROL.

◆ BJ_KEY_LEFT_OS

#define BJ_KEY_LEFT_OS   BJ_KEY_LWIN

Alias for BJ_KEY_LWIN.

◆ BJ_KEY_LEFT_SHIT

#define BJ_KEY_LEFT_SHIT   BJ_KEY_LSHIFT

Alias for BJ_KEY_LSHIFT.

◆ BJ_KEY_MINUS

#define BJ_KEY_MINUS   BJ_KEY_OEM_MINUS

Alias for BJ_KEY_OEM_MINUS.

◆ BJ_KEY_PAGE_DOWN

#define BJ_KEY_PAGE_DOWN   BJ_KEY_NEXT

Alias for BJ_KEY_NEXT.

◆ BJ_KEY_PAGE_UP

#define BJ_KEY_PAGE_UP   BJ_KEY_PRIOR

Alias for BJ_KEY_PRIOR.

◆ BJ_KEY_PERIOD

#define BJ_KEY_PERIOD   BJ_KEY_OEM_PERIOD

Alias for BJ_KEY_OEM_PERIOD.

◆ BJ_KEY_PLUS

#define BJ_KEY_PLUS   BJ_KEY_OEM_PLUS

Alias for BJ_KEY_OEM_PLUS.

◆ BJ_KEY_PRINT_SCREEN

#define BJ_KEY_PRINT_SCREEN   BJ_KEY_SNAPSHOT

Alias for BJ_KEY_SNAPSHOT.

◆ BJ_KEY_RIGHT_ALT

#define BJ_KEY_RIGHT_ALT   BJ_KEY_RMENU

Alias for BJ_KEY_RMENU.

◆ BJ_KEY_RIGHT_BRACKET

#define BJ_KEY_RIGHT_BRACKET   BJ_KEY_OEM_6

Alias for BJ_KEY_OEM_6.

◆ BJ_KEY_RIGHT_CONTROL

#define BJ_KEY_RIGHT_CONTROL   BJ_KEY_RCONTROL

Alias for BJ_KEY_RCONTROL.

◆ BJ_KEY_RIGHT_OS

#define BJ_KEY_RIGHT_OS   BJ_KEY_RWIN

Alias for BJ_KEY_RWIN.

◆ BJ_KEY_RIGHT_SHIFT

#define BJ_KEY_RIGHT_SHIFT   BJ_KEY_RSHIFT

Alias for BJ_KEY_RSHIFT.

◆ BJ_KEY_SEMICOLON

#define BJ_KEY_SEMICOLON   BJ_KEY_OEM_1

Alias for BJ_KEY_OEM_1.

◆ BJ_KEY_SLASH

#define BJ_KEY_SLASH   BJ_KEY_OEM_2

Alias for BJ_KEY_OEM_2.

Typedef Documentation

◆ bj_button_callback_fn_t

typedef void(* bj_button_callback_fn_t) (bj_window *p_window, const bj_button_event *, void *)

Define the callback type for mouse button events.

Called when a mouse button is pressed or released.

See also
bj_set_button_callback

◆ bj_button_event

Represent a mouse button event.

◆ bj_cursor_callback_fn_t

typedef void(* bj_cursor_callback_fn_t) (bj_window *p_window, const bj_cursor_event *, void *)

Define the callback type for cursor movement events.

Called when the cursor moves inside a window.

See also
bj_set_cursor_callback

◆ bj_cursor_event

Represent a mouse cursor movement event.

◆ bj_enter_callback_fn_t

typedef void(* bj_enter_callback_fn_t) (bj_window *, const bj_enter_event *, void *)

Define the callback type for enter events.

Called when the cursor enters or exits a window.

See also
bj_set_enter_callback

◆ bj_enter_event

Represent a mouse enter or leave event.

◆ bj_event

typedef struct bj_event_t bj_event

Represent a generic window-related event.

This union-based structure wraps all types of input events.

◆ bj_event_action

Define event action types for keys or mouse buttons.

◆ bj_event_type

Identify the type of a generic event.

◆ bj_key

typedef enum bj_key_t bj_key

List of possible keys on a keyboard.

The values are directly taken from the [VK codes in Microsoft API] (https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes) This also includes the annotated documentation of each key.

Even if all values from the abovementioned page are present in this enum, not all are used by Banjo and some are never returned by key events.

Values for 0-9 and A-Z keys directly directly correspond to their ASCII equivalent.

◆ bj_key_callback_fn_t

typedef void(* bj_key_callback_fn_t) (bj_window *p_window, const bj_key_event *, void *)

Define the callback type for keyboard key events.

Called when a key is pressed, released, or repeated.

See also
bj_set_key_callback

◆ bj_key_event

typedef struct bj_key_event_t bj_key_event

Represent a keyboard key event.

Enumeration Type Documentation

◆ bj_event_action_t

Define event action types for keys or mouse buttons.

Enumerator
BJ_RELEASE 

The key or button was released.

BJ_PRESS 

The key or button was pressed.

BJ_REPEAT 

The key is being held (repeats)

◆ bj_event_type_t

Identify the type of a generic event.

Enumerator
BJ_EVENT_ENTER 

Mouse enter/leave.

BJ_EVENT_CURSOR 

Mouse move.

BJ_EVENT_KEY 

Keyboard key.

BJ_EVENT_BUTTON 

Mouse button.

◆ bj_key_t

enum bj_key_t

List of possible keys on a keyboard.

The values are directly taken from the [VK codes in Microsoft API] (https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes) This also includes the annotated documentation of each key.

Even if all values from the abovementioned page are present in this enum, not all are used by Banjo and some are never returned by key events.

Values for 0-9 and A-Z keys directly directly correspond to their ASCII equivalent.

Enumerator
BJ_KEY_UNKNOWN 

No Button.

BJ_KEY_LBUTTON 

Left mouse button.

BJ_KEY_RBUTTON 

Right mouse button.

BJ_KEY_CANCEL 

Control-break processing.

BJ_KEY_MBUTTON 

Middle mouse button.

BJ_KEY_XBUTTON1 

X1 mouse button.

BJ_KEY_XBUTTON2 

X2 mouse button.

BJ_KEY_BACK 

Backspace key.

BJ_KEY_TAB 

Tab key.

BJ_KEY_CLEAR 

Clear key.

BJ_KEY_RETURN 

Enter key.

BJ_KEY_SHIFT 

Shift key.

BJ_KEY_CONTROL 

Ctrl key.

BJ_KEY_MENU 

Alt key.

BJ_KEY_PAUSE 

Pause key.

BJ_KEY_CAPITAL 

Caps lock key.

BJ_KEY_KANA 

IME Kana mode.

BJ_KEY_IME_ON 

IME On.

BJ_KEY_JUNJA 

IME Junja mode.

BJ_KEY_FINAL 

IME final mode.

BJ_KEY_KANJI 

IME Hanja mode.

BJ_KEY_IME_OFF 

IME Off.

BJ_KEY_ESCAPE 

Esc key.

BJ_KEY_CONVERT 

IME convert.

BJ_KEY_NONCONVERT 

IME nonconvert.

BJ_KEY_ACCEPT 

IME accept.

BJ_KEY_MODECHANGE 

IME mode change request.

BJ_KEY_SPACE 

Spacebar key.

BJ_KEY_PRIOR 

Page up key.

BJ_KEY_NEXT 

Page down key.

BJ_KEY_END 

End key.

BJ_KEY_HOME 

Home key.

BJ_KEY_LEFT 

Left arrow key.

BJ_KEY_UP 

Up arrow key.

BJ_KEY_RIGHT 

Right arrow key.

BJ_KEY_DOWN 

Down arrow key.

BJ_KEY_SELECT 

Select key.

BJ_KEY_PRINT 

Print key.

BJ_KEY_EXECUTE 

Execute key.

BJ_KEY_SNAPSHOT 

Print screen key.

BJ_KEY_INSERT 

Insert key.

BJ_KEY_DELETE 

Delete key.

BJ_KEY_HELP 

Help key.

BJ_KEY_0 

0 key

BJ_KEY_1 

1 key

BJ_KEY_2 

2 key

BJ_KEY_3 

3 key

BJ_KEY_4 

4 key

BJ_KEY_5 

5 key

BJ_KEY_6 

6 key

BJ_KEY_7 

7 key

BJ_KEY_8 

8 key

BJ_KEY_9 

9 key

BJ_KEY_A 

A key.

BJ_KEY_B 

B key.

BJ_KEY_C 

C key.

BJ_KEY_D 

D key.

BJ_KEY_E 

E key.

BJ_KEY_F 

F key.

BJ_KEY_G 

G key.

BJ_KEY_H 

H key.

BJ_KEY_I 

I key.

BJ_KEY_J 

J key.

BJ_KEY_K 

K key.

BJ_KEY_L 

L key.

BJ_KEY_M 

M key.

BJ_KEY_N 

N key.

BJ_KEY_O 

O key.

BJ_KEY_P 

P key.

BJ_KEY_Q 

Q key.

BJ_KEY_R 

R key.

BJ_KEY_S 

S key.

BJ_KEY_T 

T key.

BJ_KEY_U 

U key.

BJ_KEY_V 

V key.

BJ_KEY_W 

W key.

BJ_KEY_X 

X key.

BJ_KEY_Y 

Y key.

BJ_KEY_Z 

Z key.

BJ_KEY_LWIN 

Left Windows logo key.

BJ_KEY_RWIN 

Right Windows logo key.

BJ_KEY_APPS 

Application key.

BJ_KEY_SLEEP 

Computer Sleep key.

BJ_KEY_NUMPAD0 

Numeric keypad 0 key.

BJ_KEY_NUMPAD1 

Numeric keypad 1 key.

BJ_KEY_NUMPAD2 

Numeric keypad 2 key.

BJ_KEY_NUMPAD3 

Numeric keypad 3 key.

BJ_KEY_NUMPAD4 

Numeric keypad 4 key.

BJ_KEY_NUMPAD5 

Numeric keypad 5 key.

BJ_KEY_NUMPAD6 

Numeric keypad 6 key.

BJ_KEY_NUMPAD7 

Numeric keypad 7 key.

BJ_KEY_NUMPAD8 

Numeric keypad 8 key.

BJ_KEY_NUMPAD9 

Numeric keypad 9 key.

BJ_KEY_MULTIPLY 

Multiply key.

BJ_KEY_ADD 

Add key.

BJ_KEY_SEPARATOR 

Separator key.

BJ_KEY_SUBTRACT 

Subtract key.

BJ_KEY_DECIMAL 

Decimal key.

BJ_KEY_DIVIDE 

Divide key.

BJ_KEY_F1 

F1 key.

BJ_KEY_F2 

F2 key.

BJ_KEY_F3 

F3 key.

BJ_KEY_F4 

F4 key.

BJ_KEY_F5 

F5 key.

BJ_KEY_F6 

F6 key.

BJ_KEY_F7 

F7 key.

BJ_KEY_F8 

F8 key.

BJ_KEY_F9 

F9 key.

BJ_KEY_F10 

F10 key.

BJ_KEY_F11 

F11 key.

BJ_KEY_F12 

F12 key.

BJ_KEY_F13 

F13 key.

BJ_KEY_F14 

F14 key.

BJ_KEY_F15 

F15 key.

BJ_KEY_F16 

F16 key.

BJ_KEY_F17 

F17 key.

BJ_KEY_F18 

F18 key.

BJ_KEY_F19 

F19 key.

BJ_KEY_F20 

F20 key.

BJ_KEY_F21 

F21 key.

BJ_KEY_F22 

F22 key.

BJ_KEY_F23 

F23 key.

BJ_KEY_F24 

F24 key.

BJ_KEY_NUMLOCK 

Num lock key.

BJ_KEY_SCROLL 

Scroll lock key.

BJ_KEY_LSHIFT 

Left Shift key.

BJ_KEY_RSHIFT 

Right Shift key.

BJ_KEY_LCONTROL 

Left Ctrl key.

BJ_KEY_RCONTROL 

Right Ctrl key.

BJ_KEY_LMENU 

Left Alt key.

BJ_KEY_RMENU 

Right Alt key.

BJ_KEY_BROWSER_BACK 

Browser Back key.

BJ_KEY_BROWSER_FORWARD 

Browser Forward key.

BJ_KEY_BROWSER_REFRESH 

Browser Refresh key.

BJ_KEY_BROWSER_STOP 

Browser Stop key.

BJ_KEY_BROWSER_SEARCH 

Browser Search key.

BJ_KEY_BROWSER_FAVORITES 

Browser Favorites key.

BJ_KEY_BROWSER_HOME 

Browser Start and Home key.

BJ_KEY_VOLUME_MUTE 

Volume Mute key.

BJ_KEY_VOLUME_DOWN 

Volume Down key.

BJ_KEY_VOLUME_UP 

Volume Up key.

BJ_KEY_MEDIA_NEXT_TRACK 

Next Track key.

BJ_KEY_MEDIA_PREV_TRACK 

Previous Track key.

BJ_KEY_MEDIA_STOP 

Stop Media key.

BJ_KEY_MEDIA_PLAY_PAUSE 

Play/Pause Media key.

BJ_KEY_LAUNCH_MAIL 

Start Mail key.

BJ_KEY_LAUNCH_MEDIA_SELECT 

Select Media key.

BJ_KEY_LAUNCH_APP1 

Start Application 1 key.

BJ_KEY_LAUNCH_APP2 

Start Application 2 key.

BJ_KEY_OEM_1 

Used for miscellaneous characters; it can vary by keyboard.

For the US standard keyboard, the ;: key

BJ_KEY_OEM_PLUS 

For any country/region, the + key.

BJ_KEY_OEM_COMMA 

For any country/region, the , key.

BJ_KEY_OEM_MINUS 

For any country/region, the - key.

BJ_KEY_OEM_PERIOD 

For any country/region, the .

key

BJ_KEY_OEM_2 

Used for miscellaneous characters; it can vary by keyboard.

For the US standard keyboard, the /? key

BJ_KEY_OEM_3 

Used for miscellaneous characters; it can vary by keyboard.

For the US standard keyboard, the `~ key

BJ_KEY_OEM_4 

Used for miscellaneous characters; it can vary by keyboard.

For the US standard keyboard, the [{ key

BJ_KEY_OEM_5 

Used for miscellaneous characters; it can vary by keyboard.

For the US standard keyboard, the \| key

BJ_KEY_OEM_6 

Used for miscellaneous characters; it can vary by keyboard.

For the US standard keyboard, the ]} key

BJ_KEY_OEM_7 

Used for miscellaneous characters; it can vary by keyboard.

For the US standard keyboard, the '" key

BJ_KEY_OEM_8 

Used for miscellaneous characters; it can vary by keyboard.

BJ_KEY_OEM_102 

The <> keys on the US standard keyboard, or the \| key on the non-US 102-key keyboard.

BJ_KEY_PROCESSKEY 

IME PROCESS key.

BJ_KEY_PACKET 

Used to pass Unicode characters as if they were keystrokes.

The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP

BJ_KEY_ATTN 

Attn key.

BJ_KEY_CRSEL 

CrSel key.

BJ_KEY_EXSEL 

ExSel key.

BJ_KEY_EREOF 

Erase EOF key.

BJ_KEY_PLAY 

Play key.

BJ_KEY_ZOOM 

Zoom key.

BJ_KEY_NONAME 

Reserved.

BJ_KEY_PA1 

PA1 key.

BJ_KEY_OEM_CLEAR 

Clear key.

Function Documentation

◆ bj_close_on_escape()

void bj_close_on_escape ( bj_window * p_window,
const bj_key_event * p_event,
void * p_user_data )

Handle the ESC key to close a window.

This utility callback closes the window when BJ_KEY_ESCAPE is pressed. Can be passed directly to bj_set_key_callback or called manually by your event system.

Parameters
p_windowTarget window pointer (must not be NULL).
p_eventKey event data (must not be NULL).
p_user_dataOpaque user pointer provided at callback registration. Not used by this function.
See also
bj_key_callback_fn_t
bj_set_key_callback

◆ bj_dispatch_event()

void bj_dispatch_event ( const bj_event * p_event)

Dispatch a single event to registered callbacks.

Invokes the appropriate callback(s) associated with the event type. Does not take ownership of p_event; the caller manages its lifetime.

Parameters
p_eventPointer to the event to dispatch (must not be NULL).

◆ bj_dispatch_events()

void bj_dispatch_events ( void )

Poll and dispatch all pending events.

This function checks for new input events and invokes the appropriate registered callbacks.

See also
bj_set_cursor_callback
bj_set_button_callback
bj_set_key_callback
bj_set_enter_callback

◆ bj_key_name()

const char * bj_key_name ( int key)

Get the string name of a key.

Return a string representing the key code. The returned string omits the BJ_KEY_ prefix.

Parameters
keyThe bj_key value.
Returns
A null-terminated string owned by Banjo.
See also
bj_key

◆ bj_poll_events()

bj_bool bj_poll_events ( bj_event * p_event)

Poll the next pending event from the system queue.

Retrieves and removes the next event, if any.
If no events are available, returns BJ_FALSE and does not modify p_event.

Parameters
p_eventPointer to a bj_event structure to be filled (must not be NULL).
Return values
BJ_TRUEAn event was retrieved and written to p_event.
BJ_FALSENo event available.

◆ bj_push_button_event()

void bj_push_button_event ( bj_window * p_window,
int button,
bj_event_action action,
int x,
int y )

Push a mouse button event.

Represents a mouse button press or release within a window.

Parameters
p_windowPointer to the window receiving the event.
buttonThe mouse button identifier.
actionThe action performed (press or release).
xThe x-coordinate of the cursor at the event.
yThe y-coordinate of the cursor at the event.

◆ bj_push_cursor_event()

void bj_push_cursor_event ( bj_window * p_window,
int x,
int y )

Push a cursor movement event.

Indicates the cursor has moved within the specified window.

Parameters
p_windowPointer to the window receiving the event.
xThe new x-coordinate of the cursor.
yThe new y-coordinate of the cursor.

◆ bj_push_enter_event()

void bj_push_enter_event ( bj_window * p_window,
bj_bool enter,
int x,
int y )

Push an enter or leave window event.

Indicates whether the cursor entered or left the specified window.

Parameters
p_windowPointer to the window receiving the event.
enterBJ_TRUE if cursor entered the window, BJ_FALSE if left.
xThe x-coordinate of the cursor at the event.
yThe y-coordinate of the cursor at the event.

◆ bj_push_event()

void bj_push_event ( const bj_event * e)

Push a custom event to the internal event queue.

Typically used by the platform backend to post low-level events into the event processing system.

Parameters
ePointer to the event to push.
Note
The event is copied internally and queued for later dispatch.

◆ bj_push_key_event()

void bj_push_key_event ( bj_window * p_window,
bj_event_action action,
bj_key key,
int scancode )

Push a keyboard event into the event system.

This function creates and queues a keyboard event reflecting a key press, release, or repeat.

Parameters
p_windowPointer to the window receiving the event.
actionThe key event action (press, release, repeat).
keyThe key code that triggered the event.
scancodeThe platform-specific scancode of the key.

◆ bj_set_button_callback()

bj_button_callback_fn_t bj_set_button_callback ( bj_button_callback_fn_t p_callback,
void * p_user_data )

Set the global callback for mouse button events.

Parameters
p_callbackThe new callback function
p_user_dataLocation to user-provided data.
Returns
The previously set callback, or NULL if none
See also
bj_button_callback_fn_t

◆ bj_set_cursor_callback()

bj_cursor_callback_fn_t bj_set_cursor_callback ( bj_cursor_callback_fn_t p_callback,
void * p_user_data )

Set the global callback for cursor events.

Parameters
p_callbackThe new callback function
p_user_dataLocation to user-provided data.
Returns
The previously set callback, or NULL if none
See also
bj_cursor_callback_fn_t

◆ bj_set_enter_callback()

bj_enter_callback_fn_t bj_set_enter_callback ( bj_enter_callback_fn_t p_callback,
void * p_user_data )

Set the global callback for mouse enter/leave events.

Parameters
p_callbackThe new callback function
p_user_dataLocation to user-provided data.
Returns
The previously set callback, or NULL if none
See also
bj_enter_callback_fn_t

◆ bj_set_key_callback()

bj_key_callback_fn_t bj_set_key_callback ( bj_key_callback_fn_t p_callback,
void * p_user_data )

Set the global callback for keyboard key events.

Parameters
p_callbackThe new callback function
p_user_dataLocation to user-provided data.
Returns
The previously set callback, or NULL if none
Key Repeat
If the window has the BJ_WINDOW_FLAG_KEY_REPEAT flag set, BJ_REPEAT actions will be sent when holding keys.
See also
bj_key_callback_fn_t