source: OGRE/trunk/ogrenew/Dependencies/include/CEGUI/CEGUIInputEvent.h @ 657

Revision 657, 11.8 KB checked in by mattausch, 19 years ago (diff)

added ogre dependencies and patched ogre sources

Line 
1/************************************************************************
2        filename:       CEGUIInputEvent.h
3        created:        30/5/2004
4        author:         Paul D Turner
5       
6        purpose:        Defines interface to input event classes
7*************************************************************************/
8/*************************************************************************
9    Crazy Eddie's GUI System (http://www.cegui.org.uk)
10    Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
11
12    This library is free software; you can redistribute it and/or
13    modify it under the terms of the GNU Lesser General Public
14    License as published by the Free Software Foundation; either
15    version 2.1 of the License, or (at your option) any later version.
16
17    This library is distributed in the hope that it will be useful,
18    but WITHOUT ANY WARRANTY; without even the implied warranty of
19    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20    Lesser General Public License for more details.
21
22    You should have received a copy of the GNU Lesser General Public
23    License along with this library; if not, write to the Free Software
24    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
25*************************************************************************/
26#ifndef _CEGUIInputEvent_h_
27#define _CEGUIInputEvent_h_
28
29#include "CEGUIBase.h"
30#include "CEGUIEventArgs.h"
31#include "CEGUIString.h"
32#include "CEGUIVector.h"
33
34
35// Start of CEGUI namespace section
36namespace CEGUI
37{
38/*!
39\brief
40        struct to give scope to scan code enumeration.
41*/
42struct CEGUIEXPORT Key
43{
44        // enumeration of scan codes.  Customised from table taken from Ogre, which took them from DirectInput...
45        enum Scan
46    {
47        Escape          =0x01,
48        One             =0x02,
49        Two             =0x03,
50        Three           =0x04,
51        Four            =0x05,
52        Five            =0x06,
53        Six             =0x07,
54        Seven           =0x08,
55        Eight           =0x09,
56        Nine            =0x0A,
57        Zero            =0x0B,
58        Minus           =0x0C,    /* - on main keyboard */
59        Equals                  =0x0D,
60        Backspace               =0x0E,    /* backspace */
61        Tab                             =0x0F,
62        Q               =0x10,
63        W               =0x11,
64        E               =0x12,
65        R               =0x13,
66        T               =0x14,
67        Y               =0x15,
68        U               =0x16,
69        I               =0x17,
70        O               =0x18,
71        P               =0x19,
72        LeftBracket     =0x1A,
73        RightBracket    =0x1B,
74        Return                  =0x1C,    /* Enter on main keyboard */
75        LeftControl             =0x1D,
76        A               =0x1E,
77        S               =0x1F,
78        D               =0x20,
79        F               =0x21,
80        G               =0x22,
81        H               =0x23,
82        J               =0x24,
83        K               =0x25,
84        L               =0x26,
85        Semicolon       =0x27,
86        Apostrophe              =0x28,
87        Grave           =0x29,    /* accent grave */
88        LeftShift       =0x2A,
89        Backslash       =0x2B,
90        Z               =0x2C,
91        X               =0x2D,
92        C               =0x2E,
93        V               =0x2F,
94        B               =0x30,
95        N               =0x31,
96        M               =0x32,
97        Comma           =0x33,
98        Period          =0x34,    /* . on main keyboard */
99        Slash           =0x35,    /* '/' on main keyboard */
100        RightShift      =0x36,
101        Multiply        =0x37,    /* * on numeric keypad */
102        LeftAlt        =0x38,    /* left Alt */
103        Space           =0x39,
104        Capital         =0x3A,
105        F1              =0x3B,
106        F2              =0x3C,
107        F3              =0x3D,
108        F4              =0x3E,
109        F5              =0x3F,
110        F6              =0x40,
111        F7              =0x41,
112        F8              =0x42,
113        F9              =0x43,
114        F10             =0x44,
115        NumLock         =0x45,
116        ScrollLock      =0x46,    /* Scroll Lock */
117        Numpad7         =0x47,
118        Numpad8         =0x48,
119        Numpad9         =0x49,
120        Subtract        =0x4A,    /* - on numeric keypad */
121        Numpad4         =0x4B,
122        Numpad5         =0x4C,
123        Numpad6         =0x4D,
124        Add                             =0x4E,    /* + on numeric keypad */
125        Numpad1         =0x4F,
126        Numpad2         =0x50,
127        Numpad3         =0x51,
128        Numpad0         =0x52,
129        Decimal                 =0x53,    /* . on numeric keypad */
130        OEM_102         =0x56,    /* < > | on UK/Germany keyboards */
131        F11             =0x57,
132        F12             =0x58,
133        F13             =0x64,    /*                     (NEC PC98) */
134        F14             =0x65,    /*                     (NEC PC98) */
135        F15             =0x66,    /*                     (NEC PC98) */
136        Kana            =0x70,    /* (Japanese keyboard)            */
137        ABNT_C1         =0x73,    /* / ? on Portugese (Brazilian) keyboards */
138        Convert         =0x79,    /* (Japanese keyboard)            */
139        NoConvert       =0x7B,    /* (Japanese keyboard)            */
140        Yen             =0x7D,    /* (Japanese keyboard)            */
141        ABNT_C2         =0x7E,    /* Numpad . on Portugese (Brazilian) keyboards */
142        NumpadEquals    =0x8D,    /* = on numeric keypad (NEC PC98) */
143        PrevTrack       =0x90,    /* Previous Track (KC_CIRCUMFLEX on Japanese keyboard) */
144        At              =0x91,    /*                     (NEC PC98) */
145        Colon           =0x92,    /*                     (NEC PC98) */
146        Underline       =0x93,    /*                     (NEC PC98) */
147        Kanji           =0x94,    /* (Japanese keyboard)            */
148        Stop            =0x95,    /*                     (NEC PC98) */
149        AX              =0x96,    /*                     (Japan AX) */
150        Unlabeled       =0x97,    /*                        (J3100) */
151        NextTrack       =0x99,    /* Next Track */
152        NumpadEnter     =0x9C,    /* Enter on numeric keypad */
153        RightControl    =0x9D,
154        Mute            =0xA0,    /* Mute */
155        Calculator      =0xA1,    /* Calculator */
156        PlayPause       =0xA2,    /* Play / Pause */
157        MediaStop       =0xA4,    /* Media Stop */
158        VolumeDown      =0xAE,    /* Volume - */
159        VolumeUp        =0xB0,    /* Volume + */
160        WebHome         =0xB2,    /* Web home */
161        NumpadComma     =0xB3,    /* , on numeric keypad (NEC PC98) */
162        Divide          =0xB5,    /* / on numeric keypad */
163        SysRq           =0xB7,
164        RightAlt        =0xB8,    /* right Alt */
165        Pause           =0xC5,    /* Pause */
166        Home            =0xC7,    /* Home on arrow keypad */
167        ArrowUp         =0xC8,    /* UpArrow on arrow keypad */
168        PageUp          =0xC9,    /* PgUp on arrow keypad */
169        ArrowLeft       =0xCB,    /* LeftArrow on arrow keypad */
170        ArrowRight      =0xCD,    /* RightArrow on arrow keypad */
171        End             =0xCF,    /* End on arrow keypad */
172        ArrowDown       =0xD0,    /* DownArrow on arrow keypad */
173        PageDown                =0xD1,    /* PgDn on arrow keypad */
174        Insert          =0xD2,    /* Insert on arrow keypad */
175        Delete          =0xD3,    /* Delete on arrow keypad */
176        LeftWindows     =0xDB,    /* Left Windows key */
177        RightWindow     =0xDC,    /* Right Windows key */
178        RightWindows    =0xDC,    /* Right Windows key - Correct spelling :) */
179        AppMenu         =0xDD,    /* AppMenu key */
180        Power           =0xDE,    /* System Power */
181        Sleep           =0xDF,    /* System Sleep */
182        Wake                    =0xE3,    /* System Wake */
183        WebSearch               =0xE5,    /* Web Search */
184        WebFavorites    =0xE6,    /* Web Favorites */
185        WebRefresh              =0xE7,    /* Web Refresh */
186        WebStop                 =0xE8,    /* Web Stop */
187        WebForward              =0xE9,    /* Web Forward */
188        WebBack                 =0xEA,    /* Web Back */
189        MyComputer              =0xEB,    /* My Computer */
190        Mail                    =0xEC,    /* Mail */
191        MediaSelect             =0xED     /* Media Select */
192    };
193
194};
195
196
197/*!
198/brief
199        Enumeration of mouse buttons
200*/
201enum MouseButton
202{
203        LeftButton,
204        RightButton,
205        MiddleButton,
206        X1Button,
207        X2Button,
208        MouseButtonCount,               //<! Dummy value that is == to the maximum number of mouse buttons supported.
209        NoButton                                //!< Value set for no mouse button.  NB: This is not 0, do not assume!
210};
211
212
213/*!
214\brief
215        System key flag values
216*/
217enum SystemKey
218{
219        LeftMouse               = 0x0001,                       //!< The left mouse button.
220        RightMouse              = 0x0002,                       //!< The right mouse button.
221        Shift                   = 0x0004,                       //!< Either shift key.
222        Control                 = 0x0008,                       //!< Either control key.
223        MiddleMouse             = 0x0010,                       //!< The middle mouse button.
224        X1Mouse                 = 0x0020,                       //!< The first 'extra' mouse button
225        X2Mouse                 = 0x0040,                       //!< The second 'extra' mouse button.
226        Alt                             = 0x0080                        //!< Either alt key.
227};
228
229
230/*!
231\brief
232        EventArgs based class that is used for objects passed to handlers triggered for events
233        concerning some Window object.
234*/
235class CEGUIEXPORT WindowEventArgs : public EventArgs
236{
237public:
238        WindowEventArgs(Window* wnd) : window(wnd) {}
239
240        Window* window;         //!< pointer to a Window object of relevance to the event.
241};
242
243
244/*!
245\brief
246        EventArgs based class that is used for objects passed to input event handlers
247        concerning mouse input.
248*/
249class CEGUIEXPORT MouseEventArgs : public WindowEventArgs
250{
251public:
252        MouseEventArgs(Window* wnd) : WindowEventArgs(wnd) {}
253
254        Point           position;               //!< holds current mouse position.
255        Vector2         moveDelta;              //!< holds variation of mouse position from last mouse input
256        MouseButton     button;                 //!< one of the MouseButton enumerated values describing the mouse button causing the event (for button inputs only)
257        uint            sysKeys;                //!< current state of the system keys and mouse buttons.
258        float           wheelChange;    //!< Holds the amount the scroll wheel has changed.
259        uint        clickCount;     //!< Holds number of mouse button down events currently counted in a multi-click sequence (for button inputs only).
260};
261
262
263/*!
264\brief
265        EventArgs based class that is used for objects passed to input event handlers
266        concerning mouse cursor events.
267*/
268class CEGUIEXPORT MouseCursorEventArgs : public EventArgs
269{
270public:
271        MouseCursorEventArgs(MouseCursor* cursor) : mouseCursor(cursor) {}
272
273        MouseCursor* mouseCursor;       //!< pointer to a MouseCursor object of relevance to the event.
274        const Image* image;                     //!< pointer to an Image object of relevance to the event.
275};
276
277
278/*!
279\brief
280        EventArgs based class that is used for objects passed to input event handlers
281        concerning keyboard input.
282*/
283class CEGUIEXPORT KeyEventArgs : public WindowEventArgs
284{
285public:
286        KeyEventArgs(Window* wnd) : WindowEventArgs(wnd) {}
287
288        utf32           codepoint;              //!< utf32 codepoint for the key (only used for Character inputs).
289        Key::Scan       scancode;               //!< Scan code of key that caused event (only used for key up & down inputs.
290        uint            sysKeys;                //!< current state of the system keys and mouse buttons.
291};
292
293
294/*!
295\brief
296        EventArgs based class that is used for Activated and Deactivated window events
297*/
298class CEGUIEXPORT ActivationEventArgs : public WindowEventArgs
299{
300public:
301        ActivationEventArgs(Window* wnd) : WindowEventArgs(wnd) {}
302
303        Window* otherWindow;    //!< Pointer to the other window involved in the activation change.
304};
305
306/*!
307\brief
308        EventArgs based class used for certain drag/drop notifications
309*/
310class CEGUIEXPORT DragDropEventArgs : public WindowEventArgs
311{
312public:
313        DragDropEventArgs(Window* wnd) : WindowEventArgs(wnd) {}
314        DragContainer*  dragDropItem; //<! pointer to the DragContainer window being dragged / dropped.
315};
316
317} // End of  CEGUI namespace section
318
319
320#endif  // end of guard _CEGUIInputEvent_h_
Note: See TracBrowser for help on using the repository browser.