Fennix  1.0.0
Full Documentation
input.h
Go to the documentation of this file.
1 /*
2  This file is part of Fennix Kernel.
3 
4  Fennix Kernel is free software: you can redistribute it and/or
5  modify it under the terms of the GNU General Public License as
6  published by the Free Software Foundation, either version 3 of
7  the License, or (at your option) any later version.
8 
9  Fennix Kernel is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with Fennix Kernel. If not, see <https://www.gnu.org/licenses/>.
16 */
17 
18 #ifndef __FENNIX_API_INPUT_H__
19 #define __FENNIX_API_INPUT_H__
20 
21 #include <types.h>
22 
23 #if __has_include(<interface/device.h>)
24 #include <interface/device.h>
25 #else
26 #include <device.h>
27 #endif
28 
29 struct InodeOperations;
30 
31 typedef enum
32 {
43 
70 
83 
100 
127 
141 
160 
164 
165  KEY_PRESSED = 0x80,
166 } KeyScanCodes;
167 
168 typedef struct
169 {
171 
172  union
173  {
174  struct
175  {
176  char IsScanCode : 1;
177  };
178  char Value;
179  };
180  unsigned char Character;
182 
183 typedef struct
184 {
185  long X, Y;
186  int8_t Z;
187  uint8_t Absolute : 1;
188  uint8_t LeftButton : 1;
189  uint8_t RightButton : 1;
190  uint8_t MiddleButton : 1;
191  uint8_t Button4 : 1;
192  uint8_t Button5 : 1;
193  uint8_t Button6 : 1;
194  uint8_t Button7 : 1;
195  uint8_t Button8 : 1;
196 } MouseReport;
197 
198 typedef struct
199 {
201 
202 typedef struct
203 {
204  uint16_t X, Y;
205  uint8_t Pressure;
207 
208 typedef struct
209 {
210 } GamepadReport;
211 
212 typedef struct
213 {
215 
216 typedef struct
217 {
219 
220 typedef struct
221 {
223 
224 typedef struct
225 {
227  dev_t Device;
228  union
229  {
230  KeyboardReport Keyboard;
231  MouseReport Mouse;
232  JoystickReport Joystick;
233  TouchScreenReport TouchScreen;
234  GamepadReport Gamepad;
235  AccelerometerReport Accelerometer;
236  GyroscopeReport Gyroscope;
237  MagnetometerReport Magnetometer;
238  /* ... */
239  };
240 } InputReport;
241 
242 EXTERNC int ReportInputEvent(InputReport *Report);
243 
244 #endif // !__FENNIX_API_INPUT_H__
DeviceType
Definition: device.h:32
uint8_t LeftButton
Definition: input.h:188
uint8_t Absolute
Definition: input.h:187
KeyScanCodes Key
Definition: input.h:170
uint8_t Pressure
Definition: input.h:205
long X
Definition: input.h:185
uint8_t RightButton
Definition: input.h:189
uint16_t X
Definition: input.h:204
uint8_t Button4
Definition: input.h:191
unsigned char Character
Definition: input.h:180
KeyScanCodes
Definition: input.h:32
@ KEY_MULTIMEDIA_WWW_HOME
Definition: input.h:150
@ KEY_F4
Definition: input.h:74
@ KEY_SPACE
Definition: input.h:122
@ KEY_MULTIMEDIA_CALCULATOR
Definition: input.h:145
@ KEY_MULTIMEDIA_WWW_REFRESH
Definition: input.h:153
@ KEY_LEFT_BRACKET
Definition: input.h:112
@ KEY_ACPI_SLEEP
Definition: input.h:162
@ KEY_P
Definition: input.h:53
@ KEY_M
Definition: input.h:69
@ KEY_B
Definition: input.h:67
@ KEY_RIGHT_SHIFT
Definition: input.h:104
@ KEY_F9
Definition: input.h:79
@ KEYPAD_3
Definition: input.h:94
@ KEY_MULTIMEDIA_MY_COMPUTER
Definition: input.h:157
@ KEY_2
Definition: input.h:34
@ KEY_F6
Definition: input.h:76
@ KEYPAD_5
Definition: input.h:89
@ KEY_INSERT
Definition: input.h:136
@ KEY_ACPI_POWER
Definition: input.h:161
@ KEY_SEMICOLON
Definition: input.h:115
@ KEY_E
Definition: input.h:46
@ KEY_I
Definition: input.h:51
@ KEY_W
Definition: input.h:45
@ KEY_RIGHT_BRACKET
Definition: input.h:113
@ KEYPAD_2
Definition: input.h:93
@ KEY_D
Definition: input.h:56
@ KEY_6
Definition: input.h:38
@ KEY_F7
Definition: input.h:77
@ KEY_SCROLL_LOCK
Definition: input.h:125
@ KEY_1
Definition: input.h:33
@ KEY_ACPI_WAKE
Definition: input.h:163
@ KEY_ESCAPE
Definition: input.h:107
@ KEY_F10
Definition: input.h:80
@ KEY_F
Definition: input.h:57
@ KEY_PRINT_SCREEN
Definition: input.h:126
@ KEYPAD_0
Definition: input.h:95
@ KEY_H
Definition: input.h:59
@ KEY_MULTIMEDIA_VOL_UP
Definition: input.h:149
@ KEY_LEFT_ALT
Definition: input.h:105
@ KEY_X
Definition: input.h:64
@ KEYPAD_6
Definition: input.h:90
@ KEY_G
Definition: input.h:58
@ KEY_RIGHT_ALT
Definition: input.h:106
@ KEYPAD_9
Definition: input.h:86
@ KEY_SLASH
Definition: input.h:121
@ KEY_Y
Definition: input.h:49
@ KEY_LEFT_SHIFT
Definition: input.h:103
@ KEY_APPS
Definition: input.h:140
@ KEY_MINUS
Definition: input.h:108
@ KEY_9
Definition: input.h:41
@ KEY_TAB
Definition: input.h:111
@ KEYPAD_7
Definition: input.h:84
@ KEY_T
Definition: input.h:48
@ KEY_LEFT_ARROW
Definition: input.h:130
@ KEY_DOWN_ARROW
Definition: input.h:132
@ KEY_LEFT_GUI
Definition: input.h:138
@ KEY_F5
Definition: input.h:75
@ KEY_K
Definition: input.h:61
@ KEY_0
Definition: input.h:42
@ KEYPAD_SLASH
Definition: input.h:99
@ KEYPAD_8
Definition: input.h:85
@ KEY_PERIOD
Definition: input.h:120
@ KEY_RIGHT_GUI
Definition: input.h:139
@ KEY_F12
Definition: input.h:82
@ KEYPAD_PLUS
Definition: input.h:91
@ KEY_F2
Definition: input.h:72
@ KEY_MULTIMEDIA_WWW_STOP
Definition: input.h:154
@ KEY_MULTIMEDIA_NEXT_TRACK
Definition: input.h:143
@ KEYPAD_1
Definition: input.h:92
@ KEY_RIGHT_ARROW
Definition: input.h:131
@ KEY_F3
Definition: input.h:73
@ KEY_C
Definition: input.h:65
@ KEY_MULTIMEDIA_EMAIL
Definition: input.h:158
@ KEY_F8
Definition: input.h:78
@ KEY_UP_ARROW
Definition: input.h:129
@ KEY_BACKSPACE
Definition: input.h:110
@ KEY_R
Definition: input.h:47
@ KEY_N
Definition: input.h:68
@ KEY_MULTIMEDIA_PREV_TRACK
Definition: input.h:142
@ KEY_A
Definition: input.h:54
@ KEY_END
Definition: input.h:135
@ KEY_8
Definition: input.h:40
@ KEY_Z
Definition: input.h:63
@ KEY_RETURN
Definition: input.h:114
@ KEYPAD_4
Definition: input.h:88
@ KEY_S
Definition: input.h:55
@ KEY_J
Definition: input.h:60
@ KEY_CAPS_LOCK
Definition: input.h:123
@ KEY_PRESSED
Definition: input.h:165
@ KEY_Q
Definition: input.h:44
@ KEY_MULTIMEDIA_MEDIA_SELECT
Definition: input.h:159
@ KEY_EQUAL
Definition: input.h:109
@ KEY_MULTIMEDIA_WWW_FORWARD
Definition: input.h:155
@ KEY_PAGE_UP
Definition: input.h:133
@ KEYPAD_RETURN
Definition: input.h:97
@ KEY_U
Definition: input.h:50
@ KEY_LEFT_CTRL
Definition: input.h:101
@ KEY_F11
Definition: input.h:81
@ KEY_HOME
Definition: input.h:128
@ KEYPAD_PERIOD
Definition: input.h:96
@ KEY_NUM_LOCK
Definition: input.h:124
@ KEY_PAGE_DOWN
Definition: input.h:134
@ KEYPAD_MINUS
Definition: input.h:87
@ KEY_MULTIMEDIA_VOL_DOWN
Definition: input.h:148
@ KEY_MULTIMEDIA_PLAY
Definition: input.h:146
@ KEY_MULTIMEDIA_WWW_BACK
Definition: input.h:156
@ KEY_MULTIMEDIA_STOP
Definition: input.h:147
@ KEY_7
Definition: input.h:39
@ KEY_DELETE
Definition: input.h:137
@ KEY_O
Definition: input.h:52
@ KEY_4
Definition: input.h:36
@ KEY_APOSTROPHE
Definition: input.h:116
@ KEY_RIGHT_CTRL
Definition: input.h:102
@ KEY_MULTIMEDIA_WWW_FAVORITES
Definition: input.h:152
@ KEY_L
Definition: input.h:62
@ KEY_5
Definition: input.h:37
@ KEY_3
Definition: input.h:35
@ KEYPAD_ASTERISK
Definition: input.h:98
@ KEY_MULTIMEDIA_MUTE
Definition: input.h:144
@ KEY_BACKSLASH
Definition: input.h:118
@ KEY_COMMA
Definition: input.h:119
@ KEY_V
Definition: input.h:66
@ KEY_MULTIMEDIA_WWW_SEARCH
Definition: input.h:151
@ KEY_F1
Definition: input.h:71
@ KEY_BACK_TICK
Definition: input.h:117
uint8_t Button6
Definition: input.h:193
uint8_t MiddleButton
Definition: input.h:190
uint8_t Button5
Definition: input.h:192
uint8_t Button7
Definition: input.h:194
int8_t Z
Definition: input.h:186
EXTERNC int ReportInputEvent(InputReport *Report)
uint8_t Button8
Definition: input.h:195
dev_t Device
Definition: input.h:227
DeviceType Type
Definition: input.h:226