bool processKeyInput(SDLKey sdlkey, unsigned int unicode, bool pressed)
{
	//printf("processKeyInput: %d %s pressed %d", sdlkey, SDL_GetKeyName(sdlkey), pressed);
	int code = -int(sdlkey);
	if( unicode >= 0x80 )
		code = unicode;
	std::map<int, int>::const_iterator scan = keyMappings.find(code);
	if( scan == keyMappings.end() )
		return false;

	if( keys[scan->second] == pressed )
		return true;

	bool shift = keyMappingsShift.count(code) > 0 && !keys[KEY_LSHIFT];
	bool ctrl = keyMappingsCtrl.count(code) > 0 && !keys[KEY_LCTRL];
	bool alt = keyMappingsAlt.count(code) > 0 && !keys[KEY_LALT];

	if( pressed )
	{
		if( shift )
			keys[KEY_LSHIFT] = true;
		if( ctrl )
			keys[KEY_LCTRL] = true;
		if( alt )
			keys[KEY_LALT] = true;
		outputSendKeys();
	}

	keys[scan->second] = pressed;
	outputSendKeys();

	if( pressed )
	{
		if( shift )
			keys[KEY_LSHIFT] = false;
		if( ctrl )
			keys[KEY_LCTRL] = false;
		if( alt )
			keys[KEY_LALT] = false;
		outputSendKeys();
	}

	return true;
}
void processKeyInput(SDLKey key, int pressed)
{
	if( keys[key] == pressed )
	{
		//printf("processKeyInput: duplicate event %d %d", key, pressed);
		return;
	}
	//printf("processKeyInput: %d %d", key, pressed);
	keys[key] = pressed;
	outputSendKeys();
	//oldkeys[key] = keys[key];
}