void releasebutton(short code) { int kbcode = AKEY_NONE, temp_ui = -1; if(ui_is_active) release_key(kbcode); else { if(code == joykey_map[get_screen_mode()][0]) stick0 |= 1; else if(code == joykey_map[get_screen_mode()][1]) stick0 |= 2; else if(code == joykey_map[get_screen_mode()][2]) stick0 |= 4; else if(code == joykey_map[get_screen_mode()][3]) stick0 |= 8; else if(code == klist.vkA || code == klist.vkB || ((code == '4' || code == '6') && issmartphone)) trig0 = 1; else if(code == klist.vkC) if (kbui_timerset) { KillTimer(hWndMain, 1); kbui_timerset = FALSE; set_screen_mode(0); kbcode = AKEY_UI; push_key(kbcode); ui_clearkey = TRUE; return; } } release_key(kbcode); // always release or the ui gets stuck }
void releasebutton(short code) { int kbcode; if(ui_is_active) { kbcode = AKEY_NONE; if(code == klist.vkUp) kbcode = AKEY_UP; else if(code == klist.vkDown) kbcode = AKEY_DOWN; else if(code == klist.vkLeft) kbcode = AKEY_LEFT; else if(code == klist.vkRight) kbcode = AKEY_RIGHT; else if(code == klist.vkStart) kbcode = AKEY_TAB; else if(code == klist.vkA) kbcode = AKEY_SPACE; else if(code == klist.vkB) kbcode = AKEY_RETURN; else if(code == klist.vkC) kbcode = AKEY_ESCAPE; release_key(kbcode); } else { if(code == joykey_map[get_screen_mode()][0]) stick0 |= 1; else if(code == joykey_map[get_screen_mode()][1]) stick0 |= 2; else if(code == joykey_map[get_screen_mode()][2]) stick0 |= 4; else if(code == joykey_map[get_screen_mode()][3]) stick0 |= 8; else if(code == klist.vkA || code == klist.vkB) trig0 = 1; else if(code == klist.vkC) kbcode = AKEY_UI; else for(int i=0; i<sizeof(kbd_translation)/sizeof(kbd_translation[0]); i++) if(code == kbd_translation[i].winKey) { kbcode = kbd_translation[i].aKey; break; } if(kbcode != AKEY_NONE) release_key(kbcode); } }
void jz47_auto_select(int w,int h) { jz47_soc_set_direct(1); // if(get_screen_height() * get_screen_width() <= 480 * 272 * 2) { display_mode |= DISP_DIRECT; //display_mode |= DISP_16BIT; //test } //else { //display_mode |= DISP_16BIT; } switch(get_screen_mode()) { case DISP_LCD_OUT: display_mode |= LCD_OUT; break; case DISP_TV_OUT: display_mode |= TV_OUT; break; } printf("diplay_mode = %x\n",display_mode); }
// LP: added whether a savegame is being restored (skip Pfhortran init if that's the case) bool entering_map(bool restoring_saved) { bool success= true; /* if any active monsters think they have paths, we'll make them reconsider */ initialize_monsters_for_new_level(); /* and since no monsters have paths, we should make sure no paths think they have monsters */ reset_paths(); /* mark our shape collections for loading and load them */ mark_environment_collections(static_world->environment_code, true); mark_all_monster_collections(true); mark_player_collections(true); mark_map_collections(true); MarkLuaCollections(true); MarkLuaHUDCollections(true); #ifdef SDL load_collections(true, get_screen_mode()->acceleration != _no_acceleration); #else load_collections(true, true); #endif load_all_monster_sounds(); load_all_game_sounds(static_world->environment_code); #if !defined(DISABLE_NETWORKING) /* tell the keyboard controller to start recording keyboard flags */ if (game_is_networked) success= NetSync(); /* make sure everybody is ready */ #endif // !defined(DISABLE_NETWORKING) /* make sure nobodyÕs holding a weapon illegal in the new environment */ check_player_weapons_for_environment_change(); #if !defined(DISABLE_NETWORKING) if (dynamic_world->player_count>1 && !restoring_saved) initialize_net_game(); #endif // !defined(DISABLE_NETWORKING) randomize_scenery_shapes(); // reset_action_queues(); //¦¦ // sync_heartbeat_count(); // set_keyboard_controller_status(true); L_Call_Init(restoring_saved); #if !defined(DISABLE_NETWORKING) NetSetChatCallbacks(InGameChatCallbacks::instance()); #endif // !defined(DISABLE_NETWORKING) // Zero out fades *AND* any inadvertant fades from script start... stop_fade(); set_fade_effect(NONE); if (!success) leaving_map(); return success; }
void HUD_Lua_Class::start_draw(void) { alephone::Screen *scr = alephone::Screen::instance(); m_wr = scr->window_rect(); m_opengl = (get_screen_mode()->acceleration != _no_acceleration); m_masking_mode = _mask_disabled; #ifdef HAVE_OPENGL if (m_opengl) { glPushAttrib(GL_ALL_ATTRIB_BITS); glEnable(GL_TEXTURE_2D); glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); glDisable(GL_ALPHA_TEST); glDisable(GL_STENCIL_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_FOG); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glTranslatef(m_wr.x, m_wr.y, 0.0); m_surface = NULL; } else #endif { if (m_surface && (m_surface->w != SDL_GetVideoSurface()->w || m_surface->h != SDL_GetVideoSurface()->h)) { SDL_FreeSurface(m_surface); m_surface = NULL; } if (!m_surface) { m_surface = SDL_DisplayFormatAlpha(SDL_GetVideoSurface()); SDL_SetAlpha(m_surface, SDL_SRCALPHA, 0); } SDL_SetClipRect(m_surface, NULL); SDL_FillRect(m_surface, NULL, SDL_MapRGBA(m_surface->format, 0, 0, 0, 0)); SDL_SetAlpha(SDL_GetVideoSurface(), SDL_SRCALPHA, 0xff); } m_drawing = true; clear_mask(); }
short get_keypress(short x, short y) { int offset; int i; if(currentKeyboardMode == 4 && get_screen_mode()) return AKEY_NONE; offset = x + (y/16)*240; if(offset < 0) return AKEY_NONE; for(i=1; i<keys; i++) if(offset < kbd_struct[i].offset) return kbd_struct[i-1].key; return AKEY_NONE; }
// Indicates whether to fix the horizontal or the vertical field-of-view angle // (default: fix vertical FOV angle) bool View_FOV_FixHorizontalNotVertical() { return get_screen_mode()->fix_h_not_v; }
static void handle_game_key(const SDL_Event &event) { SDL_Keycode key = event.key.keysym.sym; SDL_Scancode sc = event.key.keysym.scancode; bool changed_screen_mode = false; bool changed_prefs = false; if (!game_is_networked && (event.key.keysym.mod & KMOD_CTRL) && CheatsActive) { int type_of_cheat = process_keyword_key(key); if (type_of_cheat != NONE) handle_keyword(type_of_cheat); } if (Console::instance()->input_active()) { switch(key) { case SDLK_RETURN: case SDLK_KP_ENTER: Console::instance()->enter(); break; case SDLK_ESCAPE: Console::instance()->abort(); break; case SDLK_BACKSPACE: Console::instance()->backspace(); break; case SDLK_DELETE: Console::instance()->del(); break; case SDLK_UP: Console::instance()->up_arrow(); break; case SDLK_DOWN: Console::instance()->down_arrow(); break; case SDLK_LEFT: Console::instance()->left_arrow(); break; case SDLK_RIGHT: Console::instance()->right_arrow(); break; case SDLK_HOME: Console::instance()->line_home(); break; case SDLK_END: Console::instance()->line_end(); break; case SDLK_a: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->line_home(); break; case SDLK_b: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->left_arrow(); break; case SDLK_d: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->del(); break; case SDLK_e: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->line_end(); break; case SDLK_f: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->right_arrow(); break; case SDLK_h: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->backspace(); break; case SDLK_k: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->forward_clear(); break; case SDLK_n: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->down_arrow(); break; case SDLK_p: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->up_arrow(); break; case SDLK_t: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->transpose(); break; case SDLK_u: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->clear(); break; case SDLK_w: if (event.key.keysym.mod & KMOD_CTRL) Console::instance()->delete_word(); break; } } else { if (sc == SDL_SCANCODE_ESCAPE) // (ZZZ) Quit gesture (now safer) { if(!player_controlling_game()) do_menu_item_command(mGame, iQuitGame, false); else { if(get_ticks_since_local_player_in_terminal() > 1 * TICKS_PER_SECOND) { if(!game_is_networked) { do_menu_item_command(mGame, iQuitGame, false); } else { #if defined(__APPLE__) && defined(__MACH__) screen_printf("If you wish to quit, press Command-Q"); #else screen_printf("If you wish to quit, press Alt+Q."); #endif } } } } else if (input_preferences->shell_key_bindings[_key_volume_up].count(sc)) { changed_prefs = SoundManager::instance()->AdjustVolumeUp(Sound_AdjustVolume()); } else if (input_preferences->shell_key_bindings[_key_volume_down].count(sc)) { changed_prefs = SoundManager::instance()->AdjustVolumeDown(Sound_AdjustVolume()); } else if (input_preferences->shell_key_bindings[_key_switch_view].count(sc)) { walk_player_list(); render_screen(NONE); } else if (input_preferences->shell_key_bindings[_key_zoom_in].count(sc)) { if (zoom_overhead_map_in()) PlayInterfaceButtonSound(Sound_ButtonSuccess()); else PlayInterfaceButtonSound(Sound_ButtonFailure()); } else if (input_preferences->shell_key_bindings[_key_zoom_out].count(sc)) { if (zoom_overhead_map_out()) PlayInterfaceButtonSound(Sound_ButtonSuccess()); else PlayInterfaceButtonSound(Sound_ButtonFailure()); } else if (input_preferences->shell_key_bindings[_key_inventory_left].count(sc)) { if (player_controlling_game()) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); scroll_inventory(-1); } else decrement_replay_speed(); } else if (input_preferences->shell_key_bindings[_key_inventory_right].count(sc)) { if (player_controlling_game()) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); scroll_inventory(1); } else increment_replay_speed(); } else if (input_preferences->shell_key_bindings[_key_toggle_fps].count(sc)) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); extern bool displaying_fps; displaying_fps = !displaying_fps; } else if (input_preferences->shell_key_bindings[_key_activate_console].count(sc)) { if (game_is_networked) { #if !defined(DISABLE_NETWORKING) Console::instance()->activate_input(InGameChatCallbacks::SendChatMessage, InGameChatCallbacks::prompt()); #endif PlayInterfaceButtonSound(Sound_ButtonSuccess()); } else if (Console::instance()->use_lua_console()) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); Console::instance()->activate_input(ExecuteLuaString, ">"); } else { PlayInterfaceButtonSound(Sound_ButtonFailure()); } } else if (input_preferences->shell_key_bindings[_key_show_scores].count(sc)) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); { extern bool ShowScores; ShowScores = !ShowScores; } } else if (sc == SDL_SCANCODE_F1) // Decrease screen size { if (!graphics_preferences->screen_mode.hud) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); graphics_preferences->screen_mode.hud = true; changed_screen_mode = changed_prefs = true; } else { int mode = alephone::Screen::instance()->FindMode(get_screen_mode()->width, get_screen_mode()->height); if (mode < alephone::Screen::instance()->GetModes().size() - 1) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); graphics_preferences->screen_mode.width = alephone::Screen::instance()->ModeWidth(mode + 1); graphics_preferences->screen_mode.height = alephone::Screen::instance()->ModeHeight(mode + 1); graphics_preferences->screen_mode.auto_resolution = false; graphics_preferences->screen_mode.hud = false; changed_screen_mode = changed_prefs = true; } else PlayInterfaceButtonSound(Sound_ButtonFailure()); } } else if (sc == SDL_SCANCODE_F2) // Increase screen size { if (graphics_preferences->screen_mode.hud) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); graphics_preferences->screen_mode.hud = false; changed_screen_mode = changed_prefs = true; } else { int mode = alephone::Screen::instance()->FindMode(get_screen_mode()->width, get_screen_mode()->height); int automode = get_screen_mode()->fullscreen ? 0 : 1; if (mode > automode) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); graphics_preferences->screen_mode.width = alephone::Screen::instance()->ModeWidth(mode - 1); graphics_preferences->screen_mode.height = alephone::Screen::instance()->ModeHeight(mode - 1); if ((mode - 1) == automode) graphics_preferences->screen_mode.auto_resolution = true; graphics_preferences->screen_mode.hud = true; changed_screen_mode = changed_prefs = true; } else PlayInterfaceButtonSound(Sound_ButtonFailure()); } } else if (sc == SDL_SCANCODE_F3) // Resolution toggle { if (!OGL_IsActive()) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); graphics_preferences->screen_mode.high_resolution = !graphics_preferences->screen_mode.high_resolution; changed_screen_mode = changed_prefs = true; } else PlayInterfaceButtonSound(Sound_ButtonFailure()); } else if (sc == SDL_SCANCODE_F4) // Reset OpenGL textures { #ifdef HAVE_OPENGL if (OGL_IsActive()) { // Play the button sound in advance to get the full effect of the sound PlayInterfaceButtonSound(Sound_OGL_Reset()); OGL_ResetTextures(); } else #endif PlayInterfaceButtonSound(Sound_ButtonInoperative()); } else if (sc == SDL_SCANCODE_F5) // Make the chase cam switch sides { if (ChaseCam_IsActive()) PlayInterfaceButtonSound(Sound_ButtonSuccess()); else PlayInterfaceButtonSound(Sound_ButtonInoperative()); ChaseCam_SwitchSides(); } else if (sc == SDL_SCANCODE_F6) // Toggle the chase cam { PlayInterfaceButtonSound(Sound_ButtonSuccess()); ChaseCam_SetActive(!ChaseCam_IsActive()); } else if (sc == SDL_SCANCODE_F7) // Toggle tunnel vision { PlayInterfaceButtonSound(Sound_ButtonSuccess()); SetTunnelVision(!GetTunnelVision()); } else if (sc == SDL_SCANCODE_F8) // Toggle the crosshairs { PlayInterfaceButtonSound(Sound_ButtonSuccess()); player_preferences->crosshairs_active = !player_preferences->crosshairs_active; Crosshairs_SetActive(player_preferences->crosshairs_active); changed_prefs = true; } else if (sc == SDL_SCANCODE_F9) // Screen dump { dump_screen(); } else if (sc == SDL_SCANCODE_F10) // Toggle the position display { PlayInterfaceButtonSound(Sound_ButtonSuccess()); { extern bool ShowPosition; ShowPosition = !ShowPosition; } } else if (sc == SDL_SCANCODE_F11) // Decrease gamma level { if (graphics_preferences->screen_mode.gamma_level) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); graphics_preferences->screen_mode.gamma_level--; change_gamma_level(graphics_preferences->screen_mode.gamma_level); changed_prefs = true; } else PlayInterfaceButtonSound(Sound_ButtonFailure()); } else if (sc == SDL_SCANCODE_F12) // Increase gamma level { if (graphics_preferences->screen_mode.gamma_level < NUMBER_OF_GAMMA_LEVELS - 1) { PlayInterfaceButtonSound(Sound_ButtonSuccess()); graphics_preferences->screen_mode.gamma_level++; change_gamma_level(graphics_preferences->screen_mode.gamma_level); changed_prefs = true; } else PlayInterfaceButtonSound(Sound_ButtonFailure()); } else { if (get_game_controller() == _demo) set_game_state(_close_game); } } if (changed_screen_mode) { screen_mode_data temp_screen_mode = graphics_preferences->screen_mode; temp_screen_mode.fullscreen = get_screen_mode()->fullscreen; change_screen_mode(&temp_screen_mode, true); render_screen(0); } if (changed_prefs) write_preferences(); }
void untapscreen(short x, short y) { int kbcode; stylus_down = 0; /* On-screen joystick */ if(virtual_joystick && !ui_is_active && currentKeyboardMode == 4 && y < 240) { stick0 = 0xff; trig0 = 1; return; } translate_kbd(&x, &y); /* Special tricks */ /* In landscape - show keyboard if clicked bottom right corner */ if(get_screen_mode() && currentKeyboardMode == 4) { if(x > 300 && y > 220 && !ui_is_active) currentKeyboardMode = 3; else if(ui_is_active) set_screen_mode(0); return; } /* In landscape -- move keyboard if clicked outside of it */ int newKeyboardMode = currentKeyboardMode; if(get_screen_mode() && currentKeyboardMode != 4) { if(x<0 || x>=240) newKeyboardMode = newKeyboardMode ^ 1; if(y<0 || y>=80) newKeyboardMode = newKeyboardMode ^ 2; } if(newKeyboardMode != currentKeyboardMode) { currentKeyboardMode = newKeyboardMode; return; } kbcode = get_keypress(x, y); /* Special keys */ switch(kbcode) { case KBD_ROTATE: if(!ui_is_active) set_screen_mode(get_screen_mode()+1); return; case KBD_NEGATE: currentKeyboardColor = 1-currentKeyboardColor; return; case KBD_HIDE: if(get_screen_mode()) currentKeyboardMode = 4; return; } /* Special translation to make on-screen UI easier to use */ if(ui_is_active) { if(machine_type == MACHINE_5200) { switch(kbcode) { case 0x3d: /* 2 */ kbcode = AKEY_UP; break; case 0x2d: /* 8 */ kbcode = AKEY_DOWN; break; case 0x37: /* 4 */ kbcode = AKEY_LEFT; break; case 0x33: /* 6 */ kbcode = AKEY_RIGHT; break; case 0x39: /* Start */ kbcode = AKEY_RETURN; break; case 0x27: /* * */ kbcode = AKEY_ESCAPE; break; case 0x31: /* Pause */ kbcode = AKEY_TAB; break; case 0x23: /* # */ kbcode = AKEY_SPACE; break; } } else { switch(kbcode) { case AKEY_MINUS: kbcode = AKEY_UP; break; case AKEY_EQUAL: kbcode = AKEY_DOWN; break; case AKEY_PLUS: kbcode = AKEY_LEFT; break; case AKEY_ASTERISK: kbcode = AKEY_RIGHT; break; } } } release_key(kbcode); }
void tapscreen(short x, short y) { short kbcode; stylus_down = 1; /* On-screen joystick */ if(virtual_joystick && !ui_is_active && currentKeyboardMode == 4 && y < 240) { stick0 = 0xff; trig0 = 1; if(y < 90) /* up */ stick0 &= ~1; if(y >= 150) /* down */ stick0 &= ~2; if(x < 120) /* left */ stick0 &= ~4; if(x >= 200) /* right */ stick0 &= ~8; if(x >= 60 && x < 260 && y >= 45 && y < 195) trig0 = 0; return; } translate_kbd(&x, &y); /* In landscape - show keyboard if clicked bottom right corner */ if(get_screen_mode() && currentKeyboardMode == 4 && x > 300 && y > 220) return; kbcode = get_keypress(x, y); /* Special keys */ switch(kbcode) { case KBD_ROTATE: case KBD_NEGATE: case KBD_HIDE: return; } /* The way current UI works, it is not compatible with keyboard implementation in landscape mode */ if(kbcode == AKEY_UI) set_screen_mode(0); /* Special translation to make on-screen UI easier to use */ if(ui_is_active) { if(machine_type == MACHINE_5200) { switch(kbcode) { case 0x3d: /* 2 */ kbcode = AKEY_UP; break; case 0x2d: /* 8 */ kbcode = AKEY_DOWN; break; case 0x37: /* 4 */ kbcode = AKEY_LEFT; break; case 0x33: /* 6 */ kbcode = AKEY_RIGHT; break; case 0x39: /* Start */ kbcode = AKEY_RETURN; break; case 0x27: /* * */ kbcode = AKEY_ESCAPE; break; case 0x31: /* Pause */ kbcode = AKEY_TAB; break; case 0x23: /* # */ kbcode = AKEY_SPACE; break; } } else { switch(kbcode) { case AKEY_MINUS: kbcode = AKEY_UP; break; case AKEY_EQUAL: kbcode = AKEY_DOWN; break; case AKEY_PLUS: kbcode = AKEY_LEFT; break; case AKEY_ASTERISK: kbcode = AKEY_RIGHT; break; } } } push_key(kbcode); }
void hitbutton(short code) { int kbcode = AKEY_NONE; if(ui_is_active) { trig0 = 1; stick0 = 0xff; if(code == joykey_map[get_screen_mode()][0]) kbcode = AKEY_UP; else if(code == joykey_map[get_screen_mode()][1]) kbcode = AKEY_DOWN; else if(code == joykey_map[get_screen_mode()][2]) kbcode = AKEY_LEFT; else if(code == joykey_map[get_screen_mode()][3]) kbcode = AKEY_RIGHT; else if(code == klist.vkStart && !issmartphone) kbcode = AKEY_BACKSPACE; else if(code == klist.vkA) kbcode = AKEY_SPACE; else if(code == klist.vkB) kbcode = AKEY_RETURN; else if(code == klist.vkC) kbcode = AKEY_ESCAPE; else for(int i=0; i<sizeof(kbd_translation)/sizeof(kbd_translation[0]); i++) if(code == kbd_translation[i].winKey) { kbcode = kbd_translation[i].aKey; break; } } else { if(code == joykey_map[get_screen_mode()][0]) stick0 &= ~1; else if(code == joykey_map[get_screen_mode()][1]) stick0 &= ~2; else if(code == joykey_map[get_screen_mode()][2]) stick0 &= ~4; else if(code == joykey_map[get_screen_mode()][3]) stick0 &= ~8; else if(code == klist.vkA || code == klist.vkB || ((code == '4' || code == '6') && issmartphone)) trig0 = 0; else if(code == klist.vkC) { if (!kbui_timerset) { SetTimer(hWndMain, 1, 1000, NULL); kbui_timerset = TRUE; } } else if ((code == VK_F3) && (issmartphone)) set_screen_mode(get_screen_mode()+1); else for(int i=0; i<sizeof(kbd_translation)/sizeof(kbd_translation[0]); i++) if(code == kbd_translation[i].winKey) { kbcode = kbd_translation[i].aKey; break; } } if(kbcode != AKEY_NONE) push_key(kbcode); }
void hitbutton(short code) { int kbcode; if(ui_is_active) { trig0 = 1; stick0 = 0xff; kbcode = AKEY_NONE; if(code == joykey_map[get_screen_mode()][0]) kbcode = AKEY_UP; else if(code == joykey_map[get_screen_mode()][1]) kbcode = AKEY_DOWN; else if(code == joykey_map[get_screen_mode()][2]) kbcode = AKEY_LEFT; else if(code == joykey_map[get_screen_mode()][3]) kbcode = AKEY_RIGHT; else if(code == klist.vkStart) kbcode = AKEY_TAB; else if(code == klist.vkA) kbcode = AKEY_SPACE; else if(code == klist.vkB) kbcode = AKEY_RETURN; else if(code == klist.vkC) kbcode = AKEY_ESCAPE; push_key(kbcode); } else { kbcode = AKEY_NONE; if(code == joykey_map[get_screen_mode()][0]) stick0 &= ~1; else if(code == joykey_map[get_screen_mode()][1]) stick0 &= ~2; else if(code == joykey_map[get_screen_mode()][2]) stick0 &= ~4; else if(code == joykey_map[get_screen_mode()][3]) stick0 &= ~8; else if(code == klist.vkA || code == klist.vkB) trig0 = 0; else if(code == klist.vkC) kbcode = AKEY_UI; else for(int i=0; i<sizeof(kbd_translation)/sizeof(kbd_translation[0]); i++) if(code == kbd_translation[i].winKey) { kbcode = kbd_translation[i].aKey; break; } if(kbcode != AKEY_NONE) push_key(kbcode); } /* The way current UI works, it is not compatible with keyboard implementation in landscape mode */ if(kbcode == AKEY_UI) set_screen_mode(0); }