/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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; }
/** * 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); } } }
/** * 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); } }