×
Namespaces

Variants
Actions
(Difference between revisions)

Using hardware keys with S60 and Maemo Platform

From Nokia Developer Wiki
Jump to: navigation, search
ebra (Talk | contribs)
ebra (Talk | contribs)
(Maemo Platform)
Line 7: Line 7:
  
 
== Maemo Platform ==
 
== Maemo Platform ==
 +
<code>
 +
typedef struct _AppData AppData;
 +
 +
struct _AppData
 +
{
 +
    HildonProgram *program; /* handle to application */
 +
    HildonWindow *window; /* handle to app's window */
 +
    osso_context_t *osso; /* handle to osso */
 +
};
 +
</code>
 +
 +
<code>
 +
/* Creates and initialises a main_view */
 +
MainView* interface_main_view_new( AppData *data )
 +
{
 +
    /* Zero memory with g_new0 */
 +
    MainView* result = g_new0( MainView, 1 );
 +
    ...
 +
      /* Add hardware button listener to application */
 +
    g_signal_connect(G_OBJECT(result->data->window),
 +
        "key_press_event", G_CALLBACK(callback_key_press), result);
 +
 +
</code>
 +
 +
 +
<code>
 +
/* Callback for hardware keys */
 +
gboolean callback_key_press(GtkWidget * widget, GdkEventKey * event, gpointer data)
 +
{
 +
    switch (event->keyval) {
 +
    case GDK_Up:
 +
        callback_up( NULL, data );
 +
        return TRUE;
 +
 +
    case GDK_Down:
 +
        callback_down( NULL, data );
 +
        return TRUE;
 +
 +
    case GDK_Left:
 +
        callback_left( NULL, data );
 +
        return TRUE;
 +
 +
    case GDK_Right:
 +
        callback_right( NULL, data );
 +
        return TRUE;
 +
 +
    case GDK_Return:
 +
        callback_reset( NULL, data );
 +
        return TRUE;
 +
 +
    case GDK_F6:
 +
        callback_fullscreen( NULL, data );
 +
        return TRUE;
 +
 +
    case GDK_F7: /* "Increase (zoom in)" */
 +
        return FALSE;
 +
 +
    case GDK_F8:  /* "Decrease (zoom out)" */
 +
        return FALSE;
 +
 +
    case GDK_Escape: /* "Cancel/Close" */
 +
        return FALSE;
 +
 +
    }
 +
    return FALSE;
 +
}
 +
</code>

Revision as of 14:18, 29 October 2007


Introduction

S60 Platform

Maemo Platform

typedef struct _AppData AppData;
 
struct _AppData
{
HildonProgram *program; /* handle to application */
HildonWindow *window; /* handle to app's window */
osso_context_t *osso; /* handle to osso */
};
/* Creates and initialises a main_view */
MainView* interface_main_view_new( AppData *data )
{
/* Zero memory with g_new0 */
MainView* result = g_new0( MainView, 1 );
...
/* Add hardware button listener to application */
g_signal_connect(G_OBJECT(result->data->window),
"key_press_event", G_CALLBACK(callback_key_press), result);
}


/* Callback for hardware keys */
gboolean callback_key_press(GtkWidget * widget, GdkEventKey * event, gpointer data)
{
switch (event->keyval) {
case GDK_Up:
callback_up( NULL, data );
return TRUE;
 
case GDK_Down:
callback_down( NULL, data );
return TRUE;
 
case GDK_Left:
callback_left( NULL, data );
return TRUE;
 
case GDK_Right:
callback_right( NULL, data );
return TRUE;
 
case GDK_Return:
callback_reset( NULL, data );
return TRUE;
 
case GDK_F6:
callback_fullscreen( NULL, data );
return TRUE;
 
case GDK_F7: /* "Increase (zoom in)" */
return FALSE;
 
case GDK_F8: /* "Decrease (zoom out)" */
return FALSE;
 
case GDK_Escape: /* "Cancel/Close" */
return FALSE;
 
}
return FALSE;
}
83 page views in the last 30 days.