GTK is built upon ATK so providing accessibility is a key part of the toolkit and all apps should be designed so that users with limited mobility can use it effectively, e.g. a mouse should not be required. In your case this is good as gtk automatically has the ability to tab between buttons built in and you can add key-bindings to buttons to make this even easier. Unfortunately guidelines for using ATK in GTK is nonexistent in gtk tutorials.
I assume that for whatever key press event you might want that you will also have a button somewhere on the display that will do the same thing. In this case you just add an accelerator to each button. E.g. the following binds control p to a button:
Code:
GtkAccelGroup *accel_group=NULL;
...
accel_group=gtk_accel_group_new();
gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
...
gtk_widget_add_accelerator(button, "clicked", accel_group, GDK_p, GDK_CONTROL_MASK, NULL);