printf("brlapi_io_cb - keypress = %d\n", keypress);
static gboolean brlapi_io_cb (GIOChannel *ch,			      GIOCondition condition,			      void *data) {	unsigned int  keypress;	int region_num = -1;	int region_position = -1;	PyObject *result = NULL;	PyObject *args;	GList *l = brl_regions;	brl_region *r;	while (brlapi_readCommand (0, &keypress) == 1)	{		switch (keypress) {		case CMD_FWINRT:			if (scroll_region) {				brl_region_scroll (scroll_region, scroll_region->size);				refresh ();			}			else {				brl_scroll_virtual_display (brlapi_display_size_x);				refresh ();			}			break;		case CMD_FWINLT:			if (scroll_region) {				brl_region_scroll (scroll_region, -(scroll_region->size));				refresh ();			}			else {				brl_scroll_virtual_display (-brlapi_display_size_x);				refresh ();			}			break;		default:			if (!brl_callback)				break;			keypress -= 0X100;			keypress += physical_display_position;			region_num = 0;			while (l) {				r = (brl_region *) l->data;				if (keypress >= r->virtual_display_position &&				    keypress < r->virtual_display_position+r->size) {					region_position = keypress-r->virtual_display_position+r->display_start;					break;				}				region_num++;				l = l->next;			}			if (!l)				break;			args = Py_BuildValue ("ii", region_num, region_position);			result = PyObject_CallObject (brl_callback, args);			if (result)				Py_DECREF (result);			Py_DECREF (args);					}			break;	}	return TRUE;}