Crazy Eddie's GUI System
0.8.7
Loading...
Searching...
No Matches
EventPusher.h
1
/***********************************************************************
2
created: 12/22/2004
3
author: Thomas Suter
4
*************************************************************************/
5
/***************************************************************************
6
* Copyright (C) 2004 - 2009 Paul D Turner & The CEGUI Development Team
7
*
8
* Permission is hereby granted, free of charge, to any person obtaining
9
* a copy of this software and associated documentation files (the
10
* "Software"), to deal in the Software without restriction, including
11
* without limitation the rights to use, copy, modify, merge, publish,
12
* distribute, sublicense, and/or sell copies of the Software, and to
13
* permit persons to whom the Software is furnished to do so, subject to
14
* the following conditions:
15
*
16
* The above copyright notice and this permission notice shall be
17
* included in all copies or substantial portions of the Software.
18
*
19
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25
* OTHER DEALINGS IN THE SOFTWARE.
26
***************************************************************************/
27
#ifndef CCEGUIEVENTPUSHER_H_INCLUDED
28
#define CCEGUIEVENTPUSHER_H_INCLUDED
29
30
#include "../../CEGUI.h"
31
#include <irrlicht.h>
32
33
namespace
CEGUI
34
{
35
using namespace
irr;
36
37
class
IrrlichtEventPusher
38
{
39
gui::ICursorControl* d_cursorctrl;
40
41
public
:
42
IrrlichtEventPusher
(irr::gui::ICursorControl*
ctrl
) :
43
d_cursorctrl(
ctrl
)
44
{
45
initCodes();
46
};
47
48
virtual
~IrrlichtEventPusher
(){};
49
50
bool
OnEvent(
const
SEvent
&
event
)
51
{
52
switch
(
event
.EventType)
53
{
54
case
EET_KEY_INPUT_EVENT
:
55
if
(
event
.KeyInput.PressedDown)
56
return
OnKeyDown(
event
.KeyInput.Key,
event
.KeyInput.Char,
event
.KeyInput.Control,
event
.KeyInput.Shift);
57
else
58
return
OnKeyUp(
event
.KeyInput.Key,
event
.KeyInput.Char,
event
.KeyInput.Control,
event
.KeyInput.Shift);
59
break
;
60
61
case
EET_MOUSE_INPUT_EVENT
:
62
return
OnMouse
(
event
.MouseInput.X,
event
.MouseInput.Y,
event
.MouseInput.Wheel,
event
.MouseInput.Event);
63
break
;
64
65
default
:
66
break
;
67
}
68
69
return
false
;
70
}
71
72
bool
OnKeyDown(
EKEY_CODE
key
,
wchar_t
wch
,
bool
/*ctrl*/
,
bool
/*shift*/
)
73
{
74
bool
handled =
false
;
75
CEGUI::GUIContext
&
cegui
=
CEGUI::System::getSingleton
().getDefaultGUIContext();
76
handled =
cegui
.injectKeyDown(
getKeyCode
(
key
));
77
handled =
cegui
.injectChar(
wch
) || handled;
78
return
handled;
79
}
80
81
bool
OnKeyUp(
EKEY_CODE
key
,
wchar_t
/*wch*/
,
bool
/*ctrl*/
,
bool
/*shift*/
)
82
{
83
bool
handled =
false
;
84
CEGUI::GUIContext
&
cegui
=
CEGUI::System::getSingleton
().getDefaultGUIContext();
85
handled =
cegui
.injectKeyUp(
getKeyCode
(
key
));
86
return
handled;
87
}
88
89
bool
OnMouse
(
s32
x,
s32
y,
f32
w
,
EMOUSE_INPUT_EVENT
e
)
90
{
91
using namespace
irr;
92
bool
handled =
false
;
93
94
switch
(
e
)
95
{
97
case
EMIE_LMOUSE_PRESSED_DOWN
:
98
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMouseButtonDown(
CEGUI::LeftButton
);
99
break
;
101
case
EMIE_RMOUSE_PRESSED_DOWN
:
102
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMouseButtonDown(
CEGUI::RightButton
);
103
break
;
105
case
EMIE_MMOUSE_PRESSED_DOWN
:
106
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMouseButtonDown(
CEGUI::MiddleButton
);
107
break
;
109
case
EMIE_LMOUSE_LEFT_UP
:
110
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMouseButtonUp(
CEGUI::LeftButton
);
111
break
;
113
case
EMIE_RMOUSE_LEFT_UP
:
114
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMouseButtonUp(
CEGUI::RightButton
);
115
break
;
117
case
EMIE_MMOUSE_LEFT_UP
:
118
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMouseButtonUp(
CEGUI::MiddleButton
);
119
break
;
121
case
EMIE_MOUSE_MOVED
:
122
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMousePosition(
123
static_cast<
float
>
(x),
static_cast<
float
>
(y));
124
break
;
127
case
EMIE_MOUSE_WHEEL
:
128
handled =
CEGUI::System::getSingleton
().getDefaultGUIContext().injectMouseWheelChange(
w
);
129
break
;
130
default
:
131
break
;
132
}
133
return
handled;
134
135
}
136
144
CEGUI::Key::Scan
getKeyCode
(irr::EKEY_CODE
kc
)
const
145
{
146
return
irr2ceCODE[
kc
];
147
}
148
149
protected
:
150
CEGUI::Key::Scan irr2ceCODE[irr::KEY_KEY_CODES_COUNT];
151
152
void
initCodes()
153
{
154
using namespace
irr;
155
memset
(irr2ceCODE, Key::Unknown,
KEY_KEY_CODES_COUNT
);
156
157
irr2ceCODE[
KEY_LBUTTON
] = Key::Unknown;
// Left mouse button
158
irr2ceCODE[
KEY_RBUTTON
] = Key::Unknown;
// Right mouse button
159
irr2ceCODE[
KEY_CANCEL
] = Key::Unknown;
// Control-break processing
160
irr2ceCODE[
KEY_MBUTTON
] = Key::Unknown;
// Middle mouse button (three-button mouse)
161
irr2ceCODE[
KEY_XBUTTON1
] = Key::Unknown;
// Windows 2000/XP: X1 mouse button
162
irr2ceCODE[
KEY_XBUTTON2
] = Key::Unknown;
// Windows 2000/XP: X2 mouse button
163
irr2ceCODE[
KEY_BACK
] = Key::Backspace;
//0x08; // BACKSPACE key
164
irr2ceCODE[
KEY_TAB
] = Key::Tab;
//0x09; // TAB key
165
irr2ceCODE[
KEY_CLEAR
] = Key::Unknown;
// CLEAR key
166
irr2ceCODE[
KEY_RETURN
] = Key::Return;
//0x0D; // ENTER key
167
irr2ceCODE[
KEY_SHIFT
] = Key::LeftShift;
// SHIFT key
168
irr2ceCODE[
KEY_CONTROL
] = Key::LeftControl;
// CTRL key
169
irr2ceCODE[
KEY_MENU
] = Key::LeftAlt;
// ALT key
170
irr2ceCODE[
KEY_PAUSE
] = Key::Pause;
// PAUSE key
171
irr2ceCODE[
KEY_CAPITAL
] = Key::Capital;
// CAPS LOCK key
172
irr2ceCODE[
KEY_KANA
] = Key::Kana;
// IME Kana mode
173
irr2ceCODE[
KEY_HANGUEL
] = Key::Unknown;
// IME Hanguel mode
174
irr2ceCODE[
KEY_HANGUL
] = Key::Unknown;
// IME Hangul mode
175
irr2ceCODE[
KEY_JUNJA
] = Key::Unknown;
// IME Junja mode
176
irr2ceCODE[
KEY_FINAL
] = Key::Unknown;
// IME final mode
177
irr2ceCODE[
KEY_HANJA
] = Key::Unknown;
// IME Hanja mode
178
irr2ceCODE[
KEY_KANJI
] = Key::Unknown;
// IME Kanji mode
179
irr2ceCODE[
KEY_ESCAPE
] = Key::Escape;
// ESC key
180
irr2ceCODE[
KEY_CONVERT
] = Key::Convert;
// IME convert
181
irr2ceCODE[
KEY_NONCONVERT
] = Key::NoConvert;
// IME nonconvert
182
irr2ceCODE[
KEY_ACCEPT
] = Key::Unknown;
// IME accept
183
irr2ceCODE[
KEY_MODECHANGE
] = Key::Unknown;
// IME mode change request
184
irr2ceCODE[
KEY_SPACE
] = Key::Space;
// SPACEBAR
185
irr2ceCODE[
KEY_PRIOR
] = Key::PageUp;
// PAGE UP key
186
irr2ceCODE[
KEY_NEXT
] = Key::PageDown;
// PAGE DOWN key
187
irr2ceCODE[
KEY_END
] = Key::End;
// END key
188
irr2ceCODE[
KEY_HOME
] = Key::Home;
// HOME key
189
irr2ceCODE[
KEY_LEFT
] = Key::ArrowLeft;
// LEFT ARROW key
190
irr2ceCODE[
KEY_UP
] = Key::ArrowUp;
// UP ARROW key
191
irr2ceCODE[
KEY_RIGHT
] = Key::ArrowRight;
// RIGHT ARROW key
192
irr2ceCODE[
KEY_DOWN
] = Key::ArrowDown;
// DOWN ARROW key
193
irr2ceCODE[
KEY_SELECT
] = Key::Unknown;
// SELECT key
194
irr2ceCODE[
KEY_PRINT
] = Key::SysRq;
// PRINT key
195
irr2ceCODE[
KEY_EXECUT
] = Key::Unknown;
// EXECUTE key
196
irr2ceCODE[
KEY_SNAPSHOT
] = Key::Unknown;
// PRINT SCREEN key
197
irr2ceCODE[
KEY_INSERT
] = Key::Insert;
//0x2D; // INS key
198
irr2ceCODE[
KEY_DELETE
] = Key::Delete;
//0x2E; // DEL key
199
irr2ceCODE[
KEY_HELP
] = Key::Unknown;
// HELP key
200
irr2ceCODE[
KEY_KEY_0
] = Key::Zero;
// 0 key
201
irr2ceCODE[
KEY_KEY_1
] = Key::One;
// 1 key
202
irr2ceCODE[
KEY_KEY_2
] = Key::Two;
// 2 key
203
irr2ceCODE[
KEY_KEY_3
] = Key::Three;
// 3 key
204
irr2ceCODE[
KEY_KEY_4
] = Key::Four;
// 4 key
205
irr2ceCODE[
KEY_KEY_5
] = Key::Five;
// 5 key
206
irr2ceCODE[
KEY_KEY_6
] = Key::Six;
// 6 key
207
irr2ceCODE[
KEY_KEY_7
] = Key::Seven;
// 7 key
208
irr2ceCODE[
KEY_KEY_8
] = Key::Eight;
// 8 key
209
irr2ceCODE[
KEY_KEY_9
] = Key::Nine;
// 9 key
210
irr2ceCODE[
KEY_KEY_A
] = Key::A;
// A key
211
irr2ceCODE[
KEY_KEY_B
] = Key::B;
// B key
212
irr2ceCODE[
KEY_KEY_C
] = Key::C;
// C key
213
irr2ceCODE[
KEY_KEY_D
] = Key::D;
// D key
214
irr2ceCODE[
KEY_KEY_E
] = Key::E;
// E key
215
irr2ceCODE[
KEY_KEY_F
] = Key::F;
// F key
216
irr2ceCODE[
KEY_KEY_G
] = Key::G;
// G key
217
irr2ceCODE[
KEY_KEY_H
] = Key::H;
// H key
218
irr2ceCODE[
KEY_KEY_I
] = Key::I;
// I key
219
irr2ceCODE[
KEY_KEY_J
] = Key::J;
// J key
220
irr2ceCODE[
KEY_KEY_K
] = Key::K;
// K key
221
irr2ceCODE[
KEY_KEY_L
] = Key::L;
// L key
222
irr2ceCODE[
KEY_KEY_M
] = Key::M;
// M key
223
irr2ceCODE[
KEY_KEY_N
] = Key::N;
// N key
224
irr2ceCODE[
KEY_KEY_O
] = Key::O;
// O key
225
irr2ceCODE[
KEY_KEY_P
] = Key::P;
// P key
226
irr2ceCODE[
KEY_KEY_Q
] = Key::Q;
// Q key
227
irr2ceCODE[
KEY_KEY_R
] = Key::R;
// R key
228
irr2ceCODE[
KEY_KEY_S
] = Key::S;
// S key
229
irr2ceCODE[
KEY_KEY_T
] = Key::T;
// T key
230
irr2ceCODE[
KEY_KEY_U
] = Key::U;
// U key
231
irr2ceCODE[
KEY_KEY_V
] = Key::V;
// V key
232
irr2ceCODE[
KEY_KEY_W
] = Key::W;
// W key
233
irr2ceCODE[
KEY_KEY_X
] = Key::X;
// X key
234
irr2ceCODE[
KEY_KEY_Y
] = Key::Y;
// Y key
235
irr2ceCODE[
KEY_KEY_Z
] = Key::Z;
// Z key
236
irr2ceCODE[
KEY_LWIN
] = Key::LeftWindows;
// Left Windows key (Microsoft� Natural� keyboard)
237
irr2ceCODE[
KEY_RWIN
] = Key::RightWindows;
// Right Windows key (Natural keyboard)
238
irr2ceCODE[
KEY_APPS
] = Key::AppMenu;
//Applications key (Natural keyboard)
239
irr2ceCODE[
KEY_SLEEP
] = Key::Sleep;
// Computer Sleep key
240
irr2ceCODE[
KEY_NUMPAD0
] = Key::Numpad0;
// Numeric keypad 0 key
241
irr2ceCODE[
KEY_NUMPAD1
] = Key::Numpad1;
// Numeric keypad 1 key
242
irr2ceCODE[
KEY_NUMPAD2
] = Key::Numpad2;
// Numeric keypad 2 key
243
irr2ceCODE[
KEY_NUMPAD3
] = Key::Numpad3;
// Numeric keypad 3 key
244
irr2ceCODE[
KEY_NUMPAD4
] = Key::Numpad4;
// Numeric keypad 4 key
245
irr2ceCODE[
KEY_NUMPAD5
] = Key::Numpad5;
// Numeric keypad 5 key
246
irr2ceCODE[
KEY_NUMPAD6
] = Key::Numpad6;
// Numeric keypad 6 key
247
irr2ceCODE[
KEY_NUMPAD7
] = Key::Numpad7;
// Numeric keypad 7 key
248
irr2ceCODE[
KEY_NUMPAD8
] = Key::Numpad8;
// Numeric keypad 8 key
249
irr2ceCODE[
KEY_NUMPAD9
] = Key::Numpad9;
// Numeric keypad 9 key
250
irr2ceCODE[
KEY_MULTIPLY
] = Key::Multiply;
// Multiply key
251
irr2ceCODE[
KEY_ADD
] = Key::Add;
// Add key
252
irr2ceCODE[
KEY_SEPARATOR
] = Key::Unknown;
// Separator key
253
irr2ceCODE[
KEY_SUBTRACT
] = Key::Subtract;
// Subtract key
254
irr2ceCODE[
KEY_DECIMAL
] = Key::Decimal;
// Decimal key
255
irr2ceCODE[
KEY_DIVIDE
] = Key::Divide;
// Divide key
256
irr2ceCODE[
KEY_F1
] = Key::F1;
// F1 key
257
irr2ceCODE[
KEY_F2
] = Key::F2;
// F2 key
258
irr2ceCODE[
KEY_F3
] = Key::F3;
// F3 key
259
irr2ceCODE[
KEY_F4
] = Key::F4;
// F4 key
260
irr2ceCODE[
KEY_F5
] = Key::F5;
// F5 key
261
irr2ceCODE[
KEY_F6
] = Key::F6;
// F6 key
262
irr2ceCODE[
KEY_F7
] = Key::F7;
// F7 key
263
irr2ceCODE[
KEY_F8
] = Key::F8;
// F8 key
264
irr2ceCODE[
KEY_F9
] = Key::F9;
// F9 key
265
irr2ceCODE[
KEY_F10
] = Key::F10;
// F10 key
266
irr2ceCODE[
KEY_F11
] = Key::F11;
// F11 key
267
irr2ceCODE[
KEY_F12
] = Key::F12;
// F12 key
268
irr2ceCODE[
KEY_F13
] = Key::F13;
// F13 key
269
irr2ceCODE[
KEY_F14
] = Key::F14;
// F14 key
270
irr2ceCODE[
KEY_F15
] = Key::F15;
// F15 key
271
irr2ceCODE[
KEY_F16
] = Key::Unknown;
// F16 key
272
irr2ceCODE[
KEY_F17
] = Key::Unknown;
// F17 key
273
irr2ceCODE[
KEY_F18
] = Key::Unknown;
// F18 key
274
irr2ceCODE[
KEY_F19
] = Key::Unknown;
// F19 key
275
irr2ceCODE[
KEY_F20
] = Key::Unknown;
// F20 key
276
irr2ceCODE[
KEY_F21
] = Key::Unknown;
// F21 key
277
irr2ceCODE[
KEY_F22
] = Key::Unknown;
// F22 key
278
irr2ceCODE[
KEY_F23
] = Key::Unknown;
// F23 key
279
irr2ceCODE[
KEY_F24
] = Key::Unknown;
// F24 key
280
irr2ceCODE[
KEY_NUMLOCK
] = Key::NumLock;
// NUM LOCK key
281
irr2ceCODE[
KEY_SCROLL
] = Key::ScrollLock;
// SCROLL LOCK key
282
irr2ceCODE[
KEY_LSHIFT
] = Key::LeftShift;
// Left SHIFT key
283
irr2ceCODE[
KEY_RSHIFT
] = Key::RightShift;
// Right SHIFT key
284
irr2ceCODE[
KEY_LCONTROL
] = Key::LeftControl;
// Left CONTROL key
285
irr2ceCODE[
KEY_RCONTROL
] = Key::RightControl;
// Right CONTROL key
286
irr2ceCODE[
KEY_LMENU
] = Key::LeftAlt;
// Left MENU key
287
irr2ceCODE[
KEY_RMENU
] = Key::RightAlt;
// Right MENU key
288
irr2ceCODE[
KEY_COMMA
] = Key::Comma;
//0xBC; // Comma Key (;)
289
irr2ceCODE[
KEY_PLUS
] = Key::Add;
// Plus Key (+)
290
irr2ceCODE[
KEY_MINUS
] = Key::Minus;
// Minus Key (-)
291
irr2ceCODE[
KEY_PERIOD
] = Key::Period;
//0xBE; // Period Key (.)
292
irr2ceCODE[
KEY_ATTN
] = Key::Unknown;
// Attn key
293
irr2ceCODE[
KEY_CRSEL
] = Key::Unknown;
// CrSel key
294
irr2ceCODE[
KEY_EXSEL
] = Key::Unknown;
// ExSel key
295
irr2ceCODE[
KEY_EREOF
] = Key::Unknown;
// Erase EOF key
296
irr2ceCODE[
KEY_PLAY
] = Key::Unknown;
// Play key
297
irr2ceCODE[
KEY_ZOOM
] = Key::Unknown;
// Zoom key
298
irr2ceCODE[
KEY_PA1
] = Key::Unknown;
// PA1 key
299
irr2ceCODE[
KEY_OEM_CLEAR
] = Key::Unknown;
// Clear key
300
}
301
302
};
303
304
}
305
306
#endif
CEGUI::GUIContext
Definition
GUIContext.h:70
CEGUI::IrrlichtEventPusher
Definition
EventPusher.h:38
CEGUI::IrrlichtEventPusher::getKeyCode
CEGUI::Key::Scan getKeyCode(irr::EKEY_CODE kc) const
Definition
EventPusher.h:144
CEGUI::IrrlichtEventPusher::OnMouse
bool OnMouse(s32 x, s32 y, f32 w, EMOUSE_INPUT_EVENT e)
Definition
EventPusher.h:89
CEGUI::System::getSingleton
static System & getSingleton(void)
Return singleton System object.
CEGUI::TypedProperty
base class for properties able to do native set/get
Definition
TypedProperty.h:50
CEGUI
Main namespace for Crazy Eddie's GUI Library.
Definition
arch_overview.dox:1
CEGUI::RightButton
@ RightButton
The right mouse button.
Definition
InputEvent.h:214
CEGUI::LeftButton
@ LeftButton
The left mouse button.
Definition
InputEvent.h:212
CEGUI::MiddleButton
@ MiddleButton
The middle mouse button.
Definition
InputEvent.h:216
cegui
include
CEGUI
RendererModules
Irrlicht
EventPusher.h
Generated by
1.9.8