summaryrefslogtreecommitdiff
path: root/Source/Asura.Engine/input
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-14 23:12:54 +0800
committerchai <chaifix@163.com>2019-03-14 23:12:54 +0800
commit8644e03586ac9c39741f62cbcbce87b18805538c (patch)
tree72021765f5262b7f2f7eebe299fd4e1aaa7c89b7 /Source/Asura.Engine/input
parent8d8c4ff1664625e7428d0d31cd798d9321680cb2 (diff)
*大小写
Diffstat (limited to 'Source/Asura.Engine/input')
-rw-r--r--Source/Asura.Engine/input/clipboard.cpp0
-rw-r--r--Source/Asura.Engine/input/clipboard.h37
-rw-r--r--Source/Asura.Engine/input/cursor.cpp0
-rw-r--r--Source/Asura.Engine/input/cursor.defs25
-rw-r--r--Source/Asura.Engine/input/cursor.h54
-rw-r--r--Source/Asura.Engine/input/input_device.hpp30
-rw-r--r--Source/Asura.Engine/input/keyboard.cpp0
-rw-r--r--Source/Asura.Engine/input/keyboard.defs482
-rw-r--r--Source/Asura.Engine/input/keyboard.h73
-rw-r--r--Source/Asura.Engine/input/mouse.cpp0
-rw-r--r--Source/Asura.Engine/input/mouse.h56
11 files changed, 757 insertions, 0 deletions
diff --git a/Source/Asura.Engine/input/clipboard.cpp b/Source/Asura.Engine/input/clipboard.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/Asura.Engine/input/clipboard.cpp
diff --git a/Source/Asura.Engine/input/clipboard.h b/Source/Asura.Engine/input/clipboard.h
new file mode 100644
index 0000000..4cecd55
--- /dev/null
+++ b/Source/Asura.Engine/input/clipboard.h
@@ -0,0 +1,37 @@
+#ifndef __ASURA_ENGINE_CLIPBOARD_H__
+#define __ASURA_ENGINE_CLIPBOARD_H__
+
+#include "Text/String.hpp"
+#include "InputDevice.hpp"
+
+namespace AsuraEngine
+{
+ namespace Input
+ {
+
+ class Clipboard ASURA_FINAL : public InputDevice<Clipboard>
+ {
+ public:
+
+ Clipboard();
+
+ Text::String GetString();
+
+ void SetString(const Text::String& text);
+
+ //----------------------------------------------------------------------------------------------------------
+
+ LUAX_DECL_SINGLETON(Clipboard);
+
+ //----------------------------------------------------------------------------------------------------------
+
+ private:
+
+ ~Clipboard();
+
+ };
+
+ };
+}
+
+#endif \ No newline at end of file
diff --git a/Source/Asura.Engine/input/cursor.cpp b/Source/Asura.Engine/input/cursor.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/Asura.Engine/input/cursor.cpp
diff --git a/Source/Asura.Engine/input/cursor.defs b/Source/Asura.Engine/input/cursor.defs
new file mode 100644
index 0000000..f8b8492
--- /dev/null
+++ b/Source/Asura.Engine/input/cursor.defs
@@ -0,0 +1,25 @@
+
+// Types of system cursors.
+enum SystemCursor
+{
+ CURSOR_ARROW,
+ CURSOR_IBEAM,
+ CURSOR_WAIT,
+ CURSOR_CROSSHAIR,
+ CURSOR_WAITARROW,
+ CURSOR_SIZENWSE,
+ CURSOR_SIZENESW,
+ CURSOR_SIZEWE,
+ CURSOR_SIZENS,
+ CURSOR_SIZEALL,
+ CURSOR_NO,
+ CURSOR_HAND,
+ CURSOR_MAX_ENUM
+};
+
+enum CursorType
+{
+ CURSORTYPE_SYSTEM,
+ CURSORTYPE_IMAGE,
+ CURSORTYPE_MAX_ENUM
+};
diff --git a/Source/Asura.Engine/input/cursor.h b/Source/Asura.Engine/input/cursor.h
new file mode 100644
index 0000000..7125869
--- /dev/null
+++ b/Source/Asura.Engine/input/cursor.h
@@ -0,0 +1,54 @@
+#ifndef __ASURA_ENGINE_CURSOR_H__
+#define __ASURA_ENGINE_CURSOR_H__
+
+#include <SDL2/SDL.h>
+
+#include "Scripting/Portable.h"
+#include "Graphics/ImageData.h"
+#include "InputDevice.hpp"
+
+namespace AsuraEngine
+{
+ namespace Input
+ {
+
+ class Cursor : public Scripting::Portable
+ {
+ public:
+
+ // ָö
+ #include "Cursor.defs"
+
+ Cursor(Graphics::ImageData& imageData, int hotx, int hoty);
+ Cursor(SystemCursor cursortype);
+
+ ~Cursor();
+
+ SDL_Cursor* GetHandle() const;
+ CursorType GetType() const;
+ SystemCursor GetSystemType() const;
+
+ private:
+
+ SDL_Cursor* mCursorHandle;
+
+ CursorType mType;
+ SystemCursor mSystemType;
+
+ public:
+
+ //----------------------------------------------------------------------------------------------------------
+
+ LUAX_DECL_FACTORY(Cursor);
+
+ LUAX_DECL_ENUM(EnumCursorType);
+ LUAX_DECL_ENUM(EnumSystemCursor);
+
+ //----------------------------------------------------------------------------------------------------------
+
+ };
+
+ }
+}
+
+#endif \ No newline at end of file
diff --git a/Source/Asura.Engine/input/input_device.hpp b/Source/Asura.Engine/input/input_device.hpp
new file mode 100644
index 0000000..eb0b7a3
--- /dev/null
+++ b/Source/Asura.Engine/input/input_device.hpp
@@ -0,0 +1,30 @@
+#ifndef __ASURA_ENGINE_INPUT_BASE_H__
+#define __ASURA_ENGINE_INPUT_BASE_H__
+
+#include "Scripting/Portable.h"
+#include "Config.h"
+#include "Singleton.hpp"
+
+namespace AsuraEngine
+{
+ namespace Input
+ {
+
+ ///
+ /// 豸һ
+ ///
+ template<class T>
+ ASURA_ABSTRACT class InputDevice
+ : virtual public Scripting::Portable
+ , virtual public Singleton<T>
+ {
+ public:
+ InputDevice();
+ virtual ~InputDevice();
+
+ };
+
+ }
+}
+
+#endif \ No newline at end of file
diff --git a/Source/Asura.Engine/input/keyboard.cpp b/Source/Asura.Engine/input/keyboard.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/Asura.Engine/input/keyboard.cpp
diff --git a/Source/Asura.Engine/input/keyboard.defs b/Source/Asura.Engine/input/keyboard.defs
new file mode 100644
index 0000000..8f04dc2
--- /dev/null
+++ b/Source/Asura.Engine/input/keyboard.defs
@@ -0,0 +1,482 @@
+
+/**
+* Keyboard keys. They are dependent on the current layout of the keyboard.
+**/
+enum Key
+{
+ KEY_UNKNOWN,
+
+ KEY_RETURN,
+ KEY_ESCAPE,
+ KEY_BACKSPACE,
+ KEY_TAB,
+ KEY_SPACE,
+ KEY_EXCLAIM,
+ KEY_QUOTEDBL,
+ KEY_HASH,
+ KEY_PERCENT,
+ KEY_DOLLAR,
+ KEY_AMPERSAND,
+ KEY_QUOTE,
+ KEY_LEFTPAREN,
+ KEY_RIGHTPAREN,
+ KEY_ASTERISK,
+ KEY_PLUS,
+ KEY_COMMA,
+ KEY_MINUS,
+ KEY_PERIOD,
+ KEY_SLASH,
+ KEY_0,
+ KEY_1,
+ KEY_2,
+ KEY_3,
+ KEY_4,
+ KEY_5,
+ KEY_6,
+ KEY_7,
+ KEY_8,
+ KEY_9,
+ KEY_COLON,
+ KEY_SEMICOLON,
+ KEY_LESS,
+ KEY_EQUALS,
+ KEY_GREATER,
+ KEY_QUESTION,
+ KEY_AT,
+
+ KEY_LEFTBRACKET,
+ KEY_BACKSLASH,
+ KEY_RIGHTBRACKET,
+ KEY_CARET,
+ KEY_UNDERSCORE,
+ KEY_BACKQUOTE,
+ KEY_A,
+ KEY_B,
+ KEY_C,
+ KEY_D,
+ KEY_E,
+ KEY_F,
+ KEY_G,
+ KEY_H,
+ KEY_I,
+ KEY_J,
+ KEY_K,
+ KEY_L,
+ KEY_M,
+ KEY_N,
+ KEY_O,
+ KEY_P,
+ KEY_Q,
+ KEY_R,
+ KEY_S,
+ KEY_T,
+ KEY_U,
+ KEY_V,
+ KEY_W,
+ KEY_X,
+ KEY_Y,
+ KEY_Z,
+
+ KEY_CAPSLOCK,
+
+ KEY_F1,
+ KEY_F2,
+ KEY_F3,
+ KEY_F4,
+ KEY_F5,
+ KEY_F6,
+ KEY_F7,
+ KEY_F8,
+ KEY_F9,
+ KEY_F10,
+ KEY_F11,
+ KEY_F12,
+
+ KEY_PRINTSCREEN,
+ KEY_SCROLLLOCK,
+ KEY_PAUSE,
+ KEY_INSERT,
+ KEY_HOME,
+ KEY_PAGEUP,
+ KEY_DELETE,
+ KEY_END,
+ KEY_PAGEDOWN,
+ KEY_RIGHT,
+ KEY_LEFT,
+ KEY_DOWN,
+ KEY_UP,
+
+ KEY_NUMLOCKCLEAR,
+ KEY_KP_DIVIDE,
+ KEY_KP_MULTIPLY,
+ KEY_KP_MINUS,
+ KEY_KP_PLUS,
+ KEY_KP_ENTER,
+ KEY_KP_1,
+ KEY_KP_2,
+ KEY_KP_3,
+ KEY_KP_4,
+ KEY_KP_5,
+ KEY_KP_6,
+ KEY_KP_7,
+ KEY_KP_8,
+ KEY_KP_9,
+ KEY_KP_0,
+ KEY_KP_PERIOD,
+ KEY_KP_COMMA,
+ KEY_KP_EQUALS,
+
+ KEY_APPLICATION,
+ KEY_POWER,
+ KEY_F13,
+ KEY_F14,
+ KEY_F15,
+ KEY_F16,
+ KEY_F17,
+ KEY_F18,
+ KEY_F19,
+ KEY_F20,
+ KEY_F21,
+ KEY_F22,
+ KEY_F23,
+ KEY_F24,
+ KEY_EXECUTE,
+ KEY_HELP,
+ KEY_MENU,
+ KEY_SELECT,
+ KEY_STOP,
+ KEY_AGAIN,
+ KEY_UNDO,
+ KEY_CUT,
+ KEY_COPY,
+ KEY_PASTE,
+ KEY_FIND,
+ KEY_MUTE,
+ KEY_VOLUMEUP,
+ KEY_VOLUMEDOWN,
+
+ KEY_ALTERASE,
+ KEY_SYSREQ,
+ KEY_CANCEL,
+ KEY_CLEAR,
+ KEY_PRIOR,
+ KEY_RETURN2,
+ KEY_SEPARATOR,
+ KEY_OUT,
+ KEY_OPER,
+ KEY_CLEARAGAIN,
+
+ KEY_THOUSANDSSEPARATOR,
+ KEY_DECIMALSEPARATOR,
+ KEY_CURRENCYUNIT,
+ KEY_CURRENCYSUBUNIT,
+
+ KEY_LCTRL,
+ KEY_LSHIFT,
+ KEY_LALT,
+ KEY_LGUI,
+ KEY_RCTRL,
+ KEY_RSHIFT,
+ KEY_RALT,
+ KEY_RGUI,
+
+ KEY_MODE,
+
+ KEY_AUDIONEXT,
+ KEY_AUDIOPREV,
+ KEY_AUDIOSTOP,
+ KEY_AUDIOPLAY,
+ KEY_AUDIOMUTE,
+ KEY_MEDIASELECT,
+ KEY_WWW,
+ KEY_MAIL,
+ KEY_CALCULATOR,
+ KEY_COMPUTER,
+ KEY_APP_SEARCH,
+ KEY_APP_HOME,
+ KEY_APP_BACK,
+ KEY_APP_FORWARD,
+ KEY_APP_STOP,
+ KEY_APP_REFRESH,
+ KEY_APP_BOOKMARKS,
+
+ KEY_BRIGHTNESSDOWN,
+ KEY_BRIGHTNESSUP,
+ KEY_DISPLAYSWITCH,
+ KEY_KBDILLUMTOGGLE,
+ KEY_KBDILLUMDOWN,
+ KEY_KBDILLUMUP,
+ KEY_EJECT,
+ KEY_SLEEP,
+
+ KEY_MAX_ENUM
+};
+
+/**
+* Scancodes represent physical keys independent of the current layout.
+* Their names may not match the names of the keys printed on the keyboard.
+* Some of them are very esoteric...
+**/
+enum Scancode
+{
+ SCANCODE_UNKNOWN,
+
+ SCANCODE_A,
+ SCANCODE_B,
+ SCANCODE_C,
+ SCANCODE_D,
+ SCANCODE_E,
+ SCANCODE_F,
+ SCANCODE_G,
+ SCANCODE_H,
+ SCANCODE_I,
+ SCANCODE_J,
+ SCANCODE_K,
+ SCANCODE_L,
+ SCANCODE_M,
+ SCANCODE_N,
+ SCANCODE_O,
+ SCANCODE_P,
+ SCANCODE_Q,
+ SCANCODE_R,
+ SCANCODE_S,
+ SCANCODE_T,
+ SCANCODE_U,
+ SCANCODE_V,
+ SCANCODE_W,
+ SCANCODE_X,
+ SCANCODE_Y,
+ SCANCODE_Z,
+
+ SCANCODE_1,
+ SCANCODE_2,
+ SCANCODE_3,
+ SCANCODE_4,
+ SCANCODE_5,
+ SCANCODE_6,
+ SCANCODE_7,
+ SCANCODE_8,
+ SCANCODE_9,
+ SCANCODE_0,
+
+ SCANCODE_RETURN,
+ SCANCODE_ESCAPE,
+ SCANCODE_BACKSPACE,
+ SCANCODE_TAB,
+ SCANCODE_SPACE,
+
+ SCANCODE_MINUS,
+ SCANCODE_EQUALS,
+ SCANCODE_LEFTBRACKET,
+ SCANCODE_RIGHTBRACKET,
+ SCANCODE_BACKSLASH,
+ SCANCODE_NONUSHASH,
+ SCANCODE_SEMICOLON,
+ SCANCODE_APOSTROPHE,
+ SCANCODE_GRAVE,
+ SCANCODE_COMMA,
+ SCANCODE_PERIOD,
+ SCANCODE_SLASH,
+
+ SCANCODE_CAPSLOCK,
+
+ SCANCODE_F1,
+ SCANCODE_F2,
+ SCANCODE_F3,
+ SCANCODE_F4,
+ SCANCODE_F5,
+ SCANCODE_F6,
+ SCANCODE_F7,
+ SCANCODE_F8,
+ SCANCODE_F9,
+ SCANCODE_F10,
+ SCANCODE_F11,
+ SCANCODE_F12,
+
+ SCANCODE_PRINTSCREEN,
+ SCANCODE_SCROLLLOCK,
+ SCANCODE_PAUSE,
+ SCANCODE_INSERT,
+ SCANCODE_HOME,
+ SCANCODE_PAGEUP,
+ SCANCODE_DELETE,
+ SCANCODE_END,
+ SCANCODE_PAGEDOWN,
+ SCANCODE_RIGHT,
+ SCANCODE_LEFT,
+ SCANCODE_DOWN,
+ SCANCODE_UP,
+
+ SCANCODE_NUMLOCKCLEAR,
+ SCANCODE_KP_DIVIDE,
+ SCANCODE_KP_MULTIPLY,
+ SCANCODE_KP_MINUS,
+ SCANCODE_KP_PLUS,
+ SCANCODE_KP_ENTER,
+ SCANCODE_KP_1,
+ SCANCODE_KP_2,
+ SCANCODE_KP_3,
+ SCANCODE_KP_4,
+ SCANCODE_KP_5,
+ SCANCODE_KP_6,
+ SCANCODE_KP_7,
+ SCANCODE_KP_8,
+ SCANCODE_KP_9,
+ SCANCODE_KP_0,
+ SCANCODE_KP_PERIOD,
+
+ SCANCODE_NONUSBACKSLASH,
+ SCANCODE_APPLICATION,
+ SCANCODE_POWER,
+ SCANCODE_KP_EQUALS,
+ SCANCODE_F13,
+ SCANCODE_F14,
+ SCANCODE_F15,
+ SCANCODE_F16,
+ SCANCODE_F17,
+ SCANCODE_F18,
+ SCANCODE_F19,
+ SCANCODE_F20,
+ SCANCODE_F21,
+ SCANCODE_F22,
+ SCANCODE_F23,
+ SCANCODE_F24,
+ SCANCODE_EXECUTE,
+ SCANCODE_HELP,
+ SCANCODE_MENU,
+ SCANCODE_SELECT,
+ SCANCODE_STOP,
+ SCANCODE_AGAIN,
+ SCANCODE_UNDO,
+ SCANCODE_CUT,
+ SCANCODE_COPY,
+ SCANCODE_PASTE,
+ SCANCODE_FIND,
+ SCANCODE_MUTE,
+ SCANCODE_VOLUMEUP,
+ SCANCODE_VOLUMEDOWN,
+ SCANCODE_KP_COMMA,
+ SCANCODE_KP_EQUALSAS400,
+
+ SCANCODE_INTERNATIONAL1,
+ SCANCODE_INTERNATIONAL2,
+ SCANCODE_INTERNATIONAL3,
+ SCANCODE_INTERNATIONAL4,
+ SCANCODE_INTERNATIONAL5,
+ SCANCODE_INTERNATIONAL6,
+ SCANCODE_INTERNATIONAL7,
+ SCANCODE_INTERNATIONAL8,
+ SCANCODE_INTERNATIONAL9,
+ SCANCODE_LANG1,
+ SCANCODE_LANG2,
+ SCANCODE_LANG3,
+ SCANCODE_LANG4,
+ SCANCODE_LANG5,
+ SCANCODE_LANG6,
+ SCANCODE_LANG7,
+ SCANCODE_LANG8,
+ SCANCODE_LANG9,
+
+ SCANCODE_ALTERASE,
+ SCANCODE_SYSREQ,
+ SCANCODE_CANCEL,
+ SCANCODE_CLEAR,
+ SCANCODE_PRIOR,
+ SCANCODE_RETURN2,
+ SCANCODE_SEPARATOR,
+ SCANCODE_OUT,
+ SCANCODE_OPER,
+ SCANCODE_CLEARAGAIN,
+ SCANCODE_CRSEL,
+ SCANCODE_EXSEL,
+
+ SCANCODE_KP_00,
+ SCANCODE_KP_000,
+ SCANCODE_THOUSANDSSEPARATOR,
+ SCANCODE_DECIMALSEPARATOR,
+ SCANCODE_CURRENCYUNIT,
+ SCANCODE_CURRENCYSUBUNIT,
+ SCANCODE_KP_LEFTPAREN,
+ SCANCODE_KP_RIGHTPAREN,
+ SCANCODE_KP_LEFTBRACE,
+ SCANCODE_KP_RIGHTBRACE,
+ SCANCODE_KP_TAB,
+ SCANCODE_KP_BACKSPACE,
+ SCANCODE_KP_A,
+ SCANCODE_KP_B,
+ SCANCODE_KP_C,
+ SCANCODE_KP_D,
+ SCANCODE_KP_E,
+ SCANCODE_KP_F,
+ SCANCODE_KP_XOR,
+ SCANCODE_KP_POWER,
+ SCANCODE_KP_PERCENT,
+ SCANCODE_KP_LESS,
+ SCANCODE_KP_GREATER,
+ SCANCODE_KP_AMPERSAND,
+ SCANCODE_KP_DBLAMPERSAND,
+ SCANCODE_KP_VERTICALBAR,
+ SCANCODE_KP_DBLVERTICALBAR,
+ SCANCODE_KP_COLON,
+ SCANCODE_KP_HASH,
+ SCANCODE_KP_SPACE,
+ SCANCODE_KP_AT,
+ SCANCODE_KP_EXCLAM,
+ SCANCODE_KP_MEMSTORE,
+ SCANCODE_KP_MEMRECALL,
+ SCANCODE_KP_MEMCLEAR,
+ SCANCODE_KP_MEMADD,
+ SCANCODE_KP_MEMSUBTRACT,
+ SCANCODE_KP_MEMMULTIPLY,
+ SCANCODE_KP_MEMDIVIDE,
+ SCANCODE_KP_PLUSMINUS,
+ SCANCODE_KP_CLEAR,
+ SCANCODE_KP_CLEARENTRY,
+ SCANCODE_KP_BINARY,
+ SCANCODE_KP_OCTAL,
+ SCANCODE_KP_DECIMAL,
+ SCANCODE_KP_HEXADECIMAL,
+
+ SCANCODE_LCTRL,
+ SCANCODE_LSHIFT,
+ SCANCODE_LALT,
+ SCANCODE_LGUI,
+ SCANCODE_RCTRL,
+ SCANCODE_RSHIFT,
+ SCANCODE_RALT,
+ SCANCODE_RGUI,
+
+ SCANCODE_MODE,
+
+ SCANCODE_AUDIONEXT,
+ SCANCODE_AUDIOPREV,
+ SCANCODE_AUDIOSTOP,
+ SCANCODE_AUDIOPLAY,
+ SCANCODE_AUDIOMUTE,
+ SCANCODE_MEDIASELECT,
+ SCANCODE_WWW,
+ SCANCODE_MAIL,
+ SCANCODE_CALCULATOR,
+ SCANCODE_COMPUTER,
+ SCANCODE_AC_SEARCH,
+ SCANCODE_AC_HOME,
+ SCANCODE_AC_BACK,
+ SCANCODE_AC_FORWARD,
+ SCANCODE_AC_STOP,
+ SCANCODE_AC_REFRESH,
+ SCANCODE_AC_BOOKMARKS,
+
+ SCANCODE_BRIGHTNESSDOWN,
+ SCANCODE_BRIGHTNESSUP,
+ SCANCODE_DISPLAYSWITCH,
+ SCANCODE_KBDILLUMTOGGLE,
+ SCANCODE_KBDILLUMDOWN,
+ SCANCODE_KBDILLUMUP,
+ SCANCODE_EJECT,
+ SCANCODE_SLEEP,
+
+ SCANCODE_APP1,
+ SCANCODE_APP2,
+
+ SCANCODE_MAX_ENUM
+};
diff --git a/Source/Asura.Engine/input/keyboard.h b/Source/Asura.Engine/input/keyboard.h
new file mode 100644
index 0000000..488209b
--- /dev/null
+++ b/Source/Asura.Engine/input/keyboard.h
@@ -0,0 +1,73 @@
+#ifndef __ASURA_INPUT_KEYBOARD_H__
+#define __ASURA_INPUT_KEYBOARD_H__
+
+#include <SDL2/SDL.h>
+
+#include "InputDevice.hpp"
+#include "Scripting/Portable.h"
+
+namespace AsuraEngine
+{
+ namespace Input
+ {
+
+ class Keyboard ASURA_FINAL : public InputDevice<Keyboard>
+ {
+ public:
+
+ // صö
+ #include "Keyboard.defs"
+
+ Keyboard();
+
+ void SetKeyRepeat(bool enable);
+ bool HasKeyRepeat() const;
+ bool IsDown(const std::vector<Key> &keylist) const;
+ bool IsScancodeDown(const std::vector<Scancode> &scancodelist) const;
+
+ Key GetKeyFromScancode(Scancode scancode) const;
+ Scancode GetScancodeFromKey(Key key) const;
+
+ void SetTextInput(bool enable);
+ void SetTextInput(bool enable, double x, double y, double w, double h);
+ bool HasTextInput() const;
+ bool HasScreenKeyboard() const;
+
+ bool GetConstant(Scancode in, SDL_Scancode &out);
+ bool GetConstant(SDL_Scancode in, Scancode &out);
+
+ private:
+
+ ~Keyboard();
+
+ public:
+
+ //----------------------------------------------------------------------------------------------------------
+
+ LUAX_DECL_SINGLETON(Keyboard); // ͨAsuraEngine.KeyboardֱӷʣûNew
+
+ LUAX_DECL_ENUM(Key);
+ LUAX_DECL_ENUM(ScanCode);
+
+ LUAX_DECL_METHOD(SetKeyRepeat);
+ LUAX_DECL_METHOD(HasKeyRepeat);
+ LUAX_DECL_METHOD(IsDown);
+ LUAX_DECL_METHOD(IsScancodeDown);
+
+ LUAX_DECL_METHOD(GetKeyFromScancode);
+ LUAX_DECL_METHOD(GetScancodeFromKey);
+
+ LUAX_DECL_METHOD(SetTextInput);
+ LUAX_DECL_METHOD(HasTextInput);
+ LUAX_DECL_METHOD(HasScreenKeyboard);
+
+ LUAX_DECL_METHOD(GetConstant);
+
+ //----------------------------------------------------------------------------------------------------------
+
+ };
+
+ }
+}
+
+#endif \ No newline at end of file
diff --git a/Source/Asura.Engine/input/mouse.cpp b/Source/Asura.Engine/input/mouse.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/Asura.Engine/input/mouse.cpp
diff --git a/Source/Asura.Engine/input/mouse.h b/Source/Asura.Engine/input/mouse.h
new file mode 100644
index 0000000..0f34fdd
--- /dev/null
+++ b/Source/Asura.Engine/input/mouse.h
@@ -0,0 +1,56 @@
+#ifndef __ASURA_ENGINE_MOUSE_H__
+#define __ASURA_ENGINE_MOUSE_H__
+
+#include "Cursor.h"
+#include "InputDevice.hpp"
+
+namespace AsuraEngine
+{
+ namespace Input
+ {
+
+ class Mouse : public InputDevice<Mouse>
+ {
+ public:
+
+ ///
+ /// ͼƬйָʹϵͳָ
+ ///
+ Cursor *CreateCursor(Graphics::ImageData *data, int hotx, int hoty);
+ Cursor *GetSystemCursor(Cursor::SystemCursor cursortype);
+
+ void SetCursor(Cursor *cursor);
+ void SetCursor() ;
+
+ Cursor* GetCursor() const;
+
+ bool IsCursorSupported() const;
+
+ double GetX() const;
+ double GetY() const;
+ void GetPosition(double &x, double &y) const;
+ void GetX(double x) ;
+ void SetY(double y) ;
+ void SetPosition(double x, double y) ;
+ void SetVisible(bool visible) ;
+ bool IsDown(const std::vector<int> &buttons) const;
+ bool IsVisible() const;
+ void SetGrabbed(bool grab) ;
+ bool IsGrabbed() const;
+ bool SetRelativeMode(bool relative) ;
+ bool GetRelativeMode() const;
+
+ //----------------------------------------------------------------------------------------------------------
+
+ LUAX_DECL_SINGLETON(Mouse);
+
+ //----------------------------------------------------------------------------------------------------------
+
+ private:
+
+ };
+
+ }
+}
+
+#endif \ No newline at end of file