1 /*
2                                     __
3                                    / _|
4   __ _ _   _ _ __ ___  _ __ __ _  | |_ ___  ___ ___
5  / _` | | | | '__/ _ \| '__/ _` | |  _/ _ \/ __/ __|
6 | (_| | |_| | | | (_) | | | (_| | | || (_) \__ \__ \
7  \__,_|\__,_|_|  \___/|_|  \__,_| |_| \___/|___/___/
8 
9 Copyright (C) 2018-2019 Aurora Free Open Source Software.
10 
11 This file is part of the Aurora Free Open Source Software. This
12 organization promote free and open source software that you can
13 redistribute and/or modify under the terms of the GNU Lesser General
14 Public License Version 3 as published by the Free Software Foundation or
15 (at your option) any later version approved by the Aurora Free Open Source
16 Software Organization. The license is available in the package root path
17 as 'LICENSE' file. Please review the following information to ensure the
18 GNU Lesser General Public License version 3 requirements will be met:
19 https://www.gnu.org/licenses/lgpl.html .
20 
21 Alternatively, this file may be used under the terms of the GNU General
22 Public License version 3 or later as published by the Free Software
23 Foundation. Please review the following information to ensure the GNU
24 General Public License requirements will be met:
25 http://www.gnu.org/licenses/gpl-3.0.html.
26 
27 NOTE: All products, services or anything associated to trademarks and
28 service marks used or referenced on this file are the property of their
29 respective companies/owners or its subsidiaries. Other names and brands
30 may be claimed as the property of others.
31 
32 For more info about intellectual property visit: aurorafoss.org or
33 directly send an email to: contact (at) aurorafoss.org .
34 */
35 
36 module aurorafw.core.input.keys;
37 
38 /// TODO: Need documentation
39 
40 enum Keycode : short
41 {
42 	Unknown = -1,
43 	Space = 32,
44 	Apostrophe = 39,
45 	Comma = 44,
46 	Minus,
47 	Period, /* . */
48 	Slash,
49 	Num0,
50 	Num1,
51 	Num2,
52 	Num3,
53 	Num4,
54 	Num5,
55 	Num6,
56 	Num7,
57 	Num8,
58 	Num9,
59 	Semicolon = 59,
60 	Equal = 61,
61 	A = 65,
62 	B,
63 	C,
64 	D,
65 	E,
66 	F,
67 	G,
68 	H,
69 	I,
70 	J,
71 	K,
72 	L,
73 	M,
74 	N,
75 	O,
76 	P,
77 	Q,
78 	R,
79 	S,
80 	T,
81 	U,
82 	V,
83 	W,
84 	X,
85 	Y,
86 	Z,
87 	LeftBracket, /* [ */
88 	BackSlash, /* \ */
89 	RightBracket, /* ] */
90 	GraveAccent = 96, /* ` */
91 	World1 = 161, /* non-US #1 */
92 	World2 = 162, /* non-US #2 */
93 	Escape = 256,
94 	Enter,
95 	Tab,
96 	Backspace,
97 	Insert,
98 	Delete,
99 	Right,
100 	Left,
101 	Down,
102 	Up,
103 	PageUp,
104 	PageDown,
105 	Home,
106 	End,
107 	CapsLock = 280,
108 	ScrollLock,
109 	NumLock,
110 	PrintScreen,
111 	Pause,
112 	F1 = 290,
113 	F2,
114 	F3,
115 	F4,
116 	F5,
117 	F6,
118 	F7,
119 	F8,
120 	F9,
121 	F10,
122 	F11,
123 	F12,
124 	F13,
125 	F14,
126 	F15,
127 	F16,
128 	F17,
129 	F18,
130 	F19,
131 	F20,
132 	F21,
133 	F22,
134 	F23,
135 	F24,
136 	F25,
137 	NumPad0 = 320,
138 	NumPad1,
139 	NumPad2,
140 	NumPad3,
141 	NumPad4,
142 	NumPad5,
143 	NumPad6,
144 	NumPad7,
145 	NumPad8,
146 	NumPad9,
147 	NumPadDecimal,
148 	NumPadDivide,
149 	NumPadMultiply,
150 	NumPadSubtract,
151 	NumPadAdd,
152 	NumPadEnter,
153 	NumPadEqual,
154 	LeftShift = 340,
155 	LeftControl,
156 	LeftAlt,
157 	LeftSuper,
158 	RightShift,
159 	RightControl,
160 	RightAlt,
161 	RightSuper,
162 	Menu,
163 	Last = Menu
164 }
165 
166 enum InputButton : ubyte
167 {
168 	B1,
169 	B2,
170 	B3,
171 	B4,
172 	B5,
173 	B6,
174 	B7,
175 	B8,
176 	Last = B8,
177 	Left = B1,
178 	Right = B2,
179 	Middle = B3
180 }
181 
182 enum InputModifier : ubyte
183 {
184 	None = 0,
185 	Shift = 1 << 0,
186 	Control = 1 << 1,
187 	Alt = 1 << 2,
188 	Super = 1 << 3,
189 	CapsLock = 1 << 4,
190 	NumLock = 1 << 5
191 }