SBgl 0.1.0
A graphics framework in C99
Loading...
Searching...
No Matches
sbgl_input.h File Reference

Public input types and scancodes for SBgl. More...

#include <stdbool.h>
#include <stdint.h>
Include dependency graph for sbgl_input.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sbgl_InputState
 Represents the real-time state of physical inputs. More...
 

Typedefs

typedef struct sbgl_InputState sbgl_InputState
 Represents the real-time state of physical inputs.
 

Enumerations

enum  SBGL_Scancode {
  SBGL_SCANCODE_UNKNOWN = 0 , SBGL_SCANCODE_A = 4 , SBGL_SCANCODE_B = 5 , SBGL_SCANCODE_C = 6 ,
  SBGL_SCANCODE_D = 7 , SBGL_SCANCODE_E = 8 , SBGL_SCANCODE_F = 9 , SBGL_SCANCODE_G = 10 ,
  SBGL_SCANCODE_H = 11 , SBGL_SCANCODE_I = 12 , SBGL_SCANCODE_J = 13 , SBGL_SCANCODE_K = 14 ,
  SBGL_SCANCODE_L = 15 , SBGL_SCANCODE_M = 16 , SBGL_SCANCODE_N = 17 , SBGL_SCANCODE_O = 18 ,
  SBGL_SCANCODE_P = 19 , SBGL_SCANCODE_Q = 20 , SBGL_SCANCODE_R = 21 , SBGL_SCANCODE_S = 22 ,
  SBGL_SCANCODE_T = 23 , SBGL_SCANCODE_U = 24 , SBGL_SCANCODE_V = 25 , SBGL_SCANCODE_W = 26 ,
  SBGL_SCANCODE_X = 27 , SBGL_SCANCODE_Y = 28 , SBGL_SCANCODE_Z = 29 , SBGL_SCANCODE_1 = 30 ,
  SBGL_SCANCODE_2 = 31 , SBGL_SCANCODE_3 = 32 , SBGL_SCANCODE_4 = 33 , SBGL_SCANCODE_5 = 34 ,
  SBGL_SCANCODE_6 = 35 , SBGL_SCANCODE_7 = 36 , SBGL_SCANCODE_8 = 37 , SBGL_SCANCODE_9 = 38 ,
  SBGL_SCANCODE_0 = 39 , SBGL_SCANCODE_RETURN = 40 , SBGL_SCANCODE_ESCAPE = 41 , SBGL_SCANCODE_BACKSPACE = 42 ,
  SBGL_SCANCODE_TAB = 43 , SBGL_SCANCODE_SPACE = 44 , SBGL_SCANCODE_MINUS = 45 , SBGL_SCANCODE_EQUAL = 46 ,
  SBGL_SCANCODE_RIGHT = 79 , SBGL_SCANCODE_LEFT = 80 , SBGL_SCANCODE_DOWN = 81 , SBGL_SCANCODE_UP = 82 ,
  SBGL_SCANCODE_LSHIFT = 225 , SBGL_SCANCODE_LCTRL = 224 , SBGL_SCANCODE_LALT = 226 , SBGL_SCANCODE_F1 = 58 ,
  SBGL_SCANCODE_F2 = 59 , SBGL_SCANCODE_F3 = 60 , SBGL_SCANCODE_F4 = 61 , SBGL_SCANCODE_F5 = 62 ,
  SBGL_SCANCODE_F6 = 63 , SBGL_SCANCODE_F7 = 64 , SBGL_SCANCODE_F8 = 65 , SBGL_SCANCODE_F9 = 66 ,
  SBGL_SCANCODE_F10 = 67 , SBGL_SCANCODE_F11 = 68 , SBGL_SCANCODE_F12 = 69 , SBGL_SCANCODE_INSERT = 73 ,
  SBGL_SCANCODE_HOME = 74 , SBGL_SCANCODE_PAGEUP = 75 , SBGL_SCANCODE_DELETE = 76 , SBGL_SCANCODE_END = 77 ,
  SBGL_SCANCODE_PAGEDOWN = 78 , SBGL_SCANCODE_NUMLOCKCLEAR = 83 , SBGL_SCANCODE_KP_DIVIDE = 84 , SBGL_SCANCODE_KP_MULTIPLY = 85 ,
  SBGL_SCANCODE_KP_MINUS = 86 , SBGL_SCANCODE_KP_PLUS = 87 , SBGL_SCANCODE_KP_ENTER = 88 , SBGL_SCANCODE_KP_1 = 89 ,
  SBGL_SCANCODE_KP_2 = 90 , SBGL_SCANCODE_KP_3 = 91 , SBGL_SCANCODE_KP_4 = 92 , SBGL_SCANCODE_KP_5 = 93 ,
  SBGL_SCANCODE_KP_6 = 94 , SBGL_SCANCODE_KP_7 = 95 , SBGL_SCANCODE_KP_8 = 96 , SBGL_SCANCODE_KP_9 = 97 ,
  SBGL_SCANCODE_KP_0 = 98 , SBGL_SCANCODE_KP_PERIOD = 99 , SBGL_SCANCODE_SEMICOLON = 51 , SBGL_SCANCODE_APOSTROPHE = 52 ,
  SBGL_SCANCODE_GRAVE = 53 , SBGL_SCANCODE_COMMA = 54 , SBGL_SCANCODE_PERIOD = 55 , SBGL_SCANCODE_SLASH = 56 ,
  SBGL_SCANCODE_CAPSLOCK = 57 , SBGL_SCANCODE_LEFTBRACKET = 47 , SBGL_SCANCODE_BACKSLASH = 49 , SBGL_SCANCODE_RIGHTBRACKET = 48 ,
  SBGL_SCANCODE_RSHIFT = 229 , SBGL_SCANCODE_RCTRL = 228 , SBGL_SCANCODE_RALT = 230 , SBGL_SCANCODE_MAX = 512
}
 OS-independent physical scancodes. More...
 
enum  SBGL_MouseButton { SBGL_MOUSE_BUTTON_LEFT = 0 , SBGL_MOUSE_BUTTON_RIGHT = 1 , SBGL_MOUSE_BUTTON_MIDDLE = 2 , SBGL_MOUSE_BUTTON_MAX = 8 }
 Standard mouse buttons. More...
 
enum  sbgl_MouseMode { SBGL_MOUSE_MODE_NORMAL , SBGL_MOUSE_MODE_HIDDEN , SBGL_MOUSE_MODE_CAPTURED }
 Mouse behavior modes. More...
 

Detailed Description

Public input types and scancodes for SBgl.

Provides a platform-independent set of physical scancodes and mouse button definitions, along with the complete input state structure.

Definition in file sbgl_input.h.

Typedef Documentation

◆ sbgl_InputState

typedef struct sbgl_InputState sbgl_InputState

Represents the real-time state of physical inputs.

Adheres to Data-Oriented Design by storing flat arrays of booleans for O(1) lookup and contiguous memory access during batch processing.

Enumeration Type Documentation

◆ SBGL_MouseButton

Standard mouse buttons.

Enumerator
SBGL_MOUSE_BUTTON_LEFT 
SBGL_MOUSE_BUTTON_RIGHT 
SBGL_MOUSE_BUTTON_MIDDLE 
SBGL_MOUSE_BUTTON_MAX 

Definition at line 143 of file sbgl_input.h.

143 {
SBGL_MouseButton
Standard mouse buttons.
Definition sbgl_input.h:143
@ SBGL_MOUSE_BUTTON_MIDDLE
Definition sbgl_input.h:146
@ SBGL_MOUSE_BUTTON_MAX
Definition sbgl_input.h:147
@ SBGL_MOUSE_BUTTON_LEFT
Definition sbgl_input.h:144
@ SBGL_MOUSE_BUTTON_RIGHT
Definition sbgl_input.h:145

◆ sbgl_MouseMode

Mouse behavior modes.

Enumerator
SBGL_MOUSE_MODE_NORMAL 

Standard OS cursor, visible and free.

SBGL_MOUSE_MODE_HIDDEN 

Cursor is invisible but moves freely.

SBGL_MOUSE_MODE_CAPTURED 

Cursor is invisible and locked to window center.

Definition at line 153 of file sbgl_input.h.

153 {
sbgl_MouseMode
Mouse behavior modes.
Definition sbgl_input.h:153
@ SBGL_MOUSE_MODE_NORMAL
Definition sbgl_input.h:154
@ SBGL_MOUSE_MODE_CAPTURED
Definition sbgl_input.h:156
@ SBGL_MOUSE_MODE_HIDDEN
Definition sbgl_input.h:155

◆ SBGL_Scancode

OS-independent physical scancodes.

These match the USB HID usage table and are used for frame-accurate input detection.

Enumerator
SBGL_SCANCODE_UNKNOWN 
SBGL_SCANCODE_A 
SBGL_SCANCODE_B 
SBGL_SCANCODE_C 
SBGL_SCANCODE_D 
SBGL_SCANCODE_E 
SBGL_SCANCODE_F 
SBGL_SCANCODE_G 
SBGL_SCANCODE_H 
SBGL_SCANCODE_I 
SBGL_SCANCODE_J 
SBGL_SCANCODE_K 
SBGL_SCANCODE_L 
SBGL_SCANCODE_M 
SBGL_SCANCODE_N 
SBGL_SCANCODE_O 
SBGL_SCANCODE_P 
SBGL_SCANCODE_Q 
SBGL_SCANCODE_R 
SBGL_SCANCODE_S 
SBGL_SCANCODE_T 
SBGL_SCANCODE_U 
SBGL_SCANCODE_V 
SBGL_SCANCODE_W 
SBGL_SCANCODE_X 
SBGL_SCANCODE_Y 
SBGL_SCANCODE_Z 
SBGL_SCANCODE_1 
SBGL_SCANCODE_2 
SBGL_SCANCODE_3 
SBGL_SCANCODE_4 
SBGL_SCANCODE_5 
SBGL_SCANCODE_6 
SBGL_SCANCODE_7 
SBGL_SCANCODE_8 
SBGL_SCANCODE_9 
SBGL_SCANCODE_0 
SBGL_SCANCODE_RETURN 
SBGL_SCANCODE_ESCAPE 
SBGL_SCANCODE_BACKSPACE 
SBGL_SCANCODE_TAB 
SBGL_SCANCODE_SPACE 
SBGL_SCANCODE_MINUS 
SBGL_SCANCODE_EQUAL 
SBGL_SCANCODE_RIGHT 
SBGL_SCANCODE_LEFT 
SBGL_SCANCODE_DOWN 
SBGL_SCANCODE_UP 
SBGL_SCANCODE_LSHIFT 
SBGL_SCANCODE_LCTRL 
SBGL_SCANCODE_LALT 
SBGL_SCANCODE_F1 
SBGL_SCANCODE_F2 
SBGL_SCANCODE_F3 
SBGL_SCANCODE_F4 
SBGL_SCANCODE_F5 
SBGL_SCANCODE_F6 
SBGL_SCANCODE_F7 
SBGL_SCANCODE_F8 
SBGL_SCANCODE_F9 
SBGL_SCANCODE_F10 
SBGL_SCANCODE_F11 
SBGL_SCANCODE_F12 
SBGL_SCANCODE_INSERT 
SBGL_SCANCODE_HOME 
SBGL_SCANCODE_PAGEUP 
SBGL_SCANCODE_DELETE 
SBGL_SCANCODE_END 
SBGL_SCANCODE_PAGEDOWN 
SBGL_SCANCODE_NUMLOCKCLEAR 
SBGL_SCANCODE_KP_DIVIDE 
SBGL_SCANCODE_KP_MULTIPLY 
SBGL_SCANCODE_KP_MINUS 
SBGL_SCANCODE_KP_PLUS 
SBGL_SCANCODE_KP_ENTER 
SBGL_SCANCODE_KP_1 
SBGL_SCANCODE_KP_2 
SBGL_SCANCODE_KP_3 
SBGL_SCANCODE_KP_4 
SBGL_SCANCODE_KP_5 
SBGL_SCANCODE_KP_6 
SBGL_SCANCODE_KP_7 
SBGL_SCANCODE_KP_8 
SBGL_SCANCODE_KP_9 
SBGL_SCANCODE_KP_0 
SBGL_SCANCODE_KP_PERIOD 
SBGL_SCANCODE_SEMICOLON 
SBGL_SCANCODE_APOSTROPHE 
SBGL_SCANCODE_GRAVE 
SBGL_SCANCODE_COMMA 
SBGL_SCANCODE_PERIOD 
SBGL_SCANCODE_SLASH 
SBGL_SCANCODE_CAPSLOCK 
SBGL_SCANCODE_LEFTBRACKET 
SBGL_SCANCODE_BACKSLASH 
SBGL_SCANCODE_RIGHTBRACKET 
SBGL_SCANCODE_RSHIFT 
SBGL_SCANCODE_RCTRL 
SBGL_SCANCODE_RALT 
SBGL_SCANCODE_MAX 

Definition at line 21 of file sbgl_input.h.

21 {
29 SBGL_SCANCODE_G = 10,
30 SBGL_SCANCODE_H = 11,
31 SBGL_SCANCODE_I = 12,
32 SBGL_SCANCODE_J = 13,
33 SBGL_SCANCODE_K = 14,
34 SBGL_SCANCODE_L = 15,
35 SBGL_SCANCODE_M = 16,
36 SBGL_SCANCODE_N = 17,
37 SBGL_SCANCODE_O = 18,
38 SBGL_SCANCODE_P = 19,
39 SBGL_SCANCODE_Q = 20,
40 SBGL_SCANCODE_R = 21,
41 SBGL_SCANCODE_S = 22,
42 SBGL_SCANCODE_T = 23,
43 SBGL_SCANCODE_U = 24,
44 SBGL_SCANCODE_V = 25,
45 SBGL_SCANCODE_W = 26,
46 SBGL_SCANCODE_X = 27,
47 SBGL_SCANCODE_Y = 28,
48 SBGL_SCANCODE_Z = 29,
49
50 SBGL_SCANCODE_1 = 30,
51 SBGL_SCANCODE_2 = 31,
52 SBGL_SCANCODE_3 = 32,
53 SBGL_SCANCODE_4 = 33,
54 SBGL_SCANCODE_5 = 34,
55 SBGL_SCANCODE_6 = 35,
56 SBGL_SCANCODE_7 = 36,
57 SBGL_SCANCODE_8 = 37,
58 SBGL_SCANCODE_9 = 38,
59 SBGL_SCANCODE_0 = 39,
60
66
69
74
78
79 /* Function keys */
92
93 /* Navigation keys */
100
101 /* Numpad */
119
120 /* Symbol keys */
131
132 /* Right modifiers */
135 SBGL_SCANCODE_RALT = 230,
136
SBGL_Scancode
OS-independent physical scancodes.
Definition sbgl_input.h:21
@ SBGL_SCANCODE_F3
Definition sbgl_input.h:82
@ SBGL_SCANCODE_LEFTBRACKET
Definition sbgl_input.h:128
@ SBGL_SCANCODE_V
Definition sbgl_input.h:44
@ SBGL_SCANCODE_M
Definition sbgl_input.h:35
@ SBGL_SCANCODE_UNKNOWN
Definition sbgl_input.h:22
@ SBGL_SCANCODE_0
Definition sbgl_input.h:59
@ SBGL_SCANCODE_RALT
Definition sbgl_input.h:135
@ SBGL_SCANCODE_K
Definition sbgl_input.h:33
@ SBGL_SCANCODE_SPACE
Definition sbgl_input.h:65
@ SBGL_SCANCODE_RIGHT
Definition sbgl_input.h:70
@ SBGL_SCANCODE_9
Definition sbgl_input.h:58
@ SBGL_SCANCODE_C
Definition sbgl_input.h:25
@ SBGL_SCANCODE_KP_8
Definition sbgl_input.h:115
@ SBGL_SCANCODE_F9
Definition sbgl_input.h:88
@ SBGL_SCANCODE_2
Definition sbgl_input.h:51
@ SBGL_SCANCODE_8
Definition sbgl_input.h:57
@ SBGL_SCANCODE_A
Definition sbgl_input.h:23
@ SBGL_SCANCODE_Y
Definition sbgl_input.h:47
@ SBGL_SCANCODE_KP_6
Definition sbgl_input.h:113
@ SBGL_SCANCODE_LALT
Definition sbgl_input.h:77
@ SBGL_SCANCODE_RCTRL
Definition sbgl_input.h:134
@ SBGL_SCANCODE_SLASH
Definition sbgl_input.h:126
@ SBGL_SCANCODE_RIGHTBRACKET
Definition sbgl_input.h:130
@ SBGL_SCANCODE_LEFT
Definition sbgl_input.h:71
@ SBGL_SCANCODE_APOSTROPHE
Definition sbgl_input.h:122
@ SBGL_SCANCODE_O
Definition sbgl_input.h:37
@ SBGL_SCANCODE_RSHIFT
Definition sbgl_input.h:133
@ SBGL_SCANCODE_R
Definition sbgl_input.h:40
@ SBGL_SCANCODE_INSERT
Definition sbgl_input.h:94
@ SBGL_SCANCODE_NUMLOCKCLEAR
Definition sbgl_input.h:102
@ SBGL_SCANCODE_F8
Definition sbgl_input.h:87
@ SBGL_SCANCODE_4
Definition sbgl_input.h:53
@ SBGL_SCANCODE_KP_MULTIPLY
Definition sbgl_input.h:104
@ SBGL_SCANCODE_Z
Definition sbgl_input.h:48
@ SBGL_SCANCODE_F10
Definition sbgl_input.h:89
@ SBGL_SCANCODE_KP_9
Definition sbgl_input.h:116
@ SBGL_SCANCODE_H
Definition sbgl_input.h:30
@ SBGL_SCANCODE_5
Definition sbgl_input.h:54
@ SBGL_SCANCODE_KP_4
Definition sbgl_input.h:111
@ SBGL_SCANCODE_J
Definition sbgl_input.h:32
@ SBGL_SCANCODE_LSHIFT
Definition sbgl_input.h:75
@ SBGL_SCANCODE_PERIOD
Definition sbgl_input.h:125
@ SBGL_SCANCODE_PAGEUP
Definition sbgl_input.h:96
@ SBGL_SCANCODE_ESCAPE
Definition sbgl_input.h:62
@ SBGL_SCANCODE_KP_PERIOD
Definition sbgl_input.h:118
@ SBGL_SCANCODE_X
Definition sbgl_input.h:46
@ SBGL_SCANCODE_LCTRL
Definition sbgl_input.h:76
@ SBGL_SCANCODE_UP
Definition sbgl_input.h:73
@ SBGL_SCANCODE_B
Definition sbgl_input.h:24
@ SBGL_SCANCODE_DOWN
Definition sbgl_input.h:72
@ SBGL_SCANCODE_G
Definition sbgl_input.h:29
@ SBGL_SCANCODE_CAPSLOCK
Definition sbgl_input.h:127
@ SBGL_SCANCODE_TAB
Definition sbgl_input.h:64
@ SBGL_SCANCODE_7
Definition sbgl_input.h:56
@ SBGL_SCANCODE_F
Definition sbgl_input.h:28
@ SBGL_SCANCODE_GRAVE
Definition sbgl_input.h:123
@ SBGL_SCANCODE_F7
Definition sbgl_input.h:86
@ SBGL_SCANCODE_MINUS
Definition sbgl_input.h:67
@ SBGL_SCANCODE_KP_7
Definition sbgl_input.h:114
@ SBGL_SCANCODE_DELETE
Definition sbgl_input.h:97
@ SBGL_SCANCODE_HOME
Definition sbgl_input.h:95
@ SBGL_SCANCODE_RETURN
Definition sbgl_input.h:61
@ SBGL_SCANCODE_KP_ENTER
Definition sbgl_input.h:107
@ SBGL_SCANCODE_E
Definition sbgl_input.h:27
@ SBGL_SCANCODE_T
Definition sbgl_input.h:42
@ SBGL_SCANCODE_F6
Definition sbgl_input.h:85
@ SBGL_SCANCODE_3
Definition sbgl_input.h:52
@ SBGL_SCANCODE_D
Definition sbgl_input.h:26
@ SBGL_SCANCODE_F12
Definition sbgl_input.h:91
@ SBGL_SCANCODE_1
Definition sbgl_input.h:50
@ SBGL_SCANCODE_COMMA
Definition sbgl_input.h:124
@ SBGL_SCANCODE_F4
Definition sbgl_input.h:83
@ SBGL_SCANCODE_MAX
Definition sbgl_input.h:137
@ SBGL_SCANCODE_KP_PLUS
Definition sbgl_input.h:106
@ SBGL_SCANCODE_F11
Definition sbgl_input.h:90
@ SBGL_SCANCODE_KP_0
Definition sbgl_input.h:117
@ SBGL_SCANCODE_END
Definition sbgl_input.h:98
@ SBGL_SCANCODE_BACKSLASH
Definition sbgl_input.h:129
@ SBGL_SCANCODE_KP_DIVIDE
Definition sbgl_input.h:103
@ SBGL_SCANCODE_KP_5
Definition sbgl_input.h:112
@ SBGL_SCANCODE_F1
Definition sbgl_input.h:80
@ SBGL_SCANCODE_P
Definition sbgl_input.h:38
@ SBGL_SCANCODE_Q
Definition sbgl_input.h:39
@ SBGL_SCANCODE_BACKSPACE
Definition sbgl_input.h:63
@ SBGL_SCANCODE_L
Definition sbgl_input.h:34
@ SBGL_SCANCODE_6
Definition sbgl_input.h:55
@ SBGL_SCANCODE_KP_3
Definition sbgl_input.h:110
@ SBGL_SCANCODE_KP_1
Definition sbgl_input.h:108
@ SBGL_SCANCODE_SEMICOLON
Definition sbgl_input.h:121
@ SBGL_SCANCODE_S
Definition sbgl_input.h:41
@ SBGL_SCANCODE_U
Definition sbgl_input.h:43
@ SBGL_SCANCODE_KP_MINUS
Definition sbgl_input.h:105
@ SBGL_SCANCODE_N
Definition sbgl_input.h:36
@ SBGL_SCANCODE_F5
Definition sbgl_input.h:84
@ SBGL_SCANCODE_EQUAL
Definition sbgl_input.h:68
@ SBGL_SCANCODE_I
Definition sbgl_input.h:31
@ SBGL_SCANCODE_PAGEDOWN
Definition sbgl_input.h:99
@ SBGL_SCANCODE_W
Definition sbgl_input.h:45
@ SBGL_SCANCODE_KP_2
Definition sbgl_input.h:109
@ SBGL_SCANCODE_F2
Definition sbgl_input.h:81