00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KEYBOARDINPUTCOMPONENT_H
00023 #define KEYBOARDINPUTCOMPONENT_H
00024
00025 #include "component.h"
00026
00027 #include "gluonbuttons.h"
00028
00029 namespace GluonInput
00030 {
00031 class Keyboard;
00032 }
00033
00034 namespace GluonEngine
00035 {
00036 class KeyboardInputComponent : public Component
00037 {
00038 Q_OBJECT;
00039 GLUON_OBJECT( GluonEngine::KeyboardInputComponent )
00040 Q_PROPERTY( KeyName keyCode READ keyCode WRITE setKeyCode );
00041 Q_INTERFACES( GluonEngine::Component )
00042 Q_ENUMS( KeyName )
00043
00044 public:
00045 enum KeyName
00046 {
00047 UNKNOWN,
00048 ESC,
00049 ONE,
00050 TWO,
00051 THREE,
00052 FOUR,
00053 FIVE,
00054 SIX,
00055 SEVEN,
00056 EIGHT,
00057 NINE,
00058 ZERO,
00059 MINUS,
00060 EQUAL,
00061 BACKSPACE,
00062 TAB,
00063 Q,
00064 W,
00065 E,
00066 R,
00067 T,
00068 Y,
00069 U,
00070 I,
00071 O,
00072 P,
00073 LEFT_BRACKET,
00074 RIGHT_BRACKET,
00075 ENTER,
00076 LEFT_CONTROL,
00077 A,
00078 S,
00079 D,
00080 F,
00081 G,
00082 H,
00083 J,
00084 K,
00085 L,
00086 SEMICOLON,
00087 APOSTROPHE,
00088 GRAVE,
00089 LEFT_SHIFT,
00090 BACKSLASH,
00091 Z,
00092 X,
00093 C,
00094 V,
00095 B,
00096 N,
00097 M,
00098 COMMA,
00099 PUNCTUATION,
00100 SLASH,
00101 RIGHT_SHIFT,
00102 KEYPAD_ASTERISK,
00103 LEFT_ALT,
00104 SPACE,
00105 CAPSLOCK,
00106 F_ONE,
00107 F_TWO,
00108 F_THREE,
00109 F_FOUR,
00110 F_FIVE,
00111 F_SIX,
00112 F_SEVEN,
00113 F_EIGHT,
00114 F_NINE,
00115 F_TEN,
00116 NUM_LOCK,
00117 SCROLL_LOCK,
00118 KEYPAD_SEVEN,
00119 KEYPAD_EIGHT,
00120 KEYPAD_NINE,
00121 KEYPAD_MINUSE,
00122 KEYPAD_FOUR,
00123 KEYPAD_FIVE,
00124 KEYPAD_SIX,
00125 KEYPAD_PLUS,
00126 KEYPAD_ONE,
00127 KEYPAD_TWO,
00128 KEYPAD_THREE,
00129 KEYPAD_ZERO,
00130 KEYPAD_PUNCTUATION,
00131 KEY_UNUSED_0,
00132 ZENKAKUHANKAKU = 85,
00133 ONEZEROTWOND,
00134 F_ELEVEN,
00135 F_TWELVE,
00136 R_ZERO,
00137 KATAKANA,
00138 HIRAGANA,
00139 HENKAN,
00140 KATAKANAHIRAGANA,
00141 MUHENKAN,
00142 KEYPAD_JPCOMMA,
00143 KEYPAD_ENTER,
00144 RIGHT_CTRL,
00145 KEYPAD_SLASH,
00146 SYSRQ,
00147 RIGHT_ALT,
00148 LINEFEED,
00149 HOME,
00150 UP_ARROW,
00151 PAGEUP,
00152 LEFT_ARROW,
00153 RIGHT_ARROW,
00154 END,
00155 DOWN_ARROW,
00156 PAGEDOWN,
00157 INSERT,
00158 DELETE,
00159 MACRO,
00160 MUTE,
00161 VOLUME_DOWN,
00162 VOLUME_UP,
00163 POWER,
00164 KEYPAD_EQUAL,
00165 KEYPAD_PLUS_AND_MINUS,
00166 PAUSE,
00167 KEY_UNUSED_1,
00168 KEYPAD_COMMA = 121,
00169 HANGUEL,
00170 HANJA,
00171 YEN,
00172 LEFT_META,
00173 RIGHT_META,
00174 COMPOSE,
00175 STOP,
00176 AGAIN,
00177 PROPS,
00178 UNDO,
00179 FRONT,
00180 COPY,
00181 OPEN,
00182 PASTE,
00183 FIND,
00184 CUT,
00185 HELP,
00186 MENU,
00187 CALC,
00188 SETUP,
00189 SLEEP,
00190 WAKEUP,
00191 FILE,
00192 SEND_FILE,
00193 DELETE_FILE,
00194 X_FER,
00195 PROG_ONE,
00196 PROG_TWO,
00197 WWW,
00198 MSDOS,
00199 COFFEE,
00200 DIRECTION,
00201 CYCLE_WINDOWS,
00202 MAIL,
00203 BOOKMARKS,
00204 COMPUTER,
00205 BACK,
00206 FORWARD,
00207 CLOSE_CD,
00208 EJECT_CD,
00209 EJECT_AND_CLOSE_CD,
00210 NEXT_SONG,
00211 PLAY_PAUSE,
00212 PREVIOUS_SONG,
00213 STOP_CD,
00214 RECORD,
00215 REWIND,
00216 PHONE,
00217 ISOKEY,
00218 CONFIG,
00219 HOMEPAGE,
00220 REFRESH,
00221 EXIT,
00222 MOVE,
00223 EDIT,
00224 SCROLLUP,
00225 SCROLLDOWN,
00226 KEYPAD_LEFT_PARENTHESE,
00227 KEYPAD_RIGHT_PARENTHESE,
00228 KEY_UNUSED_2,
00229 KEY_UNUSED_3,
00230 KEY_UNUSED_4,
00231 KEY_UNUSED_5,
00232 F_THIRTEEN = 183,
00233 F_FOURTEEN,
00234 F_FIFTEEN,
00235 F_SIXTEEN,
00236 F_SEVENTEEN,
00237 F_EIGHTTEEN,
00238 F_NINETEEN,
00239 F_TWENTY,
00240 F_TWENTYONE,
00241 F_TWENTYTWO,
00242 F_TWENTYTHREE,
00243 F_TWENTYFOUR,
00244 KEY_UNUSED_6,
00245 KEY_UNUSED_7,
00246 KEY_UNUSED_8,
00247 KEY_UNUSED_9,
00248 PLAY_CD = 200,
00249 PAUSE_CD,
00250 PROG_THREE,
00251 PROG_FOUR,
00252 KEY_UNUSED_10,
00253 SUSPEND = 205,
00254 CLOSE,
00255 PLAY,
00256 FASTFORWARD,
00257 BASS_BOOST,
00258 PRINT,
00259 HP,
00260 CAMERA,
00261 SOUND,
00262 QUESTION,
00263 EMAIL,
00264 CHAT,
00265 SEARCH,
00266 CONNECT,
00267 FINANCE,
00268 SPORT,
00269 SHOP,
00270 ALT_ERASE,
00271 CANCEL,
00272 BRIGHTNESS_DOWN,
00273 BRIGHTNESS_UP,
00274 MEDIA,
00275 SWITCH_VIDEOMODE,
00276 KB_ILLUM_TOGGLE,
00277 KB_ILLUM_DOWN,
00278 KB_ILLUM_UP,
00279 BUTTON_ZERO = 256,
00280 BUTTON_ONE,
00281 BUTTON_TWO,
00282 BUTTON_THREE,
00283 BUTTON_FOUR,
00284 BUTTON_FIVE,
00285 BUTTON_SIX,
00286 BUTTON_SEVEN,
00287 BUTTON_EIGHT,
00288 BUTTON_NINE,
00289 MOUSE_LEFT_BUTTON = 272,
00290 MOUSE_RIGHT_BUTTON,
00291 MOUSE_MIDDLE_BUTTON,
00292 MOUSE_BUTTON_FOUR,
00293 MOUSE_BUTTON_FIVE,
00294 MOUSE_BUTTON_SIX,
00295 MOUSE_BUTTON_SEVEN,
00296 MOUSE_BUTTON_EIGHT,
00297 TRIGGER = 288,
00298 THUMB_BUTTON_ONE,
00299 THUMB_BUTTON_TWO,
00300 TOP_BUTTON_ONE,
00301 TOP_BUTTON_TWO,
00302 PINKIE_BUTTON,
00303 BASE_BUTTON_ONE,
00304 BASE_BUTTON_TWO,
00305 BASE_BUTTON_THREE,
00306 BASE_BUTTON_FOUR,
00307 BASE_BUTTON_FIVE,
00308 BASE_BUTTON_SIX,
00309 BUTTON_DEAD = 303,
00310 BUTTON_A,
00311 BUTTON_B,
00312 BUTTON_C,
00313 BUTTON_X,
00314 BUTTON_Y,
00315 BUTTON_Z,
00316 BUTTON_TL_ONE,
00317 BUTTON_TR_ONE,
00318 BUTTON_TL_TWO,
00319 BUTTON_TR_TWO,
00320 BUTTON_SELECT,
00321 BUTTON_START,
00322 BUTTON_MODE,
00323 BUTTON_THUMB_LEFT,
00324 BUTTON_THUMB_RIGHT,
00325 TOOL_PEN = 320,
00326 TOOL_RUBBER,
00327 TOOL_BRUSH,
00328 TOOL_PENCIL,
00329 TOOL_AIRBRUSH,
00330 TOOL_FINGER,
00331 TOOL_MOUSE,
00332 TOOL_LENS,
00333 TOUCH = 330,
00334 STYLUS,
00335 STYLUS_TWO,
00336 DOUBLETAB,
00337 TRIPLETAB,
00338 GEAR_UP = 336,
00339 GEAR_DOWN,
00340 OK = 352,
00341 SELECT,
00342 GOTO,
00343 CLEAR,
00344 POWER_TWO,
00345 OPTION,
00346 INFO,
00347 TIME,
00348 VENDOR,
00349 ARCHIVE,
00350 PROGRAM,
00351 CHANNEL,
00352 FAVORITES,
00353 EPG,
00354 PVR,
00355 MHP,
00356 LANGUAGE,
00357 TITLE,
00358 SUBTITLE,
00359 ANGLE,
00360 ZOOM,
00361 MODE,
00362 KEYBOARD,
00363 SCREEN,
00364 PC,
00365 TV,
00366 TV_TWO,
00367 VCR,
00368 VCR_TWO,
00369 SAT,
00370 SAT_TWO,
00371 CD,
00372 TAPE,
00373 RADIO,
00374 TUNER,
00375 PLAYER,
00376 TEXT,
00377 DVD,
00378 AUX,
00379 MP_THREE,
00380 AUDIO,
00381 VIDEO,
00382 DIRECTORY,
00383 LIST,
00384 MEMO,
00385 CALENDAR,
00386 RED,
00387 GREEN,
00388 YELLOW,
00389 BLUE,
00390 CHANNEL_UP,
00391 CHANNEL_DOWN,
00392 FIRST,
00393 LAST,
00394 AB,
00395 NEXT,
00396 RESTART,
00397 SLOW,
00398 SHUFFLE,
00399 BREAK,
00400 PREVIOUS,
00401 DIGITS,
00402 TEEN,
00403 TWEN,
00404 DELEOL = 448,
00405 DELEOS,
00406 INSLINE,
00407 DELLINE,
00408 FN = 464,
00409 FN_ESC,
00410 FN_F_ONE,
00411 FN_F_TWO,
00412 FN_F_THREE,
00413 FN_F_FOUR,
00414 FN_F_FIVE,
00415 FN_F_SIX,
00416 FN_F_SEVEN,
00417 FN_F_EIGHT,
00418 FN_F_NINE,
00419 FN_F_TEN,
00420 FN_F_ELEVEN,
00421 FN_F_TWELVE,
00422 FN_ONE,
00423 FN_TWO,
00424 FN_D,
00425 FN_E,
00426 FN_F,
00427 FN_S,
00428 FN_B
00429 };
00430
00431 Q_INVOKABLE KeyboardInputComponent( QObject* parent = 0 );
00432 virtual QString category() const;
00433
00434
00435
00436 Q_INVOKABLE bool isActionHeld();
00437
00438
00439 Q_INVOKABLE bool isActionStarted();
00440
00441
00442 Q_INVOKABLE bool isActionStopped();
00443
00444 virtual void initialize();
00445 virtual void start();
00446 virtual void update( int elapsedMilliseconds );
00447 virtual void stop();
00448
00449 KeyName keyCode() const;
00450 void setKeyCode( KeyName newKeyCode );
00451
00452 private:
00453 bool m_actionHeld;
00454 bool m_actionStarted;
00455 bool m_actionStopped;
00456
00457 KeyName m_keyCode;
00458
00459 GluonInput::Keyboard* m_keyboard;
00460 };
00461 }
00462
00463 Q_DECLARE_METATYPE( GluonEngine::KeyboardInputComponent )
00464 Q_DECLARE_METATYPE( GluonEngine::KeyboardInputComponent* )
00465
00466 #endif // KEYBOARDINPUTCOMPONENT_H