00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "mmsinput/mmsinputdfbhandler.h"
00034 #include "mmsinput/mmskeymap.h"
00035 #include <typeinfo>
00036 #ifdef __HAVE_DIRECTFB__
00037 #include <directfb_keynames.h>
00038
00039 MMSKeySymbol getKeyFromDFB(DFBInputDeviceKeySymbol sym) {
00040 switch(sym) {
00041 case DIKS_BACKSPACE: return MMSKEY_BACKSPACE;
00042 case DIKS_TAB: return MMSKEY_TAB;
00043 case DIKS_RETURN: return MMSKEY_RETURN;
00044 case DIKS_CANCEL: return MMSKEY_CANCEL;
00045 case DIKS_ESCAPE: return MMSKEY_ESCAPE;
00046 case DIKS_SPACE: return MMSKEY_SPACE;
00047 case DIKS_EXCLAMATION_MARK: return MMSKEY_EXCLAMATION_MARK;
00048 case DIKS_QUOTATION: return MMSKEY_QUOTATION;
00049 case DIKS_NUMBER_SIGN: return MMSKEY_NUMBER_SIGN;
00050 case DIKS_DOLLAR_SIGN: return MMSKEY_DOLLAR_SIGN;
00051 case DIKS_PERCENT_SIGN: return MMSKEY_PERCENT_SIGN;
00052 case DIKS_AMPERSAND: return MMSKEY_AMPERSAND;
00053 case DIKS_APOSTROPHE: return MMSKEY_APOSTROPHE;
00054 case DIKS_PARENTHESIS_LEFT: return MMSKEY_PARENTHESIS_LEFT;
00055 case DIKS_PARENTHESIS_RIGHT: return MMSKEY_PARENTHESIS_RIGHT;
00056 case DIKS_ASTERISK: return MMSKEY_ASTERISK;
00057 case DIKS_PLUS_SIGN: return MMSKEY_PLUS_SIGN;
00058 case DIKS_COMMA: return MMSKEY_COMMA;
00059 case DIKS_MINUS_SIGN: return MMSKEY_MINUS_SIGN;
00060 case DIKS_PERIOD: return MMSKEY_PERIOD;
00061 case DIKS_SLASH: return MMSKEY_SLASH;
00062 case DIKS_0: return MMSKEY_0;
00063 case DIKS_1: return MMSKEY_1;
00064 case DIKS_2: return MMSKEY_2;
00065 case DIKS_3: return MMSKEY_3;
00066 case DIKS_4: return MMSKEY_4;
00067 case DIKS_5: return MMSKEY_5;
00068 case DIKS_6: return MMSKEY_6;
00069 case DIKS_7: return MMSKEY_7;
00070 case DIKS_8: return MMSKEY_8;
00071 case DIKS_9: return MMSKEY_9;
00072 case DIKS_COLON: return MMSKEY_COLON;
00073 case DIKS_SEMICOLON: return MMSKEY_SEMICOLON;
00074 case DIKS_LESS_THAN_SIGN: return MMSKEY_LESS_THAN_SIGN;
00075 case DIKS_EQUALS_SIGN: return MMSKEY_EQUALS_SIGN;
00076 case DIKS_GREATER_THAN_SIGN: return MMSKEY_GREATER_THAN_SIGN;
00077 case DIKS_QUESTION_MARK: return MMSKEY_QUESTION_MARK;
00078 case DIKS_AT: return MMSKEY_AT;
00079 case DIKS_CAPITAL_A: return MMSKEY_CAPITAL_A;
00080 case DIKS_CAPITAL_B: return MMSKEY_CAPITAL_B;
00081 case DIKS_CAPITAL_C: return MMSKEY_CAPITAL_C;
00082 case DIKS_CAPITAL_D: return MMSKEY_CAPITAL_D;
00083 case DIKS_CAPITAL_E: return MMSKEY_CAPITAL_E;
00084 case DIKS_CAPITAL_F: return MMSKEY_CAPITAL_F;
00085 case DIKS_CAPITAL_G: return MMSKEY_CAPITAL_G;
00086 case DIKS_CAPITAL_H: return MMSKEY_CAPITAL_H;
00087 case DIKS_CAPITAL_I: return MMSKEY_CAPITAL_I;
00088 case DIKS_CAPITAL_J: return MMSKEY_CAPITAL_J;
00089 case DIKS_CAPITAL_K: return MMSKEY_CAPITAL_K;
00090 case DIKS_CAPITAL_L: return MMSKEY_CAPITAL_L;
00091 case DIKS_CAPITAL_M: return MMSKEY_CAPITAL_M;
00092 case DIKS_CAPITAL_N: return MMSKEY_CAPITAL_N;
00093 case DIKS_CAPITAL_O: return MMSKEY_CAPITAL_O;
00094 case DIKS_CAPITAL_P: return MMSKEY_CAPITAL_P;
00095 case DIKS_CAPITAL_Q: return MMSKEY_CAPITAL_Q;
00096 case DIKS_CAPITAL_R: return MMSKEY_CAPITAL_R;
00097 case DIKS_CAPITAL_S: return MMSKEY_CAPITAL_S;
00098 case DIKS_CAPITAL_T: return MMSKEY_CAPITAL_T;
00099 case DIKS_CAPITAL_U: return MMSKEY_CAPITAL_U;
00100 case DIKS_CAPITAL_V: return MMSKEY_CAPITAL_V;
00101 case DIKS_CAPITAL_W: return MMSKEY_CAPITAL_W;
00102 case DIKS_CAPITAL_X: return MMSKEY_CAPITAL_X;
00103 case DIKS_CAPITAL_Y: return MMSKEY_CAPITAL_Y;
00104 case DIKS_CAPITAL_Z: return MMSKEY_CAPITAL_Z;
00105 case DIKS_SQUARE_BRACKET_LEFT: return MMSKEY_SQUARE_BRACKET_LEFT;
00106 case DIKS_BACKSLASH: return MMSKEY_BACKSLASH;
00107 case DIKS_SQUARE_BRACKET_RIGHT: return MMSKEY_SQUARE_BRACKET_RIGHT;
00108 case DIKS_CIRCUMFLEX_ACCENT: return MMSKEY_CIRCUMFLEX_ACCENT;
00109 case DIKS_UNDERSCORE: return MMSKEY_UNDERSCORE;
00110 case DIKS_GRAVE_ACCENT: return MMSKEY_GRAVE_ACCENT;
00111 case DIKS_SMALL_A: return MMSKEY_SMALL_A;
00112 case DIKS_SMALL_B: return MMSKEY_SMALL_B;
00113 case DIKS_SMALL_C: return MMSKEY_SMALL_C;
00114 case DIKS_SMALL_D: return MMSKEY_SMALL_D;
00115 case DIKS_SMALL_E: return MMSKEY_SMALL_E;
00116 case DIKS_SMALL_F: return MMSKEY_SMALL_F;
00117 case DIKS_SMALL_G: return MMSKEY_SMALL_G;
00118 case DIKS_SMALL_H: return MMSKEY_SMALL_H;
00119 case DIKS_SMALL_I: return MMSKEY_SMALL_I;
00120 case DIKS_SMALL_J: return MMSKEY_SMALL_J;
00121 case DIKS_SMALL_K: return MMSKEY_SMALL_K;
00122 case DIKS_SMALL_L: return MMSKEY_SMALL_L;
00123 case DIKS_SMALL_M: return MMSKEY_SMALL_M;
00124 case DIKS_SMALL_N: return MMSKEY_SMALL_N;
00125 case DIKS_SMALL_O: return MMSKEY_SMALL_O;
00126 case DIKS_SMALL_P: return MMSKEY_SMALL_P;
00127 case DIKS_SMALL_Q: return MMSKEY_SMALL_Q;
00128 case DIKS_SMALL_R: return MMSKEY_SMALL_R;
00129 case DIKS_SMALL_S: return MMSKEY_SMALL_S;
00130 case DIKS_SMALL_T: return MMSKEY_SMALL_T;
00131 case DIKS_SMALL_U: return MMSKEY_SMALL_U;
00132 case DIKS_SMALL_V: return MMSKEY_SMALL_V;
00133 case DIKS_SMALL_W: return MMSKEY_SMALL_W;
00134 case DIKS_SMALL_X: return MMSKEY_SMALL_X;
00135 case DIKS_SMALL_Y: return MMSKEY_SMALL_Y;
00136 case DIKS_SMALL_Z: return MMSKEY_SMALL_Z;
00137 case DIKS_CURLY_BRACKET_LEFT: return MMSKEY_CURLY_BRACKET_LEFT;
00138 case DIKS_VERTICAL_BAR: return MMSKEY_VERTICAL_BAR;
00139 case DIKS_CURLY_BRACKET_RIGHT: return MMSKEY_CURLY_BRACKET_RIGHT;
00140 case DIKS_TILDE: return MMSKEY_TILDE;
00141 case DIKS_DELETE: return MMSKEY_DELETE;
00142 case DIKS_CURSOR_LEFT: return MMSKEY_CURSOR_LEFT;
00143 case DIKS_CURSOR_RIGHT: return MMSKEY_CURSOR_RIGHT;
00144 case DIKS_CURSOR_UP: return MMSKEY_CURSOR_UP;
00145 case DIKS_CURSOR_DOWN: return MMSKEY_CURSOR_DOWN;
00146 case DIKS_INSERT: return MMSKEY_INSERT;
00147 case DIKS_HOME: return MMSKEY_HOME;
00148 case DIKS_END: return MMSKEY_END;
00149 case DIKS_PAGE_UP: return MMSKEY_PAGE_UP;
00150 case DIKS_PAGE_DOWN: return MMSKEY_PAGE_DOWN;
00151 case DIKS_PRINT: return MMSKEY_PRINT;
00152 case DIKS_PAUSE: return MMSKEY_PAUSE;
00153 case DIKS_OK: return MMSKEY_OK;
00154 case DIKS_SELECT: return MMSKEY_SELECT;
00155 case DIKS_GOTO: return MMSKEY_GOTO;
00156 case DIKS_CLEAR: return MMSKEY_CLEAR;
00157 case DIKS_POWER: return MMSKEY_POWER;
00158 case DIKS_POWER2: return MMSKEY_POWER2;
00159 case DIKS_OPTION: return MMSKEY_OPTION;
00160 case DIKS_MENU: return MMSKEY_MENU;
00161 case DIKS_HELP: return MMSKEY_HELP;
00162 case DIKS_INFO: return MMSKEY_INFO;
00163 case DIKS_TIME: return MMSKEY_TIME;
00164 case DIKS_VENDOR: return MMSKEY_VENDOR;
00165 case DIKS_ARCHIVE: return MMSKEY_ARCHIVE;
00166 case DIKS_PROGRAM: return MMSKEY_PROGRAM;
00167 case DIKS_CHANNEL: return MMSKEY_CHANNEL;
00168 case DIKS_FAVORITES: return MMSKEY_FAVORITES;
00169 case DIKS_EPG: return MMSKEY_EPG;
00170 case DIKS_PVR: return MMSKEY_PVR;
00171 case DIKS_MHP: return MMSKEY_MHP;
00172 case DIKS_LANGUAGE: return MMSKEY_LANGUAGE;
00173 case DIKS_TITLE: return MMSKEY_TITLE;
00174 case DIKS_SUBTITLE: return MMSKEY_SUBTITLE;
00175 case DIKS_ANGLE: return MMSKEY_ANGLE;
00176 case DIKS_ZOOM: return MMSKEY_ZOOM;
00177 case DIKS_MODE: return MMSKEY_MODE;
00178 case DIKS_KEYBOARD: return MMSKEY_KEYBOARD;
00179 case DIKS_PC: return MMSKEY_PC;
00180 case DIKS_SCREEN: return MMSKEY_SCREEN;
00181 case DIKS_TV: return MMSKEY_TV;
00182 case DIKS_TV2: return MMSKEY_TV2;
00183 case DIKS_VCR: return MMSKEY_VCR;
00184 case DIKS_VCR2: return MMSKEY_VCR2;
00185 case DIKS_SAT: return MMSKEY_SAT;
00186 case DIKS_SAT2: return MMSKEY_SAT2;
00187 case DIKS_CD: return MMSKEY_CD;
00188 case DIKS_TAPE: return MMSKEY_TAPE;
00189 case DIKS_RADIO: return MMSKEY_RADIO;
00190 case DIKS_TUNER: return MMSKEY_TUNER;
00191 case DIKS_PLAYER: return MMSKEY_PLAYER;
00192 case DIKS_TEXT: return MMSKEY_TEXT;
00193 case DIKS_DVD: return MMSKEY_DVD;
00194 case DIKS_AUX: return MMSKEY_AUX;
00195 case DIKS_MP3: return MMSKEY_MP3;
00196 case DIKS_PHONE: return MMSKEY_PHONE;
00197 case DIKS_AUDIO: return MMSKEY_AUDIO;
00198 case DIKS_VIDEO: return MMSKEY_VIDEO;
00199 case DIKS_INTERNET: return MMSKEY_INTERNET;
00200 case DIKS_MAIL: return MMSKEY_MAIL;
00201 case DIKS_NEWS: return MMSKEY_NEWS;
00202 case DIKS_DIRECTORY: return MMSKEY_DIRECTORY;
00203 case DIKS_LIST: return MMSKEY_LIST;
00204 case DIKS_CALCULATOR: return MMSKEY_CALCULATOR;
00205 case DIKS_MEMO: return MMSKEY_MEMO;
00206 case DIKS_CALENDAR: return MMSKEY_CALENDAR;
00207 case DIKS_EDITOR: return MMSKEY_EDITOR;
00208 case DIKS_RED: return MMSKEY_RED;
00209 case DIKS_GREEN: return MMSKEY_GREEN;
00210 case DIKS_YELLOW: return MMSKEY_YELLOW;
00211 case DIKS_BLUE: return MMSKEY_BLUE;
00212 case DIKS_CHANNEL_UP: return MMSKEY_CHANNEL_UP;
00213 case DIKS_CHANNEL_DOWN: return MMSKEY_CHANNEL_DOWN;
00214 case DIKS_BACK: return MMSKEY_BACK;
00215 case DIKS_FORWARD: return MMSKEY_FORWARD;
00216 case DIKS_FIRST: return MMSKEY_FIRST;
00217 case DIKS_LAST: return MMSKEY_LAST;
00218 case DIKS_VOLUME_UP: return MMSKEY_VOLUME_UP;
00219 case DIKS_VOLUME_DOWN: return MMSKEY_VOLUME_DOWN;
00220 case DIKS_MUTE: return MMSKEY_MUTE;
00221 case DIKS_AB: return MMSKEY_AB;
00222 case DIKS_PLAYPAUSE: return MMSKEY_PLAYPAUSE;
00223 case DIKS_PLAY: return MMSKEY_PLAY;
00224 case DIKS_STOP: return MMSKEY_STOP;
00225 case DIKS_RESTART: return MMSKEY_RESTART;
00226 case DIKS_SLOW: return MMSKEY_SLOW;
00227 case DIKS_FAST: return MMSKEY_FAST;
00228 case DIKS_RECORD: return MMSKEY_RECORD;
00229 case DIKS_EJECT: return MMSKEY_EJECT;
00230 case DIKS_SHUFFLE: return MMSKEY_SHUFFLE;
00231 case DIKS_REWIND: return MMSKEY_REWIND;
00232 case DIKS_FASTFORWARD: return MMSKEY_FASTFORWARD;
00233 case DIKS_PREVIOUS: return MMSKEY_PREVIOUS;
00234 case DIKS_NEXT: return MMSKEY_NEXT;
00235 case DIKS_BEGIN: return MMSKEY_BEGIN;
00236 case DIKS_DIGITS: return MMSKEY_DIGITS;
00237 case DIKS_TEEN: return MMSKEY_TEEN;
00238 case DIKS_TWEN: return MMSKEY_TWEN;
00239 case DIKS_BREAK: return MMSKEY_BREAK;
00240 case DIKS_EXIT: return MMSKEY_EXIT;
00241 case DIKS_SETUP: return MMSKEY_SETUP;
00242 case DIKS_CURSOR_LEFT_UP: return MMSKEY_CURSOR_LEFT_UP;
00243 case DIKS_CURSOR_LEFT_DOWN: return MMSKEY_CURSOR_LEFT_DOWN;
00244 case DIKS_CURSOR_UP_RIGHT: return MMSKEY_CURSOR_UP_RIGHT;
00245 case DIKS_CURSOR_DOWN_RIGHT: return MMSKEY_CURSOR_DOWN_RIGHT;
00246 case DIKS_F1: return MMSKEY_F1;
00247 case DIKS_F2: return MMSKEY_F2;
00248 case DIKS_F3: return MMSKEY_F3;
00249 case DIKS_F4: return MMSKEY_F4;
00250 case DIKS_F5: return MMSKEY_F5;
00251 case DIKS_F6: return MMSKEY_F6;
00252 case DIKS_F7: return MMSKEY_F7;
00253 case DIKS_F8: return MMSKEY_F8;
00254 case DIKS_F9: return MMSKEY_F9;
00255 case DIKS_F10: return MMSKEY_F10;
00256 case DIKS_F11: return MMSKEY_F11;
00257 case DIKS_F12: return MMSKEY_F12;
00258 case DIKS_SHIFT: return MMSKEY_SHIFT;
00259 case DIKS_CONTROL: return MMSKEY_CONTROL;
00260 case DIKS_ALT: return MMSKEY_ALT;
00261 case DIKS_ALTGR: return MMSKEY_ALTGR;
00262 case DIKS_META: return MMSKEY_META;
00263 case DIKS_SUPER: return MMSKEY_SUPER;
00264 case DIKS_HYPER: return MMSKEY_HYPER;
00265 case DIKS_CAPS_LOCK: return MMSKEY_CAPS_LOCK;
00266 case DIKS_NUM_LOCK: return MMSKEY_NUM_LOCK;
00267 case DIKS_SCROLL_LOCK: return MMSKEY_SCROLL_LOCK;
00268 case DIKS_DEAD_ABOVEDOT: return MMSKEY_DEAD_ABOVEDOT;
00269 case DIKS_DEAD_ABOVERING: return MMSKEY_DEAD_ABOVERING;
00270 case DIKS_DEAD_ACUTE: return MMSKEY_DEAD_ACUTE;
00271 case DIKS_DEAD_BREVE: return MMSKEY_DEAD_BREVE;
00272 case DIKS_DEAD_CARON: return MMSKEY_DEAD_CARON;
00273 case DIKS_DEAD_CEDILLA: return MMSKEY_DEAD_CEDILLA;
00274 case DIKS_DEAD_CIRCUMFLEX: return MMSKEY_DEAD_CIRCUMFLEX;
00275 case DIKS_DEAD_DIAERESIS: return MMSKEY_DEAD_DIAERESIS;
00276 case DIKS_DEAD_DOUBLEACUTE: return MMSKEY_DEAD_DOUBLEACUTE;
00277 case DIKS_DEAD_GRAVE: return MMSKEY_DEAD_GRAVE;
00278 case DIKS_DEAD_IOTA: return MMSKEY_DEAD_IOTA;
00279 case DIKS_DEAD_MACRON: return MMSKEY_DEAD_MACRON;
00280 case DIKS_DEAD_OGONEK: return MMSKEY_DEAD_OGONEK;
00281 case DIKS_DEAD_SEMIVOICED_SOUND: return MMSKEY_DEAD_SEMIVOICED_SOUND;
00282 case DIKS_DEAD_TILDE: return MMSKEY_DEAD_TILDE;
00283 case DIKS_DEAD_VOICED_SOUND: return MMSKEY_DEAD_VOICED_SOUND;
00284 case DIKS_CUSTOM0: return MMSKEY_CUSTOM0;
00285 case DIKS_CUSTOM1: return MMSKEY_CUSTOM1;
00286 case DIKS_CUSTOM2: return MMSKEY_CUSTOM2;
00287 case DIKS_CUSTOM3: return MMSKEY_CUSTOM3;
00288 case DIKS_CUSTOM4: return MMSKEY_CUSTOM4;
00289 case DIKS_CUSTOM5: return MMSKEY_CUSTOM5;
00290 case DIKS_CUSTOM6: return MMSKEY_CUSTOM6;
00291 case DIKS_CUSTOM7: return MMSKEY_CUSTOM7;
00292 case DIKS_CUSTOM8: return MMSKEY_CUSTOM8;
00293 case DIKS_CUSTOM9: return MMSKEY_CUSTOM9;
00294 case DIKS_CUSTOM10: return MMSKEY_CUSTOM10;
00295 case DIKS_CUSTOM11: return MMSKEY_CUSTOM11;
00296 case DIKS_CUSTOM12: return MMSKEY_CUSTOM12;
00297 case DIKS_CUSTOM13: return MMSKEY_CUSTOM13;
00298 case DIKS_CUSTOM14: return MMSKEY_CUSTOM14;
00299 case DIKS_CUSTOM15: return MMSKEY_CUSTOM15;
00300 case DIKS_CUSTOM16: return MMSKEY_CUSTOM16;
00301 case DIKS_CUSTOM17: return MMSKEY_CUSTOM17;
00302 case DIKS_CUSTOM18: return MMSKEY_CUSTOM18;
00303 case DIKS_CUSTOM19: return MMSKEY_CUSTOM19;
00304 case DIKS_CUSTOM20: return MMSKEY_CUSTOM20;
00305 case DIKS_CUSTOM21: return MMSKEY_CUSTOM21;
00306 case DIKS_CUSTOM22: return MMSKEY_CUSTOM22;
00307 case DIKS_CUSTOM23: return MMSKEY_CUSTOM23;
00308 case DIKS_CUSTOM24: return MMSKEY_CUSTOM24;
00309 case DIKS_CUSTOM25: return MMSKEY_CUSTOM25;
00310 case DIKS_CUSTOM26: return MMSKEY_CUSTOM26;
00311 case DIKS_CUSTOM27: return MMSKEY_CUSTOM27;
00312 case DIKS_CUSTOM28: return MMSKEY_CUSTOM28;
00313 case DIKS_CUSTOM29: return MMSKEY_CUSTOM29;
00314 case DIKS_CUSTOM30: return MMSKEY_CUSTOM30;
00315 case DIKS_CUSTOM31: return MMSKEY_CUSTOM31;
00316 case DIKS_CUSTOM32: return MMSKEY_CUSTOM32;
00317 case DIKS_CUSTOM33: return MMSKEY_CUSTOM33;
00318 case DIKS_CUSTOM34: return MMSKEY_CUSTOM34;
00319 case DIKS_CUSTOM35: return MMSKEY_CUSTOM35;
00320 case DIKS_CUSTOM36: return MMSKEY_CUSTOM36;
00321 case DIKS_CUSTOM37: return MMSKEY_CUSTOM37;
00322 case DIKS_CUSTOM38: return MMSKEY_CUSTOM38;
00323 case DIKS_CUSTOM39: return MMSKEY_CUSTOM39;
00324 case DIKS_CUSTOM40: return MMSKEY_CUSTOM40;
00325 case DIKS_CUSTOM41: return MMSKEY_CUSTOM41;
00326 case DIKS_CUSTOM42: return MMSKEY_CUSTOM42;
00327 case DIKS_CUSTOM43: return MMSKEY_CUSTOM43;
00328 case DIKS_CUSTOM44: return MMSKEY_CUSTOM44;
00329 case DIKS_CUSTOM45: return MMSKEY_CUSTOM45;
00330 case DIKS_CUSTOM46: return MMSKEY_CUSTOM46;
00331 case DIKS_CUSTOM47: return MMSKEY_CUSTOM47;
00332 case DIKS_CUSTOM48: return MMSKEY_CUSTOM48;
00333 case DIKS_CUSTOM49: return MMSKEY_CUSTOM49;
00334 case DIKS_CUSTOM50: return MMSKEY_CUSTOM50;
00335 case DIKS_CUSTOM51: return MMSKEY_CUSTOM51;
00336 case DIKS_CUSTOM52: return MMSKEY_CUSTOM52;
00337 case DIKS_CUSTOM53: return MMSKEY_CUSTOM53;
00338 case DIKS_CUSTOM54: return MMSKEY_CUSTOM54;
00339 case DIKS_CUSTOM55: return MMSKEY_CUSTOM55;
00340 case DIKS_CUSTOM56: return MMSKEY_CUSTOM56;
00341 case DIKS_CUSTOM57: return MMSKEY_CUSTOM57;
00342 case DIKS_CUSTOM58: return MMSKEY_CUSTOM58;
00343 case DIKS_CUSTOM59: return MMSKEY_CUSTOM59;
00344 case DIKS_CUSTOM60: return MMSKEY_CUSTOM60;
00345 case DIKS_CUSTOM61: return MMSKEY_CUSTOM61;
00346 case DIKS_CUSTOM62: return MMSKEY_CUSTOM62;
00347 case DIKS_CUSTOM63: return MMSKEY_CUSTOM63;
00348 case DIKS_CUSTOM64: return MMSKEY_CUSTOM64;
00349 case DIKS_CUSTOM65: return MMSKEY_CUSTOM65;
00350 case DIKS_CUSTOM66: return MMSKEY_CUSTOM66;
00351 case DIKS_CUSTOM67: return MMSKEY_CUSTOM67;
00352 case DIKS_CUSTOM68: return MMSKEY_CUSTOM68;
00353 case DIKS_CUSTOM69: return MMSKEY_CUSTOM69;
00354 case DIKS_CUSTOM70: return MMSKEY_CUSTOM70;
00355 case DIKS_CUSTOM71: return MMSKEY_CUSTOM71;
00356 case DIKS_CUSTOM72: return MMSKEY_CUSTOM72;
00357 case DIKS_CUSTOM73: return MMSKEY_CUSTOM73;
00358 case DIKS_CUSTOM74: return MMSKEY_CUSTOM74;
00359 case DIKS_CUSTOM75: return MMSKEY_CUSTOM75;
00360 case DIKS_CUSTOM76: return MMSKEY_CUSTOM76;
00361 case DIKS_CUSTOM77: return MMSKEY_CUSTOM77;
00362 case DIKS_CUSTOM78: return MMSKEY_CUSTOM78;
00363 case DIKS_CUSTOM79: return MMSKEY_CUSTOM79;
00364 case DIKS_CUSTOM80: return MMSKEY_CUSTOM80;
00365 case DIKS_CUSTOM81: return MMSKEY_CUSTOM81;
00366 case DIKS_CUSTOM82: return MMSKEY_CUSTOM82;
00367 case DIKS_CUSTOM83: return MMSKEY_CUSTOM83;
00368 case DIKS_CUSTOM84: return MMSKEY_CUSTOM84;
00369 case DIKS_CUSTOM85: return MMSKEY_CUSTOM85;
00370 case DIKS_CUSTOM86: return MMSKEY_CUSTOM86;
00371 case DIKS_CUSTOM87: return MMSKEY_CUSTOM87;
00372 case DIKS_CUSTOM88: return MMSKEY_CUSTOM88;
00373 case DIKS_CUSTOM89: return MMSKEY_CUSTOM89;
00374 case DIKS_CUSTOM90: return MMSKEY_CUSTOM90;
00375 case DIKS_CUSTOM91: return MMSKEY_CUSTOM91;
00376 case DIKS_CUSTOM92: return MMSKEY_CUSTOM92;
00377 case DIKS_CUSTOM93: return MMSKEY_CUSTOM93;
00378 case DIKS_CUSTOM94: return MMSKEY_CUSTOM94;
00379 case DIKS_CUSTOM95: return MMSKEY_CUSTOM95;
00380 case DIKS_CUSTOM96: return MMSKEY_CUSTOM96;
00381 case DIKS_CUSTOM97: return MMSKEY_CUSTOM97;
00382 case DIKS_CUSTOM98: return MMSKEY_CUSTOM98;
00383 case DIKS_CUSTOM99: return MMSKEY_CUSTOM99;
00384 case DIKS_NULL: return MMSKEY_NULL;
00385 default: return MMSKEY_UNKNOWN;
00386 }
00387
00388 }
00389 #endif
00390
00391 MMSInputDFBHandler::MMSInputDFBHandler(MMS_INPUT_DEVICE device) {
00392 #ifdef __HAVE_DIRECTFB__
00393 if(DirectFBCreate(&(this->dfb))!= DFB_OK)
00394 return;
00395
00396 DFBInputDeviceID dev;
00397 switch(device) {
00398 case MMS_INPUT_KEYBOARD:
00399 dev=DIDID_KEYBOARD;
00400 break;
00401 case MMS_INPUT_MOUSE:
00402 dev=DIDID_MOUSE;
00403 break;
00404 case MMS_INPUT_REMOTE:
00405 dev=DIDID_REMOTE;
00406 break;
00407 default:
00408 dev=DIDID_ANY;
00409 }
00410
00411 this->config = new MMSConfigData();
00412
00413
00414
00415
00416
00417
00418
00419
00420 DFBCHECK(dfb->CreateInputEventBuffer(dfb,DICAPS_ALL, (DFBBoolean)1, &keybuffer));
00421
00422
00423 this->screen_rect.x = config->getVRect().x;
00424 this->screen_rect.y = config->getVRect().y;
00425 this->screen_rect.w = config->getVRect().w;
00426 this->screen_rect.h = config->getVRect().h;
00427
00428
00429 this->pointer_rect.x = config->getTouchRect().x;
00430 this->pointer_rect.y = config->getTouchRect().y;
00431 this->pointer_rect.w = config->getTouchRect().w;
00432 this->pointer_rect.h = config->getTouchRect().h;
00433 if ((this->pointer_rect.w<=0)||(this->pointer_rect.h<=0))
00434 if (config->getPointer()!=MMSFB_PM_FALSE) {
00435
00436 this->pointer_rect.x = this->screen_rect.x;
00437 this->pointer_rect.y = this->screen_rect.y;
00438 this->pointer_rect.w = this->screen_rect.w;
00439 this->pointer_rect.h = this->screen_rect.h;
00440 }
00441
00442
00443 if ((this->pointer_rect.w > 0)&&(this->pointer_rect.h > 0)) {
00444 this->xfac = (100 * this->screen_rect.w) / this->pointer_rect.w;
00445 this->yfac = (100 * this->screen_rect.h) / this->pointer_rect.h;
00446 this->pointer_xpos = this->pointer_old_xpos = this->screen_rect.x + this->screen_rect.w / 2;
00447 this->pointer_ypos = this->pointer_old_ypos = this->screen_rect.y + this->screen_rect.h / 2;
00448 }
00449 else {
00450
00451 this->pointer_rect.w = 0;
00452 this->pointer_rect.h = 0;
00453 }
00454
00455 this->button_pressed = 0;
00456
00457 this->quit=false;
00458 #else
00459 throw MMSError(0,(string)typeid(this).name() + " is empty. compile DirectFB support!");
00460 #endif
00461 }
00462
00463 MMSInputDFBHandler::~MMSInputDFBHandler() {
00464 #ifdef __HAVE_DIRECTFB__
00465 if(this->config) delete this->config;
00466 #else
00467 throw MMSError(0,(string)typeid(this).name() + " is empty. compile DirectFB support!");
00468 #endif
00469 }
00470
00471 void MMSInputDFBHandler::grabEvents(MMSInputEvent *inputevent) {
00472 #ifdef __HAVE_DIRECTFB__
00473 DFBInputEvent evt;
00474
00475 bool event_buffered = false;
00476 inputevent->type = MMSINPUTEVENTTYPE_NONE;
00477
00478 while(1) {
00479
00480 if (keybuffer->WaitForEventWithTimeout(keybuffer, 0, 100) != DFB_OK) {
00481 if (event_buffered)
00482 return;
00483 continue;
00484 }
00485
00486
00487 if (keybuffer->PeekEvent( keybuffer, DFB_EVENT(&evt)) == DFB_OK) {
00488
00489 if (event_buffered)
00490 if ((evt.type == DIET_BUTTONRELEASE) && (inputevent->type == MMSINPUTEVENTTYPE_BUTTONPRESS))
00491
00492
00493 return;
00494
00495
00496 if (keybuffer->GetEvent( keybuffer, DFB_EVENT(&evt)) == DFB_OK) {
00497 switch (evt.type) {
00498 case DIET_KEYPRESS:
00499 if (!this->button_pressed) {
00500
00501
00502
00503
00504
00505
00506 inputevent->type = MMSINPUTEVENTTYPE_KEYPRESS;
00507 inputevent->key = getKeyFromDFB(evt.key_symbol);
00508 return;
00509 }
00510 break;
00511 case DIET_KEYRELEASE:
00512 if (!this->button_pressed) {
00513
00514
00515 inputevent->type = MMSINPUTEVENTTYPE_KEYRELEASE;
00516 inputevent->key = getKeyFromDFB(evt.key_symbol);
00517 return;
00518 }
00519 break;
00520 case DIET_BUTTONPRESS:
00521
00522 if (this->pointer_rect.w) {
00523 if (evt.button == DIBI_LEFT) {
00524
00525
00526 inputevent->type = MMSINPUTEVENTTYPE_BUTTONPRESS;
00527 inputevent->posx = this->pointer_xpos;
00528 inputevent->posy = this->pointer_ypos;
00529
00530
00531 this->button_pressed++;
00532
00533 if (this->button_pressed > 1)
00534
00535 return;
00536
00537
00538 event_buffered = true;
00539 }
00540 }
00541 break;
00542 case DIET_BUTTONRELEASE:
00543
00544 if (this->pointer_rect.w) {
00545 if (evt.button == DIBI_LEFT) {
00546
00547 inputevent->type = MMSINPUTEVENTTYPE_BUTTONRELEASE;
00548 inputevent->posx = this->pointer_xpos;
00549 inputevent->posy = this->pointer_ypos;
00550
00551
00552 this->button_pressed--;
00553
00554 if (!this->button_pressed)
00555
00556 return;
00557
00558
00559 event_buffered = true;
00560 }
00561 }
00562 break;
00563 case DIET_AXISMOTION:
00564 if (this->pointer_rect.w) {
00565 if (evt.axis == DIAI_X) {
00566
00567 if (evt.flags & DIEF_AXISREL) {
00568
00569 if ((evt.axisrel>1)||(evt.axisrel<-1))
00570 this->pointer_xpos+= evt.axisrel*2;
00571 else
00572 this->pointer_xpos+= evt.axisrel;
00573 if (this->pointer_xpos < this->screen_rect.x)
00574 this->pointer_xpos = this->screen_rect.x;
00575 else
00576 if (this->pointer_xpos > this->screen_rect.x + this->screen_rect.w - 1)
00577 this->pointer_xpos = this->screen_rect.x + this->screen_rect.w - 1;
00578 }
00579 else
00580
00581 this->pointer_xpos = this->screen_rect.x
00582 + ((this->xfac * (evt.axisabs - this->pointer_rect.x)) / 100);
00583 }
00584 else
00585 if (evt.axis == DIAI_Y) {
00586
00587 if (evt.flags & DIEF_AXISREL) {
00588
00589 if ((evt.axisrel>1)||(evt.axisrel<-1))
00590 this->pointer_ypos+= evt.axisrel*3;
00591 else
00592 this->pointer_ypos+= evt.axisrel;
00593 if (this->pointer_ypos < this->screen_rect.y)
00594 this->pointer_ypos = this->screen_rect.y;
00595 else
00596 if (this->pointer_ypos > this->screen_rect.y + this->screen_rect.h - 1)
00597 this->pointer_ypos = this->screen_rect.y + this->screen_rect.h - 1;
00598 }
00599 else
00600
00601 this->pointer_ypos = this->screen_rect.y
00602 + ((this->yfac * (evt.axisabs - this->pointer_rect.y)) / 100);
00603 }
00604
00605 if ((this->pointer_xpos != this->pointer_old_xpos)||(this->pointer_ypos != this->pointer_old_ypos)) {
00606
00607
00608 this->pointer_old_xpos = this->pointer_xpos;
00609 this->pointer_old_ypos = this->pointer_ypos;
00610
00611
00612 inputevent->type = MMSINPUTEVENTTYPE_AXISMOTION;
00613 inputevent->posx = this->pointer_xpos;
00614 inputevent->posy = this->pointer_ypos;
00615
00616
00617
00618 if (!event_buffered)
00619 return;
00620 }
00621 }
00622 break;
00623 default:
00624 break;
00625 }
00626 }
00627 }
00628 }
00629 #else
00630 throw MMSError(0,(string)typeid(this).name() + " is empty. compile DirectFB support!");
00631 #endif
00632 }
00633