#include #include #define DFBCHECK(x...) \ do { \ DFBResult err; \ err = x; \ if (err != DFB_OK) { \ printf ("Fail!! err!=DFB_OK"); \ DirectFBError (#x, err); \ } \ } while(0); #define HK_HOMESCREEN DIKS_CUSTOM36 #define HK_MEDIA DIKS_CUSTOM20 #define HK_TELETEXT DIKS_CUSTOM17 #define HK_HTML DIKS_CUSTOM19 #define HK_DFU DIKS_CUSTOM49 #define HK_REMOTEAPP DIKS_CUSTOM97 #define HK_EXPERIENCE DIKS_CUSTOM58 #define DFB_RAW_KEY DIKS_CUSTOM31 #define DFB_AMBILIGHT DIKS_CUSTOM33 #define DFB_BATTERY_LOW DIKS_CUSTOM94 #define DFB_3D DIKS_CUSTOM110 /*added by Vivek to solve brg36mgr#235014 */ #define DFB_NETTV DIKS_CUSTOM19 #define DFB_MEDIA_CB DIKS_CUSTOM20 #define DFB_MEDIA_DLNA DIKS_CUSTOM21 #define DFB_LKB_TACT DIKS_CUSTOM32 #define DFB_EXPERIENCE DIKS_CUSTOM58 #define DFB_MUTE DIKS_CUSTOM93 #define DFB_DEALERRC DIKS_CUSTOM111 #define DFB_DEALERRC_DEMO DIKS_CUSTOM112 #define NOTRCSOURCEMASK 0x20 #define MAX_NR_OF_ELEMENTS( a, b ) ( sizeof( a ) / sizeof( b ) ) typedef enum{ MEDIA_USB, MEDIA_Network, MEDIA_Scenea, MEDIA_DRM } EnumMediaStart; static IDiVine *divine = NULL; static DFBInputDeviceKeySymbol Rc5Sys0TranslateTable[0x80] = { /**********************/ /* SYSTEM CODE 0x00 */ /**********************/ /****************************************************************************************************************************************************************************/ /* * 0x00 / 0x08 0x01 / 0x09 0x02 / 0x0A 0x03 / 0x0B 0x04 / 0x0C 0x05 / 0x0D 0x06 / 0x0E 0x07 / 0x0F */ /****************************************************************************************************************************************************************************/ /* 0x00 */ DIKS_0, DIKS_1, DIKS_2, DIKS_3, DIKS_4, DIKS_5, DIKS_6, DIKS_7, /* */ DIKS_8, DIKS_9, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_POWER, DIKS_MUTE, DFB_RAW_KEY, DIKS_INFO, /* 0x10 */ DIKS_VOLUME_UP, DIKS_VOLUME_DOWN, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x20 */ DIKS_CHANNEL_UP, DIKS_CHANNEL_DOWN, DIKS_PREVIOUS, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x30 */ DFB_RAW_KEY, DFB_RAW_KEY, DIKS_REWIND, DFB_RAW_KEY, DIKS_FASTFORWARD, DIKS_PLAYPAUSE, DIKS_STOP, DIKS_RECORD, /* */ DIKS_NEXT, DIKS_F2, DIKS_SUBTITLE, DFB_RAW_KEY, DIKS_TEXT, DIKS_POWER2, DFB_RAW_KEY, DIKS_TUNER, /* 0x40 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_AMBILIGHT, /* */ DFB_RAW_KEY, DFB_AMBILIGHT, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x50 */ DIKS_CURSOR_UP, DIKS_CURSOR_DOWN, DIKS_MENU, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_CURSOR_LEFT, DIKS_CURSOR_RIGHT, DIKS_OK, /* */ DIKS_MODE, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x60 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_RED, DIKS_GREEN, DIKS_YELLOW, DIKS_BLUE, DFB_RAW_KEY, /* 0x70 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_ZOOM, DFB_RAW_KEY /****************************************************************************************************************************************************************************/ }; /* sync'ed the table of TV side to fix the issue brg36mgr#235014 , vivek*/ static DFBInputDeviceKeySymbol Rc5Sys3TranslateTable[0x80] = { /**********************/ /* SYSTEM CODE 0x03 */ /**********************/ /****************************************************************************************************************************************************************************/ /* * 0x00 / 0x08 0x01 / 0x09 0x02 / 0x0A 0x03 / 0x0B 0x04 / 0x0C 0x05 / 0x0D 0x06 / 0x0E 0x07 / 0x0F */ /****************************************************************************************************************************************************************************/ /* 0x00 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_F1, DIKS_F12, DIKS_F6, DIKS_F7, /* */ DIKS_F8, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x10 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_MEDIA_CB, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x20 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_AMBILIGHT, DFB_AMBILIGHT, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_EPG, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x30 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DIKS_F3, DIKS_F4, DIKS_F12, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_ZOOM, DIKS_ZOOM, DFB_RAW_KEY, /* 0x40 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DIKS_TUNER, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x50 */ DIKS_ZOOM, DIKS_ZOOM, DFB_RAW_KEY, DIKS_ZOOM, DFB_RAW_KEY, DIKS_ZOOM, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x60 */ DFB_MEDIA_DLNA, DFB_NETTV, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x70 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_ZOOM, DIKS_ZOOM, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_F5, DFB_RAW_KEY, DIKS_ZOOM, DIKS_ZOOM, DFB_RAW_KEY /****************************************************************************************************************************************************************************/ }; static DFBInputDeviceKeySymbol Rc6TranslateTable[0x100] = { /****************************************************************************************************************************************************************************/ /* * 0x00 / 0x08 0x01 / 0x09 0x02 / 0x0A 0x03 / 0x0B 0x04 / 0x0C 0x05 / 0x0D 0x06 / 0x0E 0x07 / 0x0F */ /****************************************************************************************************************************************************************************/ /* 0x00 */ DIKS_0, DIKS_1, DIKS_2, DIKS_3, DIKS_4, DIKS_5, DIKS_6, DIKS_7, /* */ DIKS_8, DIKS_9, DIKS_PREVIOUS, DFB_RAW_KEY, DIKS_POWER, DIKS_MUTE, DFB_RAW_KEY, DIKS_INFO, /* 0x10 */ DIKS_VOLUME_UP, DIKS_VOLUME_DOWN, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_CHANNEL_UP, DIKS_CHANNEL_DOWN, /* 0x20 */ DIKS_CHANNEL_UP, DIKS_CHANNEL_DOWN, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DIKS_FASTFORWARD, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_REWIND, DIKS_PLAYPAUSE, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x30 */ DIKS_PLAYPAUSE, DIKS_STOP, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_STOP, DIKS_RECORD, /* */ DIKS_NEXT, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_TEXT, DIKS_POWER2, DFB_RAW_KEY, DIKS_TUNER, /* 0x40 */ DIKS_OPTION, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_SUBTITLE, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_PAGE_DOWN, DIKS_PAGE_UP, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x50 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_MENU, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DIKS_CURSOR_UP, DIKS_CURSOR_DOWN, DIKS_CURSOR_LEFT, DIKS_CURSOR_RIGHT, DIKS_OK, DIKS_MODE, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x60 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_RED, DIKS_GREEN, DIKS_YELLOW, /* 0x70 */ DIKS_BLUE, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_SUBTITLE, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0x80 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_AMBILIGHT, /* 0x90 */ HK_EXPERIENCE, DFB_AMBILIGHT, DFB_AMBILIGHT, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_TUNER, /* 0xA0 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0xB0 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_3D, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, HK_HTML, DFB_RAW_KEY, /* 0xC0 */ DFB_RAW_KEY, DIKS_PLAYPAUSE, DFB_RAW_KEY, DFB_BATTERY_LOW, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_EPG, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0xD0 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DIKS_PERIOD, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0xE0 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, /* 0xF0 */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DIKS_ZOOM, DFB_RAW_KEY, DFB_RAW_KEY, /* */ DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY, DFB_RAW_KEY /****************************************************************************************************************************************************************************/ }; static int TranslateKey( int *source, int *system, int *command, DFBInputDeviceKeySymbol *symbol ) { int translated = 0; switch ( *source ) { case keySourceRc5: if ( ( *system == 0 ) && ( *command >= 0 ) && ( *command < ( MAX_NR_OF_ELEMENTS( Rc5Sys0TranslateTable, DFBInputDeviceKeySymbol ) ) ) ) { *symbol = Rc5Sys0TranslateTable[*command]; translated = 1; } else if ( ( *system == 3 ) && ( *command >= 0 ) && ( *command < ( MAX_NR_OF_ELEMENTS( Rc5Sys3TranslateTable, DFBInputDeviceKeySymbol ) ) ) ) { *symbol = Rc5Sys3TranslateTable[*command]; translated = 1; } break; case keySourceRc6: if ( ( *system < 2 ) && ( *command >= 0 ) && ( *command < ( MAX_NR_OF_ELEMENTS( Rc6TranslateTable, DFBInputDeviceKeySymbol ) ) ) ) { *symbol = Rc6TranslateTable[*command]; translated = 1; } break; default: /* unrecognized source: no translation */ break; } if( !translated ) { printf( ( "Key could not be translated, passing DFB_RAW_KEY instead!\n" ) ); *symbol = DFB_RAW_KEY; translated = 1; } return( translated ); } static int SendKeyDown(int keyname,int src,int sys,int cmd, int modifier ) { DFBInputEvent event; unsigned long key_code; if (divine) { key_code = (((unsigned int)src & 0xff) << 24) | (((unsigned int)sys & 0xff) << 16) | ((unsigned int)cmd & 0xffff); event.clazz = DFEC_INPUT; event.type = DIET_KEYPRESS; event.key_code = key_code; event.key_symbol = keyname; event.flags = DIEF_KEYCODE | DIEF_KEYSYMBOL; if (modifier) { event.flags |= DIEF_MODIFIERS; event.modifiers = modifier; } DFBCHECK(divine->SendEvent (divine, &event)); } return 1; } static int SendKeyUp(int keyname,int src,int sys,int cmd, int modifier ) { DFBInputEvent event; unsigned long key_code; if (divine) { key_code = (((unsigned int)src & 0xff) << 24) | (((unsigned int)sys & 0xff) << 16) | ((unsigned int)cmd & 0xffff); event.clazz = DFEC_INPUT; event.type = DIET_KEYRELEASE; event.key_code = key_code; event.key_symbol = keyname; event.flags = DIEF_KEYCODE | DIEF_KEYSYMBOL; if (modifier) { event.flags |= DIEF_MODIFIERS; event.modifiers = modifier; } DFBCHECK(divine->SendEvent (divine, &event)); } return 1; } static int SendKeyHK(int keyname,int src,int sys,int cmd, int modifier ) { unsigned long key_code; DFBInputEvent event; int dfb_ret; int ret = 0; if (divine) { src |= NOTRCSOURCEMASK; key_code = (((unsigned int)src & 0xff) << 24) | (((unsigned int)sys & 0xff) << 16) | ((unsigned int)cmd & 0xffff); event.clazz = DFEC_INPUT; event.type = DIET_KEYPRESS; event.key_code = key_code; event.key_symbol = keyname; event.flags = DIEF_KEYCODE | DIEF_KEYSYMBOL; if (modifier) { event.flags |= DIEF_MODIFIERS; event.modifiers = modifier; } dfb_ret = divine->SendEvent (divine, &event); printf("ReturnKey retval = %d\n", dfb_ret ); ret = 1; } return ret; } int jslibrc_Init( int *argc, char **argv[] ) { DFBResult ret; ret = DiVineInit( argc, argv ); if (ret) { return ret; } ret = DiVineCreate( &divine ); if (ret) { return ret; } return 0; } void jslibrc_Exit( void ) { if (divine) { divine->Release(divine); divine = NULL; } } void jslibrc_KeyDown( int src, int sys, int cmd ) { DFBInputDeviceKeySymbol symbol = 0; if ( TranslateKey( &src, &sys, &cmd, &symbol ) ) { SendKeyDown(symbol, src, sys, cmd, 0); } } void jslibrc_KeyUp( int src, int sys, int cmd ) { DFBInputDeviceKeySymbol symbol = 0; if ( TranslateKey( &src, &sys, &cmd, &symbol ) ) { SendKeyUp(symbol, src, sys, cmd, 0); } } int jslibrc_RequestActivity( amLib_EnumActivityId act, amLib_EnumActivation mode, int cookie ) { switch(act) { case amLib_ACT_HomeScreen: SendKeyHK(HK_HOMESCREEN, 0, 0, mode, 0); break; case amLib_ACT_WatchTV: // key_KeyDown( source, system, command ); SendKeyHK(DIKS_TUNER, 3, 0, mode, 0); break; case amLib_ACT_BrowseUSB: SendKeyHK(HK_MEDIA, MEDIA_USB,0,mode, 0); break; case amLib_ACT_BrowseDLNA: SendKeyHK(HK_MEDIA, MEDIA_Network,0,mode, 0); break; case amLib_ACT_NetTV: SendKeyHK(HK_HTML, 0, 0, mode, 0); break; case amLib_ACT_Dfu: SendKeyHK(HK_DFU, 0, 0, mode, 0); break; case amLib_ACT_Teletext: SendKeyHK(HK_TELETEXT, 0, 0, mode, 0); break; case amLib_ACT_RemoteApp: SendKeyHK(HK_REMOTEAPP, 0, 0, mode, 0); break; default: break; } } void jslibrc_KeyDownEx( int src, int sys, int cmd ) { DFBInputDeviceKeySymbol symbol = 0; if ( TranslateKey( &src, &sys, &cmd, &symbol ) ) { SendKeyDown(symbol, src, sys, cmd, DIMM_HYPER); } } void jslibrc_KeyUpEx( int src, int sys, int cmd ) { DFBInputDeviceKeySymbol symbol = 0; if ( TranslateKey( &src, &sys, &cmd, &symbol ) ) { SendKeyUp(symbol, src, sys, cmd, DIMM_HYPER); } } int jslibrc_RequestActivityEx( amLib_EnumActivityId act, amLib_EnumActivation mode, int cookie ) { switch(act) { case amLib_ACT_HomeScreen: SendKeyHK(HK_HOMESCREEN, 0, 0, mode, DIMM_HYPER); break; case amLib_ACT_WatchTV: // key_KeyDown( source, system, command ); SendKeyHK(DIKS_TUNER, 3, 0, mode, DIMM_HYPER); break; case amLib_ACT_BrowseUSB: SendKeyHK(HK_MEDIA, MEDIA_USB,0,mode, DIMM_HYPER); break; case amLib_ACT_BrowseDLNA: SendKeyHK(HK_MEDIA, MEDIA_Network,0,mode, DIMM_HYPER); break; case amLib_ACT_NetTV: SendKeyHK(HK_HTML, 0, 0, mode, DIMM_HYPER); break; case amLib_ACT_Dfu: SendKeyHK(HK_DFU, 0, 0, mode, DIMM_HYPER); break; case amLib_ACT_Teletext: SendKeyHK(HK_TELETEXT, 0, 0, mode, DIMM_HYPER); break; case amLib_ACT_RemoteApp: SendKeyHK(HK_REMOTEAPP, 0, 0, mode, DIMM_HYPER); break; default: break; } } void jslibrc_HIDKeyDown( int keycode ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_KEYPRESS; event.flags = DIEF_KEYID; event.key_id = keycode; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HIDKeyUp( int keycode ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_KEYRELEASE; event.flags = DIEF_KEYID; event.key_id = keycode; dfb_ret = divine->SendEvent (divine, &event); } } int jslibrc_HIDKeyDownEx( int keycode ) { DFBInputEvent event; int dfb_ret = -1; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_KEYPRESS; event.flags = DIEF_KEYSYMBOL; event.key_symbol = keycode; dfb_ret = divine->SendEvent(divine, &event); } return dfb_ret; } int jslibrc_HIDKeyUpEx( int keycode ) { DFBInputEvent event; int dfb_ret = -1; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_KEYRELEASE; event.flags = DIEF_KEYSYMBOL; event.key_symbol = keycode; dfb_ret = divine->SendEvent(divine, &event); } return dfb_ret; } void jslibrc_HidMouseMoveAbs ( int x, int y, int xmin, int xmax, int ymin, int ymax ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_AXISMOTION; event.flags = DIEF_TIMESTAMP; gettimeofday( &event.timestamp, NULL ); event.flags |= DIEF_AXISABS | DIEF_MIN | DIEF_MAX; event.axis = DIAI_X; event.min = xmin; event.max = xmax; event.axisabs = x; dfb_ret = divine->SendEvent (divine, &event); event.axis = DIAI_Y; event.min = ymin; event.max = ymax; event.axisabs = y; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HidMouseMoveRel ( int dx, int dy, int sensitivity ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_AXISMOTION; event.flags = DIEF_TIMESTAMP; gettimeofday( &event.timestamp, NULL ); event.flags |= DIEF_AXISREL; event.axis = DIAI_X; event.axisrel = dx*sensitivity; dfb_ret = divine->SendEvent (divine, &event); event.axis = DIAI_Y; event.axisrel = dy*sensitivity; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HidMouseMoveAbsEx ( int x, int y ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_AXISMOTION; event.flags = DIEF_AXISABS; event.axis = DIAI_X; event.axisabs = x; dfb_ret = divine->SendEvent (divine, &event); event.axis = DIAI_Y; event.axisabs = y; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HidMouseMoveRelEx ( int dx, int dy) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_AXISMOTION; event.flags = DIEF_AXISREL; event.axis = DIAI_X; event.axisrel = dx; dfb_ret = divine->SendEvent (divine, &event); event.axis = DIAI_Y; event.axisrel = dy; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HidMouseButtonDown ( int button ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_BUTTONPRESS; event.flags = DIEF_NONE; event.button = DIBI_FIRST; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HidMouseButtonUp( int button ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_BUTTONRELEASE; event.flags = DIEF_NONE;; event.button = DIBI_FIRST; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HidMouseButtonDownEx ( int button ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_BUTTONPRESS; event.flags = 0; event.button = DIBI_FIRST; dfb_ret = divine->SendEvent (divine, &event); } } void jslibrc_HidMouseButtonUpEx( int button ) { DFBInputEvent event; int dfb_ret; if (divine) { event.clazz = DFEC_INPUT; event.type = DIET_BUTTONRELEASE; event.flags = 0; event.button = DIBI_FIRST; dfb_ret = divine->SendEvent (divine, &event); } }