[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: generating keyboard events



Ok so I've worked on it a little more but still no luck. Does anyone
have a working example they can point to? Thanks.

test()
{
gint n = 0;
GdkKeymapKey **keys = new GdkKeymapKey*[100];
			
// generate press event
GdkEvent *event = new GdkEvent();
event->type = GDK_KEY_PRESS;
			
// init any fields
GdkEventAny *tmp = (GdkEventAny*)event;
tmp->type = GDK_KEY_PRESS;
tmp->window = gdk_get_default_root_window();
tmp->send_event = FALSE;
			
GdkEventKey *tmpkey = (GdkEventKey*)event;
tmpkey->type = GDK_KEY_PRESS;
tmpkey->window = tmp->window;
tmpkey->send_event = FALSE;
tmpkey->time = GDK_CURRENT_TIME;
tmpkey->state = 0;
tmpkey->keyval = GDK_KP_Enter;
tmpkey->length = 0;
tmpkey->string = NULL;
			
if( gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), 
					GDK_KP_Enter, keys, &n ) )
{
	tmpkey->hardware_keycode = keys[0]->keycode;
	tmpkey->group = keys[0]->group;
}
else // failed - no combination to get that.
{ 
	delete event;
	g_free(keys);
	return;
}

// post our event
gdk_event_put(event);
gdk_flush(); // don't know if need this, didn't make any difference.
			
//setup release
event->type = GDK_KEY_RELEASE;
tmp->type = GDK_KEY_RELEASE;
tmpkey->type = GDK_KEY_RELEASE;
tmpkey->state = GDK_RELEASE_MASK;
			
// post our event
gdk_event_put(event);
gdk_flush();
			
delete event;
g_free(keys);
}
		

On Sat, 2003-11-01 at 19:38, Peter Gasper wrote:
> I'm trying to generate keyboard events using gdk_event_put() in gtkmm.
> The following code compiles and runs but does not generate any events.
> Does anyone know of some example code that does this or what am I doing
> wrong? 
> 
> Also, is there a good way to find the hardware_keycodes for a given key
> or keyval?
> 
> Thanks.
> 
> 
> // generate press event
> GdkEvent *event = new GdkEvent();
> event->type = GDK_KEY_PRESS;
> 
> // init any fields
> GdkEventAny *tmp = (GdkEventAny*)event;
> tmp->type = GDK_KEY_PRESS;
> tmp->window = gdk_get_default_root_window();
> tmp->send_event = FALSE;
> 
> GdkEventKey *tmpkey = (GdkEventKey*)event;
> tmpkey->type = GDK_KEY_PRESS;
> tmpkey->window = gdk_get_default_root_window();
> tmpkey->send_event = FALSE;
> tmpkey->time = GDK_CURRENT_TIME;
> tmpkey->state = 0;
> tmpkey->keyval = GDK_Left;
> tmpkey->length = 0;
> tmpkey->string = NULL;
> tmpkey->hardware_keycode = 102; // hardcoded arrow key
> tmpkey->group = 0;
> 
> // post our event
> gdk_event_put(event);
> 
> //setup key release
> event->type = GDK_KEY_RELEASE;
> tmp->type = GDK_KEY_RELEASE;
> tmpkey->type = GDK_KEY_RELEASE;
> tmpkey->state = GDK_RELEASE_MASK;
> 
> // post our event
> gdk_event_put(event);
> 
> delete event;
-- 
Peter Gasper <pgasper@designadvantage.com>




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]