Despues de buscar informacion sobre como controlar la captura de teclado sobre un widget tipo GTkEntry, encontre la forma de hacerlo mediante el evento “key_press_event”.
GtkWidget *txt_entrada;
...
txt_entrada = gtk_entry_new_with_max_length(24);
...
/*
* Indicamos la funcion(txt_entrada_keypress) que manejara
* el evento(key_press_event), sobre el objeto txt_entrada
*/
gtk_signal_connect
(
GTK_OBJECT (txt_entrada),
“key_press_event”,
GTK_SIGNAL_FUNC (txt_entrada_keypress),
NULL
);
Esta funcion evaluara cada tecla presionada mediante macros las cuales pueden ser consultadas en el archivo de cabecera gdkkeysyms.h donde estan declaradas y en caso de toparse, en este caso , con los digitos 1 y 0 (que son los valores que queremos permitir) devolvera como retorno un estado FALSE, para que pueda ser capturada por el entry.
gboolean txt_entrada_keypress(GtkWidget *widget,GdkEventKey *event,gpointer data)
{
/*
* Estas teclas corresponden al panel numerico
* situado en la parte superior
*/
if ((event->keyval == GDK_0) || (event->keyval == GDK_1))
{
return FALSE;
}
/*
* Estas teclas corresponden al panel numerico
* situado a la derecha
*/
if ((event->keyval == GDK_KP_0) || (event->keyval == GDK_KP_1))
{
return FALSE;
}
/* Permitimos borrar */
if ((event->keyval == GDK_BackSpace) || (event->keyval == GDK_Delete))
{
return FALSE;
}
/* Permitimos algunas teclas especiales de desplazamiento… */
if ((event->keyval == GDK_Home) || (event->keyval == GDK_End))
{
return FALSE;
}
if ((event->keyval == GDK_Left) || (event->keyval == GDK_Right))
{
return FALSE;
}
return TRUE;
}
Mas Informacion: http://developer.gnome.org