diff options
author | Benjamin Otte <otte@gnome.org> | 2008-01-30 19:49:24 +0100 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2008-01-30 19:49:24 +0100 |
commit | 64efcb853bdfae72406f9bade9d47cdda5a95c77 (patch) | |
tree | 59b4a67b343598cf99b16f8eb54d880b474b80ef | |
parent | 414580f849a11365cf2b754c83b28ffe12be7e65 (diff) |
make key events work
Also do s/libswfdec/swfdec/ for the includes
-rw-r--r-- | swfdec-directfb/swfdec_directfb_player.c | 275 | ||||
-rw-r--r-- | swfdec-directfb/swfdec_directfb_player.h | 3 | ||||
-rw-r--r-- | swfdec-directfb/swfdec_directfb_renderer.h | 2 | ||||
-rw-r--r-- | swfdec-directfb/swfdec_source.h | 2 |
4 files changed, 277 insertions, 5 deletions
diff --git a/swfdec-directfb/swfdec_directfb_player.c b/swfdec-directfb/swfdec_directfb_player.c index 6e09b98..492e631 100644 --- a/swfdec-directfb/swfdec_directfb_player.c +++ b/swfdec-directfb/swfdec_directfb_player.c @@ -24,6 +24,261 @@ #include "swfdec-directfb/swfdec_directfb_player.h" #include "swfdec-directfb/swfdec_source.h" +/*** KEY TRANSLATION ***/ + +/* FIXME: add these + return SWFDEC_KEY_CLEAR; + return SWFDEC_KEY_HELP; + return SWFDEC_KEY_GRAVE; + return SWFDEC_KEY_APOSTROPHE; + return SWFDEC_KEY_F13; + return SWFDEC_KEY_F14; + return SWFDEC_KEY_F15; +*/ +SwfdecKey +swfdec_dfb_key_from_identifier (DFBInputDeviceKeyIdentifier id) +{ + switch (id) { + case DIKI_A: + return SWFDEC_KEY_A; + case DIKI_B: + return SWFDEC_KEY_B; + case DIKI_C: + return SWFDEC_KEY_C; + case DIKI_D: + return SWFDEC_KEY_D; + case DIKI_E: + return SWFDEC_KEY_E; + case DIKI_F: + return SWFDEC_KEY_F; + case DIKI_G: + return SWFDEC_KEY_G; + case DIKI_H: + return SWFDEC_KEY_H; + case DIKI_I: + return SWFDEC_KEY_I; + case DIKI_J: + return SWFDEC_KEY_J; + case DIKI_K: + return SWFDEC_KEY_K; + case DIKI_L: + return SWFDEC_KEY_L; + case DIKI_M: + return SWFDEC_KEY_M; + case DIKI_N: + return SWFDEC_KEY_N; + case DIKI_O: + return SWFDEC_KEY_O; + case DIKI_P: + return SWFDEC_KEY_P; + case DIKI_Q: + return SWFDEC_KEY_Q; + case DIKI_R: + return SWFDEC_KEY_R; + case DIKI_S: + return SWFDEC_KEY_S; + case DIKI_T: + return SWFDEC_KEY_T; + case DIKI_U: + return SWFDEC_KEY_U; + case DIKI_V: + return SWFDEC_KEY_V; + case DIKI_W: + return SWFDEC_KEY_W; + case DIKI_X: + return SWFDEC_KEY_X; + case DIKI_Y: + return SWFDEC_KEY_Y; + case DIKI_Z: + return SWFDEC_KEY_Z; + case DIKI_0: + return SWFDEC_KEY_0; + case DIKI_1: + return SWFDEC_KEY_1; + case DIKI_2: + return SWFDEC_KEY_2; + case DIKI_3: + return SWFDEC_KEY_3; + case DIKI_4: + return SWFDEC_KEY_4; + case DIKI_5: + return SWFDEC_KEY_5; + case DIKI_6: + return SWFDEC_KEY_6; + case DIKI_7: + return SWFDEC_KEY_7; + case DIKI_8: + return SWFDEC_KEY_8; + case DIKI_9: + return SWFDEC_KEY_9; + case DIKI_F1: + return SWFDEC_KEY_F1; + case DIKI_F2: + return SWFDEC_KEY_F2; + case DIKI_F3: + return SWFDEC_KEY_F3; + case DIKI_F4: + return SWFDEC_KEY_F4; + case DIKI_F5: + return SWFDEC_KEY_F5; + case DIKI_F6: + return SWFDEC_KEY_F6; + case DIKI_F7: + return SWFDEC_KEY_F7; + case DIKI_F8: + return SWFDEC_KEY_F8; + case DIKI_F9: + return SWFDEC_KEY_F9; + case DIKI_F10: + return SWFDEC_KEY_F10; + case DIKI_F11: + return SWFDEC_KEY_F11; + case DIKI_F12: + return SWFDEC_KEY_F12; + case DIKI_SHIFT_L: + return SWFDEC_KEY_SHIFT; + case DIKI_SHIFT_R: + return SWFDEC_KEY_SHIFT; + case DIKI_CONTROL_L: + return SWFDEC_KEY_CONTROL; + case DIKI_CONTROL_R: + return SWFDEC_KEY_CONTROL; + case DIKI_ALT_L: + return SWFDEC_KEY_ALT; + case DIKI_ALT_R: + return SWFDEC_KEY_ALT; + case DIKI_META_L: + return 0; /* FIXME */ + case DIKI_META_R: + return 0; /* FIXME */ + case DIKI_SUPER_L: + return 0; /* FIXME */ + case DIKI_SUPER_R: + return 0; /* FIXME */ + case DIKI_HYPER_L: + return 0; /* FIXME */ + case DIKI_HYPER_R: + return 0; /* FIXME */ + case DIKI_CAPS_LOCK: + return SWFDEC_KEY_CAPS_LOCK; + case DIKI_NUM_LOCK: + return SWFDEC_KEY_NUM_LOCK; + case DIKI_SCROLL_LOCK: + return 0; /* FIXME */ + case DIKI_ESCAPE: + return SWFDEC_KEY_ESCAPE; + case DIKI_LEFT: + return SWFDEC_KEY_LEFT; + case DIKI_RIGHT: + return SWFDEC_KEY_RIGHT; + case DIKI_UP: + return SWFDEC_KEY_UP; + case DIKI_DOWN: + return SWFDEC_KEY_DOWN; + case DIKI_TAB: + return SWFDEC_KEY_TAB; + case DIKI_ENTER: + return SWFDEC_KEY_ENTER; + case DIKI_SPACE: + return SWFDEC_KEY_SPACE; + case DIKI_BACKSPACE: + return SWFDEC_KEY_BACKSPACE; + case DIKI_INSERT: + return SWFDEC_KEY_INSERT; + case DIKI_DELETE: + return SWFDEC_KEY_DELETE; + case DIKI_HOME: + return SWFDEC_KEY_HOME; + case DIKI_END: + return SWFDEC_KEY_END; + case DIKI_PAGE_UP: + return SWFDEC_KEY_PAGE_UP; + case DIKI_PAGE_DOWN: + return SWFDEC_KEY_PAGE_DOWN; + case DIKI_PRINT: + return 0; /* FIXME */ + case DIKI_PAUSE: + return 0; /* FIXME */ + case DIKI_QUOTE_LEFT: + return 0; /* FIXME */ + case DIKI_MINUS_SIGN: + return SWFDEC_KEY_MINUS; + case DIKI_EQUALS_SIGN: + return SWFDEC_KEY_EQUAL; + case DIKI_BRACKET_LEFT: + return SWFDEC_KEY_LEFT_BRACKET; + case DIKI_BRACKET_RIGHT: + return SWFDEC_KEY_RIGHT_BRACKET; + case DIKI_BACKSLASH: + return SWFDEC_KEY_BACKSLASH; + case DIKI_SEMICOLON: + return SWFDEC_KEY_SEMICOLON; + case DIKI_QUOTE_RIGHT: + return 0; /* FIXME */ + case DIKI_COMMA: + return 0; /* FIXME */ + case DIKI_PERIOD: + return 0; /* FIXME */ + case DIKI_SLASH: + return SWFDEC_KEY_SLASH; + case DIKI_LESS_SIGN: + return 0; /* FIXME */ + case DIKI_KP_DIV: + return SWFDEC_KEY_NUMPAD_DIVIDE; + case DIKI_KP_MULT: + return SWFDEC_KEY_NUMPAD_MULTIPLY; + case DIKI_KP_MINUS: + return SWFDEC_KEY_NUMPAD_SUBTRACT; + case DIKI_KP_PLUS: + return SWFDEC_KEY_NUMPAD_ADD; + case DIKI_KP_ENTER: + return SWFDEC_KEY_ENTER; + case DIKI_KP_SPACE: + return SWFDEC_KEY_SPACE; + case DIKI_KP_TAB: + return SWFDEC_KEY_TAB; + case DIKI_KP_F1: + return SWFDEC_KEY_F1; + case DIKI_KP_F2: + return SWFDEC_KEY_F2; + case DIKI_KP_F3: + return SWFDEC_KEY_F3; + case DIKI_KP_F4: + return SWFDEC_KEY_F4; + case DIKI_KP_EQUAL: + return SWFDEC_KEY_EQUAL; + case DIKI_KP_SEPARATOR: + return 0; /* FIXME */ + case DIKI_KP_DECIMAL: + return SWFDEC_KEY_NUMPAD_DECIMAL; + case DIKI_KP_0: + return SWFDEC_KEY_NUMPAD_0; + case DIKI_KP_1: + return SWFDEC_KEY_NUMPAD_1; + case DIKI_KP_2: + return SWFDEC_KEY_NUMPAD_2; + case DIKI_KP_3: + return SWFDEC_KEY_NUMPAD_3; + case DIKI_KP_4: + return SWFDEC_KEY_NUMPAD_4; + case DIKI_KP_5: + return SWFDEC_KEY_NUMPAD_5; + case DIKI_KP_6: + return SWFDEC_KEY_NUMPAD_6; + case DIKI_KP_7: + return SWFDEC_KEY_NUMPAD_7; + case DIKI_KP_8: + return SWFDEC_KEY_NUMPAD_8; + case DIKI_KP_9: + return SWFDEC_KEY_NUMPAD_9; + case DIKI_UNKNOWN: + case DIKI_KEYDEF_END: + case DIKI_NUMBER_OF_KEYS: + default: + return 0; + } +} + enum { PROP_0, PROP_PLAYING, @@ -33,7 +288,7 @@ enum { PROP_HANDLE_EVENTS }; -/*** dfb-doc ***/ +/*** GTK-DOC ***/ /** * SECTION:SwfdecDfbPlayer @@ -324,8 +579,24 @@ swfdec_dfb_player_handle_input_event (SwfdecDfbPlayer *player, const DFBInputEve switch (event->type) { case DIET_KEYPRESS: + { + SwfdecKey key = swfdec_dfb_key_from_identifier (event->key_id); + if (key == 0) { + g_printerr ("find the key for keycode %u", event->key_id); + } else { + swfdec_player_key_press (SWFDEC_PLAYER (player), key, event->key_symbol); + } + } + break; case DIET_KEYRELEASE: - /* FIXME! */ + { + SwfdecKey key = swfdec_dfb_key_from_identifier (event->key_id); + if (key == 0) { + g_printerr ("find the key for keycode %u", event->key_id); + } else { + swfdec_player_key_release (SWFDEC_PLAYER (player), key, event->key_symbol); + } + } break; case DIET_BUTTONPRESS: swfdec_player_mouse_press (SWFDEC_PLAYER (player), diff --git a/swfdec-directfb/swfdec_directfb_player.h b/swfdec-directfb/swfdec_directfb_player.h index 4233d8e..015d842 100644 --- a/swfdec-directfb/swfdec_directfb_player.h +++ b/swfdec-directfb/swfdec_directfb_player.h @@ -20,7 +20,7 @@ #ifndef _SWFDEC_DFB_PLAYER_H_ #define _SWFDEC_DFB_PLAYER_H_ -#include <libswfdec/swfdec.h> +#include <swfdec/swfdec.h> #include <directfb.h> G_BEGIN_DECLS @@ -79,6 +79,7 @@ gboolean swfdec_dfb_player_set_handle_events (SwfdecDfbPlayer * player, gboolean handle_events); gboolean swfdec_dfb_player_get_handle_events (SwfdecDfbPlayer * player); +SwfdecKey swfdec_dfb_key_from_identifier (DFBInputDeviceKeyIdentifier id); G_END_DECLS diff --git a/swfdec-directfb/swfdec_directfb_renderer.h b/swfdec-directfb/swfdec_directfb_renderer.h index 7917f22..65a6240 100644 --- a/swfdec-directfb/swfdec_directfb_renderer.h +++ b/swfdec-directfb/swfdec_directfb_renderer.h @@ -20,7 +20,7 @@ #ifndef _SWFDEC_DFB_RENDERER_H_ #define _SWFDEC_DFB_RENDERER_H_ -#include <libswfdec/swfdec.h> +#include <swfdec/swfdec.h> #include <directfb.h> G_BEGIN_DECLS diff --git a/swfdec-directfb/swfdec_source.h b/swfdec-directfb/swfdec_source.h index 0c7c383..b75077f 100644 --- a/swfdec-directfb/swfdec_source.h +++ b/swfdec-directfb/swfdec_source.h @@ -20,7 +20,7 @@ #ifndef _SWFDEC_SOURCE_H_ #define _SWFDEC_SOURCE_H_ -#include <libswfdec/swfdec.h> +#include <swfdec/swfdec.h> G_BEGIN_DECLS |