mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-05-06 23:06:24 +09:00
Add controller hotkey to show/hide ui
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
namespace gsr {
|
||||
static constexpr int button_pressed = 1;
|
||||
static constexpr int options_button = 9;
|
||||
static constexpr int playstation_button = 10;
|
||||
static constexpr int axis_up_down = 7;
|
||||
static constexpr int axis_left_right = 6;
|
||||
@@ -123,6 +124,13 @@ namespace gsr {
|
||||
if(it != bound_actions_by_id.end())
|
||||
it->second("toggle_replay");
|
||||
}
|
||||
|
||||
if(toggle_show) {
|
||||
toggle_show = false;
|
||||
auto it = bound_actions_by_id.find("toggle_show");
|
||||
if(it != bound_actions_by_id.end())
|
||||
it->second("toggle_show");
|
||||
}
|
||||
}
|
||||
|
||||
void GlobalHotkeysJoystick::read_events() {
|
||||
@@ -180,12 +188,15 @@ namespace gsr {
|
||||
if((event.type & JS_EVENT_BUTTON) == JS_EVENT_BUTTON) {
|
||||
if(event.number == playstation_button)
|
||||
playstation_button_pressed = event.value == button_pressed;
|
||||
else if(event.number == options_button && event.value == button_pressed)
|
||||
toggle_show = true;
|
||||
} else if((event.type & JS_EVENT_AXIS) == JS_EVENT_AXIS && playstation_button_pressed) {
|
||||
const int trigger_threshold = 16383;
|
||||
const bool prev_up_pressed = up_pressed;
|
||||
const bool prev_down_pressed = down_pressed;
|
||||
const bool prev_left_pressed = left_pressed;
|
||||
const bool prev_right_pressed = right_pressed;
|
||||
|
||||
if(event.number == axis_up_down) {
|
||||
up_pressed = event.value <= -trigger_threshold;
|
||||
down_pressed = event.value >= trigger_threshold;
|
||||
|
||||
@@ -272,7 +272,7 @@ namespace gsr {
|
||||
static void bind_linux_hotkeys(GlobalHotkeysLinux *global_hotkeys, Overlay *overlay) {
|
||||
global_hotkeys->bind_key_press(
|
||||
config_hotkey_to_hotkey(overlay->get_config().main_config.show_hide_hotkey),
|
||||
"show_hide", [overlay](const std::string &id) {
|
||||
"toggle_show", [overlay](const std::string &id) {
|
||||
fprintf(stderr, "pressed %s\n", id.c_str());
|
||||
overlay->toggle_show();
|
||||
});
|
||||
@@ -334,6 +334,11 @@ namespace gsr {
|
||||
if(!global_hotkeys_js->start())
|
||||
fprintf(stderr, "Warning: failed to start joystick hotkeys\n");
|
||||
|
||||
global_hotkeys_js->bind_action("toggle_show", [overlay](const std::string &id) {
|
||||
fprintf(stderr, "pressed %s\n", id.c_str());
|
||||
overlay->toggle_show();
|
||||
});
|
||||
|
||||
global_hotkeys_js->bind_action("save_replay", [overlay](const std::string &id) {
|
||||
fprintf(stderr, "pressed %s\n", id.c_str());
|
||||
overlay->save_replay();
|
||||
|
||||
@@ -117,6 +117,9 @@ namespace gsr {
|
||||
if(!theme->ps4_home_texture.load_from_file((resources_path + "images/ps4_home.png").c_str(), mgl::Texture::LoadOptions{false, false, true}))
|
||||
goto error;
|
||||
|
||||
if(!theme->ps4_options_texture.load_from_file((resources_path + "images/ps4_options.png").c_str(), mgl::Texture::LoadOptions{false, false, true}))
|
||||
goto error;
|
||||
|
||||
if(!theme->ps4_dpad_up_texture.load_from_file((resources_path + "images/ps4_dpad_up.png").c_str(), mgl::Texture::LoadOptions{false, false, true}))
|
||||
goto error;
|
||||
|
||||
|
||||
@@ -363,6 +363,7 @@ namespace gsr {
|
||||
list_ptr->add_widget(std::make_unique<Label>(&get_theme().body_font, "Enable controller hotkeys?", get_color_theme().text_color));
|
||||
list_ptr->add_widget(create_enable_joystick_hotkeys_button());
|
||||
list_ptr->add_widget(std::make_unique<LineSeparator>(LineSeparator::Orientation::HORIZONTAL, subsection->get_inner_size().x));
|
||||
list_ptr->add_widget(create_joystick_hotkey_text(&get_theme().ps4_home_texture, &get_theme().ps4_options_texture, get_theme().body_font.get_character_size(), "to show/hide the UI"));
|
||||
list_ptr->add_widget(create_joystick_hotkey_text(&get_theme().ps4_home_texture, &get_theme().ps4_dpad_up_texture, get_theme().body_font.get_character_size(), "to take a screenshot"));
|
||||
list_ptr->add_widget(create_joystick_hotkey_text(&get_theme().ps4_home_texture, &get_theme().ps4_dpad_down_texture, get_theme().body_font.get_character_size(), "to save a replay"));
|
||||
list_ptr->add_widget(create_joystick_hotkey_text(&get_theme().ps4_home_texture, &get_theme().ps4_dpad_left_texture, get_theme().body_font.get_character_size(), "to start/stop recording"));
|
||||
|
||||
Reference in New Issue
Block a user