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