diff --git a/README.md b/README.md index 03450ff..b043cd9 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ On MacOS, you may also be prompted to install the Apple Command Line Developer T - __7 key__: In Joint Fullscreen mode, changes the distance from the upper screen between 0, 1/2 Max and Max. - __I key__: Toggles BFI (Motion Blur Reduction) on/off. Best used on 120+hz monitors. DO NOT USE THIS IF YOU'RE AT RISK OF SEIZURES!!! - __Z key__: Decreases the Menu Scaling multiplier by 0.1. 0.3 is the minimum. -- __X key__: Increases the Menu Scaling multiplier by 0.1. 5.0 is the maximum. +- __X key__: Increases the Menu Scaling multiplier by 0.1. 10.0 is the maximum. - __R key__: Toggles extra padding on/off. It can be used to account for windows with rounded corners. - __2 key__: Changes the Pixel Aspect Ratio (PAR) for the top screen. - __3 key__: Changes the Pixel Aspect Ratio (PAR) for the bottom screen. diff --git a/include/frontend.hpp b/include/frontend.hpp index d9733e5..f35161a 100755 --- a/include/frontend.hpp +++ b/include/frontend.hpp @@ -67,6 +67,10 @@ private: std::mutex* events_access; std::chrono::time_point last_mouse_action_time; std::chrono::time_point last_window_creation_time; + std::chrono::time_point start_touch_action_time; + bool active_touch; + bool consumed_touch_long_press; + const float touch_long_press_timer = 1.5f; const float mouse_timeout = 5.0f; const float v_sync_timeout = 5.0f; CurrMenuType curr_menu = DEFAULT_MENU_TYPE; diff --git a/source/WindowScreen.cpp b/source/WindowScreen.cpp index 44d7442..51103e5 100755 --- a/source/WindowScreen.cpp +++ b/source/WindowScreen.cpp @@ -41,6 +41,9 @@ WindowScreen::WindowScreen(ScreenType stype, CaptureStatus* capture_status, Disp this->audio_data = audio_data; this->last_window_creation_time = std::chrono::high_resolution_clock::now(); this->last_mouse_action_time = std::chrono::high_resolution_clock::now(); + this->start_touch_action_time = std::chrono::high_resolution_clock::now(); + this->active_touch = false; + this->consumed_touch_long_press = false; WindowScreen::reset_operations(future_operations); this->done_display = true; this->saved_buf = new VideoOutputData; @@ -139,8 +142,8 @@ bool WindowScreen::common_poll(SFEvent &event_data) { case 'x': old_scaling = this->m_info.menu_scaling_factor; this->m_info.menu_scaling_factor += 0.1; - if(this->m_info.menu_scaling_factor > 4.95) - this->m_info.menu_scaling_factor = 5.0; + if(this->m_info.menu_scaling_factor > 9.95) + this->m_info.menu_scaling_factor = 10.0; if(old_scaling != this->m_info.menu_scaling_factor) { this->print_notification_float("Menu Scaling", this->m_info.menu_scaling_factor, 1); } @@ -781,8 +784,28 @@ void WindowScreen::poll_window() { } events_queue.emplace(event.type, event.key.code, event.text.unicode, joystickId, event.joystickButton.button, event.joystickMove.axis, 0.0, event.mouseButton.button, mouse_x, mouse_y); } - if(this->m_win.hasFocus()) + if(this->m_win.hasFocus()) { + if(sf::Touch::isDown(0)) { + sf::Vector2i touch_pos = sf::Touch::getPosition(0, this->m_win); + if(!this->active_touch) { + this->start_touch_action_time = std::chrono::high_resolution_clock::now(); + this->active_touch = true; + } + else { + auto curr_time = std::chrono::high_resolution_clock::now(); + const std::chrono::duration diff = curr_time - this->start_touch_action_time; + if(diff.count() > this->touch_long_press_timer) { + events_queue.emplace(sf::Event::MouseButtonPressed, sf::Keyboard::Backspace, 0, 0, 0, sf::Joystick::Axis::X, 0.0, sf::Mouse::Right, touch_pos.x, touch_pos.y); + this->start_touch_action_time = std::chrono::high_resolution_clock::now(); + } + } + events_queue.emplace(sf::Event::MouseButtonPressed, sf::Keyboard::Backspace, 0, 0, 0, sf::Joystick::Axis::X, 0.0, sf::Mouse::Left, touch_pos.x, touch_pos.y); + + } + else + this->active_touch = false; joystick_axis_poll(this->events_queue); + } this->events_access->unlock(); } } diff --git a/source/frontend.cpp b/source/frontend.cpp index fab8955..629db44 100755 --- a/source/frontend.cpp +++ b/source/frontend.cpp @@ -117,8 +117,8 @@ bool load_screen_info(std::string key, std::string value, std::string base, Scre info.menu_scaling_factor = std::stod(value); if(info.menu_scaling_factor < 0.3) info.menu_scaling_factor = 0.3; - if(info.menu_scaling_factor > 5.0) - info.menu_scaling_factor = 5.0; + if(info.menu_scaling_factor > 10.0) + info.menu_scaling_factor = 10.0; return true; } if(key == (base + "rounded_corners_fix")) { @@ -227,7 +227,7 @@ JoystickAction get_joystick_action(uint32_t joystickId, uint32_t joy_button) { return JOY_ACTION_CONFIRM; if((joy_button == 2) || (joy_button == 3)) return JOY_ACTION_NEGATE; - if((joy_button == 4) || (joy_button == 5)) + if((joy_button == 6) || (joy_button == 7)) return JOY_ACTION_MENU; return JOY_ACTION_NONE; }