예제 #1
0
/**
 * User released key
 */
void Keymap_KeyUp(SDL_Keysym *sdlkey)
{
    Uint8 next_mod, next_key;

    if (ShortCut_CheckKeys(sdlkey->mod, sdlkey->sym, 0))
		return;
    
    if (ConfigureParams.Keyboard.nKeymapType==KEYMAP_SYMBOLIC) {
        next_key = Keymap_GetKeyFromSymbol(sdlkey->sym);
        next_mod = Keymap_Keyup_GetModFromSymbol(sdlkey->sym);
    } else {
        next_key = Keymap_GetKeyFromScancode(sdlkey->scancode);
        next_mod = Keymap_Keyup_GetModFromScancode(sdlkey->scancode);
    }
    
    Log_Printf(LOG_KEYMAP_LEVEL, "[Keymap] NeXT Keycode: $%02x, Modifiers: $%02x\n", next_key, next_mod);
    
    kms_keyup(next_mod, next_key);
}
예제 #2
0
파일: keymap.c 프로젝트: lewellyn/previous
/**
 * User released key
 */
void Keymap_KeyUp(SDL_Keysym *sdlkey)
{
    Log_Printf(LOG_WARN, "Key released: %s\n", SDL_GetKeyName(sdlkey->sym));
    
    int symkey = sdlkey->sym;
	int modkey = sdlkey->mod;
    if (ShortCut_CheckKeys(modkey, symkey, 0))
		return;
    
    Uint8 keycode = translate_key(symkey);
#if NEW_MOD_HANDLING
    Uint8 modifiers = translate_modifiers(modkey);
#else
    Uint8 modifiers = modifier_keyup(symkey);
#endif
    
    Log_Printf(LOG_WARN, "Keycode: $%02x, Modkeys: $%02x\n", keycode, modifiers);
    
    kms_keyup(modifiers, keycode);
}
예제 #3
0
/**
 * User pressed key down
 */
void Keymap_KeyDown(SDL_Keysym *sdlkey)
{
    Uint8 next_mod, next_key;

    if (ShortCut_CheckKeys(sdlkey->mod, sdlkey->sym, 1)) { // Check if we pressed a shortcut
        ShortCut_ActKey();
        return;
    }
    
    if (ConfigureParams.Keyboard.nKeymapType==KEYMAP_SYMBOLIC) {
        next_key = Keymap_GetKeyFromSymbol(sdlkey->sym);
        next_mod = Keymap_Keydown_GetModFromSymbol(sdlkey->sym);
    } else {
        next_key = Keymap_GetKeyFromScancode(sdlkey->scancode);
        next_mod = Keymap_Keydown_GetModFromScancode(sdlkey->scancode);
    }
    
    Log_Printf(LOG_KEYMAP_LEVEL, "[Keymap] NeXT Keycode: $%02x, Modifiers: $%02x\n", next_key, next_mod);
    
    kms_keydown(next_mod, next_key);
}
예제 #4
0
파일: keymap.c 프로젝트: lewellyn/previous
/**
 * User pressed key down
 */
void Keymap_KeyDown(SDL_Keysym *sdlkey)
{
    Log_Printf(LOG_WARN, "Key pressed: %s\n", SDL_GetKeyName(sdlkey->sym));
    
    int symkey = sdlkey->sym;
	int modkey = sdlkey->mod;
    if (ShortCut_CheckKeys(modkey, symkey, 1)) {// Check if we pressed a shortcut
        ShortCut_ActKey();
        return;
    }
    Uint8 keycode = translate_key(symkey);
#if NEW_MOD_HANDLING
    Uint8 modifiers = translate_modifiers(modkey);
#else
    Uint8 modifiers = modifier_keydown(symkey);
#endif
    
    Log_Printf(LOG_WARN, "Keycode: $%02x, Modifiers: $%02x\n", keycode, modifiers);
    
    kms_keydown(modifiers, keycode);
}
예제 #5
0
/**
 * User released key
 */
void Keymap_KeyUp(SDL_keysym *sdlkey)
{
	char STScanCode;
	int symkey = sdlkey->sym;
	int modkey = sdlkey->mod;

	/*fprintf(stderr, "keyup: sym=%i scan=%i mod=$%x\n",symkey, sdlkey->scancode, modkey);*/

	/* Ignore short-cut keys here */

	if (ShortCut_CheckKeys(modkey, symkey, 0))
		return;

	/* If using keyboard emulation, DON'T send keys to keyboard processor!!!
	 * Some games use keyboard as pause! */
	if (Joy_KeyUp(symkey, modkey))
		return;

	/* Handle special keys */
	if (symkey == SDLK_RALT || symkey == SDLK_LMETA || symkey == SDLK_RMETA
	        || symkey == SDLK_MODE || symkey == SDLK_NUMLOCK)
	{
		/* Ignore modifier keys that aren't passed to the ST */
		return;
	}

	/* Release key (only if was pressed) */
	if (Keyboard.KeyStates[symkey])
	{
		STScanCode = Keymap_RemapKeyToSTScanCode(sdlkey);
		if (STScanCode != (char)-1)
		{
			IKBD_PressSTKey(STScanCode, false);
		}
	}

	Keyboard.KeyStates[symkey] = false;
}
예제 #6
0
/**
 * User press key down
 */
void Keymap_KeyDown(SDL_keysym *sdlkey)
{
	uint8_t STScanCode;
	int symkey = sdlkey->sym;
	int modkey = sdlkey->mod;

	LOG_TRACE(TRACE_KEYMAP, "key down: sym=%i scan=%i mod=0x%x\n", symkey,
	          sdlkey->scancode, modkey);

	if (ShortCut_CheckKeys(modkey, symkey, 1))
		return;

	/* If using joystick emulation via keyboard, DON'T send keys to keyboard processor!!!
	 * Some games use keyboard as pause! */
	if (Joy_KeyDown(symkey, modkey))
		return;

	/* Handle special keys */
	if (symkey == SDLK_RALT || symkey == SDLK_LMETA || symkey == SDLK_RMETA
	        || symkey == SDLK_MODE || symkey == SDLK_NUMLOCK)
	{
		/* Ignore modifier keys that aren't passed to the ST */
		return;
	}

	STScanCode = Keymap_RemapKeyToSTScanCode(sdlkey);
	LOG_TRACE(TRACE_KEYMAP, "key map: sym=0x%x to ST-scan=0x%02x\n", symkey, STScanCode);
	if (STScanCode != (uint8_t)-1)
	{
		if (!Keyboard.KeyStates[STScanCode])
		{
			/* Set down */
			Keyboard.KeyStates[STScanCode] = true;
			IKBD_PressSTKey(STScanCode, true);
		}
	}
}
예제 #7
0
/**
 * User press key down
 */
void Keymap_KeyDown(SDL_keysym *sdlkey)
{
	bool bPreviousKeyState;
	char STScanCode;
	int symkey = sdlkey->sym;
	int modkey = sdlkey->mod;

	/*fprintf(stderr, "keydown: sym=%i scan=%i mod=$%x\n",symkey, sdlkey->scancode, modkey);*/

	if (ShortCut_CheckKeys(modkey, symkey, 1))
		return;

	/* If using joystick emulation via keyboard, DON'T send keys to keyboard processor!!!
	 * Some games use keyboard as pause! */
	if (Joy_KeyDown(symkey, modkey))
		return;

	/* Handle special keys */
	if (symkey == SDLK_RALT || symkey == SDLK_LMETA || symkey == SDLK_RMETA
	        || symkey == SDLK_MODE || symkey == SDLK_NUMLOCK)
	{
		/* Ignore modifier keys that aren't passed to the ST */
		return;
	}

	/* Set down */
	bPreviousKeyState = Keyboard.KeyStates[symkey];
	Keyboard.KeyStates[symkey] = true;

	STScanCode = Keymap_RemapKeyToSTScanCode(sdlkey);
	if (STScanCode != (char)-1)
	{
		if (!bPreviousKeyState)
			IKBD_PressSTKey(STScanCode, true);
	}
}