146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/*
246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    SDL - Simple DirectMedia Layer
346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Copyright (C) 1997-2006 Sam Lantinga
446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is free software; you can redistribute it and/or
646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    modify it under the terms of the GNU Lesser General Public
746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License as published by the Free Software Foundation; either
846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    version 2.1 of the License, or (at your option) any later version.
946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is distributed in the hope that it will be useful,
1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    but WITHOUT ANY WARRANTY; without even the implied warranty of
1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Lesser General Public License for more details.
1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    You should have received a copy of the GNU Lesser General Public
1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License along with this library; if not, write to the Free Software
1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Sam Lantinga
2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    slouken@libsdl.org
2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/
2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_config.h"
2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Handle the event stream, converting DirectFB input events into SDL events */
2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <sys/types.h>
2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <sys/time.h>
2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <unistd.h>
2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <fcntl.h>
3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <termios.h>
3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <directfb.h>
3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL.h"
3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "../SDL_sysvideo.h"
3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "../../events/SDL_sysevents.h"
3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "../../events/SDL_events_c.h"
3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_DirectFB_video.h"
3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_DirectFB_events.h"
4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* The translation tables from a DirectFB keycode to a SDL keysym */
4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstatic SDLKey keymap[256];
4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstatic SDL_keysym *DirectFB_TranslateKey (DFBInputEvent *ev, SDL_keysym *keysym);
4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstatic int DirectFB_TranslateButton (DFBInputEvent *ev);
4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstatic int posted = 0;
4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid DirectFB_PumpEvents (_THIS)
5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{
5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  DFBInputEvent evt;
5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
5346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  while (HIDDEN->eventbuffer->GetEvent (HIDDEN->eventbuffer,
5446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner                                        DFB_EVENT (&evt)) == DFB_OK)
5546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    {
5646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner      SDL_keysym keysym;
5746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
5846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner      switch (evt.type)
5946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        {
6046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        case DIET_BUTTONPRESS:
6146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          posted += SDL_PrivateMouseButton(SDL_PRESSED,
6246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner                                           DirectFB_TranslateButton (&evt), 0, 0);
6346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          break;
6446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        case DIET_BUTTONRELEASE:
6546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          posted += SDL_PrivateMouseButton(SDL_RELEASED,
6646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner                                           DirectFB_TranslateButton (&evt), 0, 0);
6746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          break;
6846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        case DIET_KEYPRESS:
6946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          posted += SDL_PrivateKeyboard(SDL_PRESSED, DirectFB_TranslateKey(&evt, &keysym));
7046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          break;
7146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        case DIET_KEYRELEASE:
7246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          posted += SDL_PrivateKeyboard(SDL_RELEASED, DirectFB_TranslateKey(&evt, &keysym));
7346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          break;
7446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        case DIET_AXISMOTION:
7546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          if (evt.flags & DIEF_AXISREL)
7646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner            {
7746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner              if (evt.axis == DIAI_X)
7846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner                posted += SDL_PrivateMouseMotion(0, 1, evt.axisrel, 0);
7946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner              else if (evt.axis == DIAI_Y)
8046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner                posted += SDL_PrivateMouseMotion(0, 1, 0, evt.axisrel);
8146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner            }
8246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          break;
8346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        default:
8446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner          ;
8546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner        }
8646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    }
8746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}
8846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
8946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid DirectFB_InitOSKeymap (_THIS)
9046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{
9146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  int i;
9246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
9346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  /* Initialize the DirectFB key translation table */
9446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  for (i=0; i<SDL_arraysize(keymap); ++i)
9546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    keymap[i] = SDLK_UNKNOWN;
9646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
9746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_A - DIKI_UNKNOWN] = SDLK_a;
9846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_B - DIKI_UNKNOWN] = SDLK_b;
9946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_C - DIKI_UNKNOWN] = SDLK_c;
10046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_D - DIKI_UNKNOWN] = SDLK_d;
10146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_E - DIKI_UNKNOWN] = SDLK_e;
10246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F - DIKI_UNKNOWN] = SDLK_f;
10346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_G - DIKI_UNKNOWN] = SDLK_g;
10446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_H - DIKI_UNKNOWN] = SDLK_h;
10546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_I - DIKI_UNKNOWN] = SDLK_i;
10646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_J - DIKI_UNKNOWN] = SDLK_j;
10746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_K - DIKI_UNKNOWN] = SDLK_k;
10846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_L - DIKI_UNKNOWN] = SDLK_l;
10946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_M - DIKI_UNKNOWN] = SDLK_m;
11046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_N - DIKI_UNKNOWN] = SDLK_n;
11146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_O - DIKI_UNKNOWN] = SDLK_o;
11246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_P - DIKI_UNKNOWN] = SDLK_p;
11346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_Q - DIKI_UNKNOWN] = SDLK_q;
11446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_R - DIKI_UNKNOWN] = SDLK_r;
11546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_S - DIKI_UNKNOWN] = SDLK_s;
11646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_T - DIKI_UNKNOWN] = SDLK_t;
11746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_U - DIKI_UNKNOWN] = SDLK_u;
11846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_V - DIKI_UNKNOWN] = SDLK_v;
11946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_W - DIKI_UNKNOWN] = SDLK_w;
12046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_X - DIKI_UNKNOWN] = SDLK_x;
12146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_Y - DIKI_UNKNOWN] = SDLK_y;
12246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_Z - DIKI_UNKNOWN] = SDLK_z;
12346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
12446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_0 - DIKI_UNKNOWN] = SDLK_0;
12546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_1 - DIKI_UNKNOWN] = SDLK_1;
12646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_2 - DIKI_UNKNOWN] = SDLK_2;
12746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_3 - DIKI_UNKNOWN] = SDLK_3;
12846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_4 - DIKI_UNKNOWN] = SDLK_4;
12946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_5 - DIKI_UNKNOWN] = SDLK_5;
13046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_6 - DIKI_UNKNOWN] = SDLK_6;
13146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_7 - DIKI_UNKNOWN] = SDLK_7;
13246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_8 - DIKI_UNKNOWN] = SDLK_8;
13346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_9 - DIKI_UNKNOWN] = SDLK_9;
13446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
13546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F1 - DIKI_UNKNOWN] = SDLK_F1;
13646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F2 - DIKI_UNKNOWN] = SDLK_F2;
13746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F3 - DIKI_UNKNOWN] = SDLK_F3;
13846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F4 - DIKI_UNKNOWN] = SDLK_F4;
13946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F5 - DIKI_UNKNOWN] = SDLK_F5;
14046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F6 - DIKI_UNKNOWN] = SDLK_F6;
14146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F7 - DIKI_UNKNOWN] = SDLK_F7;
14246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F8 - DIKI_UNKNOWN] = SDLK_F8;
14346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F9 - DIKI_UNKNOWN] = SDLK_F9;
14446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F10 - DIKI_UNKNOWN] = SDLK_F10;
14546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F11 - DIKI_UNKNOWN] = SDLK_F11;
14646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_F12 - DIKI_UNKNOWN] = SDLK_F12;
14746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
14846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_ESCAPE - DIKI_UNKNOWN] = SDLK_ESCAPE;
14946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_LEFT - DIKI_UNKNOWN] = SDLK_LEFT;
15046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_RIGHT - DIKI_UNKNOWN] = SDLK_RIGHT;
15146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_UP - DIKI_UNKNOWN] = SDLK_UP;
15246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_DOWN - DIKI_UNKNOWN] = SDLK_DOWN;
15346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_CONTROL_L - DIKI_UNKNOWN] = SDLK_LCTRL;
15446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_CONTROL_R - DIKI_UNKNOWN] = SDLK_RCTRL;
15546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_SHIFT_L - DIKI_UNKNOWN] = SDLK_LSHIFT;
15646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_SHIFT_R - DIKI_UNKNOWN] = SDLK_RSHIFT;
15746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_ALT_L - DIKI_UNKNOWN] = SDLK_LALT;
15846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_ALT_R - DIKI_UNKNOWN] = SDLK_RALT;
15946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_TAB - DIKI_UNKNOWN] = SDLK_TAB;
16046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_ENTER - DIKI_UNKNOWN] = SDLK_RETURN;
16146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_SPACE - DIKI_UNKNOWN] = SDLK_SPACE;
16246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_BACKSPACE - DIKI_UNKNOWN] = SDLK_BACKSPACE;
16346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_INSERT - DIKI_UNKNOWN] = SDLK_INSERT;
16446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_DELETE - DIKI_UNKNOWN] = SDLK_DELETE;
16546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_HOME - DIKI_UNKNOWN] = SDLK_HOME;
16646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_END - DIKI_UNKNOWN] = SDLK_END;
16746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_PAGE_UP - DIKI_UNKNOWN] = SDLK_PAGEUP;
16846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_PAGE_DOWN - DIKI_UNKNOWN] = SDLK_PAGEDOWN;
16946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_CAPS_LOCK - DIKI_UNKNOWN] = SDLK_CAPSLOCK;
17046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_NUM_LOCK - DIKI_UNKNOWN] = SDLK_NUMLOCK;
17146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_SCROLL_LOCK - DIKI_UNKNOWN] = SDLK_SCROLLOCK;
17246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_PRINT - DIKI_UNKNOWN] = SDLK_PRINT;
17346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_PAUSE - DIKI_UNKNOWN] = SDLK_PAUSE;
17446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_KP_DIV - DIKI_UNKNOWN] = SDLK_KP_DIVIDE;
17546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_KP_MULT - DIKI_UNKNOWN] = SDLK_KP_MULTIPLY;
17646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_KP_MINUS - DIKI_UNKNOWN] = SDLK_KP_MINUS;
17746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_KP_PLUS - DIKI_UNKNOWN] = SDLK_KP_PLUS;
17846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keymap[DIKI_KP_ENTER - DIKI_UNKNOWN] = SDLK_KP_ENTER;
17946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}
18046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
18146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
18246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstatic SDL_keysym *DirectFB_TranslateKey (DFBInputEvent *ev, SDL_keysym *keysym)
18346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{
18446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  /* Set the keysym information */
18546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keysym->scancode = ev->key_id;
18646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keysym->mod = KMOD_NONE; /* FIXME */
18746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  keysym->unicode = (DFB_KEY_TYPE (ev->key_symbol) == DIKT_UNICODE) ? ev->key_symbol : 0;
18846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
18946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  if (ev->key_symbol > 0 && ev->key_symbol < 128)
19046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    keysym->sym = ev->key_symbol;
19146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  else
19246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    keysym->sym = keymap[ev->key_id - DIKI_UNKNOWN];
19346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
19446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  return keysym;
19546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}
19646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
19746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstatic int DirectFB_TranslateButton (DFBInputEvent *ev)
19846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{
19946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner  switch (ev->button)
20046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    {
20146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    case DIBI_LEFT:
20246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner      return 1;
20346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    case DIBI_MIDDLE:
20446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner      return 2;
20546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    case DIBI_RIGHT:
20646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner      return 3;
20746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    default:
20846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner      return 0;
20946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    }
21046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}
211