Logo
  • Main Page
  • Related Pages
  • Modules
  • Classes
  • Files

mmsinputdfbhandler.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005-2007 Stefan Schwarzer, Jens Schneider,             *
00003  *                           Matthias Hardt, Guido Madaus                  *
00004  *                                                                         *
00005  *   Copyright (C) 2007-2008 BerLinux Solutions GbR                        *
00006  *                           Stefan Schwarzer & Guido Madaus               *
00007  *                                                                         *
00008  *   Copyright (C) 2009-2013 BerLinux Solutions GmbH                       *
00009  *                                                                         *
00010  *   Authors:                                                              *
00011  *      Stefan Schwarzer   <stefan.schwarzer@diskohq.org>,                 *
00012  *      Matthias Hardt     <matthias.hardt@diskohq.org>,                   *
00013  *      Jens Schneider     <jens.schneider@diskohq.org>,                   *
00014  *      Guido Madaus       <guido.madaus@diskohq.org>,                     *
00015  *      Patrick Helterhoff <patrick.helterhoff@diskohq.org>,               *
00016  *      René Bählkow       <rene.baehlkow@diskohq.org>                     *
00017  *                                                                         *
00018  *   This library is free software; you can redistribute it and/or         *
00019  *   modify it under the terms of the GNU Lesser General Public            *
00020  *   License version 2.1 as published by the Free Software Foundation.     *
00021  *                                                                         *
00022  *   This library is distributed in the hope that it will be useful,       *
00023  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00024  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00025  *   Lesser General Public License for more details.                       *
00026  *                                                                         *
00027  *   You should have received a copy of the GNU Lesser General Public      *
00028  *   License along with this library; if not, write to the                 *
00029  *   Free Software Foundation, Inc.,                                       *
00030  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
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     /*grab the input device */
00415     //DFBCHECK(dfb->GetInputDevice( dfb, device, &input ));
00416 
00417     /*create an input queue */
00418     //DFBCHECK(input->CreateEventBuffer( input, &keybuffer ));
00419 //    DFBCHECK(dfb->CreateInputEventBuffer(dfb,DICAPS_KEYS, (DFBBoolean)1, &keybuffer));
00420     DFBCHECK(dfb->CreateInputEventBuffer(dfb,DICAPS_ALL, (DFBBoolean)1, &keybuffer));
00421 
00422     /* get the screen rectangle */
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     /* get the pointer rectangle */
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             // no touch rect given but pointer needed
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     /* calculate a factor between screen and pointer rectangle */
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         /* this means that touch pad/screen is not used */
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         /* wait for event with 100ms timeout */
00480         if (keybuffer->WaitForEventWithTimeout(keybuffer, 0, 100) != DFB_OK) {
00481             if (event_buffered)
00482                 return;
00483             continue;
00484         }
00485 
00486         /* process keybuffer */
00487         if (keybuffer->PeekEvent( keybuffer, DFB_EVENT(&evt)) == DFB_OK) {
00488             /* check if i have to get it */
00489             if (event_buffered)
00490                 if ((evt.type == DIET_BUTTONRELEASE) && (inputevent->type == MMSINPUTEVENTTYPE_BUTTONPRESS))
00491                     /* if the next event is buttonrelease and the current buffered event is buttonpress */
00492                     /* return the current event buttonpress */
00493                     return;
00494 
00495             /* get the event */
00496             if (keybuffer->GetEvent( keybuffer, DFB_EVENT(&evt)) == DFB_OK) {
00497                 switch (evt.type) {
00498                 case DIET_KEYPRESS:
00499                         if (!this->button_pressed) {
00500                             /* work with keypress event */
00501 /*                          symbol_name = (DFBKeySymbolName *)bsearch( &evt.key_symbol,keynames,sizeof(keynames) / sizeof(keynames[0]) - 1, sizeof(keynames[0]), compare_symbol );
00502                             string name = symbol_name->name;
00503                             logger.writeLog("key '" + name + "' pressed, id: " + iToStr(symbol_name->symbol));
00504 */
00505                             /* fill the return structure */
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                             /* work with keyrelease event */
00514                             /* fill the return structure */
00515                             inputevent->type = MMSINPUTEVENTTYPE_KEYRELEASE;
00516                             inputevent->key = getKeyFromDFB(evt.key_symbol);
00517                             return;
00518                         }
00519                         break;
00520                 case DIET_BUTTONPRESS:
00521                         /* work with pressed buttons */
00522                         if (this->pointer_rect.w) {
00523                             if (evt.button == DIBI_LEFT) {
00524                                 /* work only with left button */
00525                                 /* fill the return structure */
00526                                 inputevent->type = MMSINPUTEVENTTYPE_BUTTONPRESS;
00527                                 inputevent->posx = this->pointer_xpos;
00528                                 inputevent->posy = this->pointer_ypos;
00529 
00530                                 /* buttonpress event */
00531                                 this->button_pressed++;
00532 
00533                                 if (this->button_pressed > 1)
00534                                     /* buttonpress event raised two times for touch pad/screens */
00535                                     return;
00536 
00537                                 /* all buttonpress events will be buffered */
00538                                 event_buffered = true;
00539                             }
00540                         }
00541                         break;
00542                 case DIET_BUTTONRELEASE:
00543                         /* work with released buttons */
00544                         if (this->pointer_rect.w) {
00545                             if (evt.button == DIBI_LEFT) {
00546                                 /* fill the return structure */
00547                                 inputevent->type = MMSINPUTEVENTTYPE_BUTTONRELEASE;
00548                                 inputevent->posx = this->pointer_xpos;
00549                                 inputevent->posy = this->pointer_ypos;
00550 
00551                                 /* buttonrelease event */
00552                                 this->button_pressed--;
00553 
00554                                 if (!this->button_pressed)
00555                                     /* buttonrelease event raised two times for touch pad/screens */
00556                                     return;
00557 
00558                                 /* buttonrelease event will be buffered */
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                                 /* x axis */
00567                                 if (evt.flags & DIEF_AXISREL) {
00568                                     /* work with relative value (e.g. normal mouse move) */
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                                     /* work with absolute position (e.g. touch pad/screen) */
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                                 /* y axis */
00587                                 if (evt.flags & DIEF_AXISREL) {
00588                                     /* work with relative value (e.g. normal mouse move) */
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                                     /* work with absolute position (e.g. touch pad/screen) */
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                                 /* the position of the mouse pointer has changed */
00607                                 /* save the old pointer */
00608                                 this->pointer_old_xpos = this->pointer_xpos;
00609                                 this->pointer_old_ypos = this->pointer_ypos;
00610 
00611                                 /* fill the return structure */
00612                                 inputevent->type = MMSINPUTEVENTTYPE_AXISMOTION;
00613                                 inputevent->posx = this->pointer_xpos;
00614                                 inputevent->posy = this->pointer_ypos;
00615 
00616                                 /* if we are waiting for the second buttonpress event (touch pad/screen) */
00617                                 /* --> we cannot return directly */
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 

Generated by doxygen