mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-24 04:46:56 +02:00
feeced81d2
* window: auto-hide the cursor over the game window Hide the cursor when the game window is created and whenever the mouse has been idle for two seconds; any mouse motion, button or wheel event shows it again. Games that draw their own cursor (e.g. Blue Prince) no longer show the host pointer on top of it. Only real mouse input counts as activity: synthetic touch/pen mouse events and zero-delta motion (sent by some platforms on focus or cursor visibility changes) are ignored. The event loop only waits with a timeout while the cursor is visible, so it still blocks indefinitely once the cursor is hidden. The cursor is restored on shutdown. Uses SDL_HideCursor/SDL_ShowCursor, which SDL implements for X11, Wayland, Cocoa and Win32 and which only affect the cursor over the emulator window. Closes #282 * window: make cursor auto-hide optional in CLI and launcher Co-authored-by: Anatolii Kucheruk <anatolii.kucheruk01@gmail.com> --------- Co-authored-by: nmzik <Nmzik@mail.ru> Co-authored-by: Anatolii Kucheruk <anatolii.kucheruk01@gmail.com>
136 lines
4.7 KiB
C++
136 lines
4.7 KiB
C++
#ifndef KYTY_COMMON_EMULATOR_CONFIG_H_
|
|
#define KYTY_COMMON_EMULATOR_CONFIG_H_
|
|
|
|
#include "common/common.h"
|
|
|
|
#include <cstddef>
|
|
#include <array>
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace Config {
|
|
|
|
void Initialize();
|
|
void Shutdown();
|
|
|
|
struct Lifecycle {
|
|
static constexpr const char* name = "Config";
|
|
static constexpr auto initialize = Config::Initialize;
|
|
static constexpr auto shutdown = Config::Shutdown;
|
|
};
|
|
|
|
enum class ShaderOptimizationType { None, Size, Performance };
|
|
|
|
enum class LogDirection { Silent, Console, File };
|
|
|
|
enum class PresentMode { Fifo, Mailbox, Immediate };
|
|
|
|
using Keymap = std::vector<std::string>;
|
|
using ControllerColor = std::array<uint8_t, 3>;
|
|
|
|
constexpr uint32_t DEFAULT_CONSOLE_LANGUAGE = 1;
|
|
constexpr uint32_t MAX_CONSOLE_LANGUAGE = 29;
|
|
constexpr std::size_t MAX_USER_NAME_LENGTH = 16;
|
|
constexpr int32_t DEFAULT_USER_ID = 1000;
|
|
|
|
constexpr bool IsConfiguredUserIdValid(int32_t user_id) {
|
|
constexpr int32_t USER_ID_EVERYONE = 0xfe;
|
|
constexpr int32_t USER_ID_SYSTEM = 0xff;
|
|
return user_id >= 0 && user_id != USER_ID_EVERYONE && user_id != USER_ID_SYSTEM;
|
|
}
|
|
|
|
struct ConfigOptions {
|
|
uint32_t screen_width = 1280;
|
|
uint32_t screen_height = 720;
|
|
std::string user_name = "Kyty";
|
|
int32_t user_id = DEFAULT_USER_ID;
|
|
std::string audio_input_device;
|
|
std::optional<ControllerColor> controller_color;
|
|
uint32_t controller_speaker_volume = 100;
|
|
uint32_t controller_vibration_intensity = 100;
|
|
PresentMode present_mode = PresentMode::Mailbox;
|
|
int32_t gpu_index = -1;
|
|
bool fullscreen_enabled = false;
|
|
bool hide_cursor_enabled = false;
|
|
bool vr_enabled = false;
|
|
bool amd_cpu_enabled = false;
|
|
uint32_t vblank_frequency = 60;
|
|
uint32_t console_language = DEFAULT_CONSOLE_LANGUAGE;
|
|
bool vulkan_validation_enabled = false;
|
|
bool shader_validation_enabled = false;
|
|
ShaderOptimizationType shader_optimization_type = ShaderOptimizationType::None;
|
|
LogDirection shader_log_direction = LogDirection::Silent;
|
|
std::filesystem::path shader_log_folder = "_Shaders";
|
|
bool command_buffer_dump_enabled = false;
|
|
std::filesystem::path command_buffer_dump_folder = "_Buffers";
|
|
bool graphics_debug_dump_enabled = false;
|
|
LogDirection printf_direction = LogDirection::Silent;
|
|
std::filesystem::path printf_output_file = "_kyty.txt";
|
|
bool profiler_enabled = false;
|
|
bool spirv_debug_printf_enabled = false;
|
|
bool gpu_assisted_validation_enabled = false;
|
|
bool renderdoc_enabled = false;
|
|
bool readback_linear_images = false;
|
|
bool tessellation_enabled = false;
|
|
bool playgo_hack_enabled = false;
|
|
#if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS
|
|
bool red_zone_protection_enabled = false;
|
|
#endif
|
|
Keymap keymap;
|
|
};
|
|
|
|
void Load(const ConfigOptions& cfg);
|
|
|
|
uint32_t GetScreenWidth();
|
|
uint32_t GetScreenHeight();
|
|
const std::string& GetUserName();
|
|
int32_t GetUserId();
|
|
const std::string& GetAudioInputDevice();
|
|
const std::optional<ControllerColor>& GetControllerColor();
|
|
uint32_t GetControllerSpeakerVolume();
|
|
uint32_t GetControllerVibrationIntensity();
|
|
PresentMode GetPresentMode();
|
|
int32_t GetGpuIndex();
|
|
bool FullscreenEnabled();
|
|
bool HideCursorEnabled();
|
|
bool VrEnabled();
|
|
bool AmdCpuEnabled();
|
|
uint32_t GetVblankFrequency();
|
|
uint32_t GetConsoleLanguage();
|
|
bool VulkanValidationEnabled();
|
|
|
|
bool ShaderValidationEnabled();
|
|
ShaderOptimizationType GetShaderOptimizationType();
|
|
LogDirection GetShaderLogDirection();
|
|
std::filesystem::path GetShaderLogFolder();
|
|
|
|
bool CommandBufferDumpEnabled();
|
|
std::filesystem::path GetCommandBufferDumpFolder();
|
|
|
|
bool GraphicsDebugDumpEnabled();
|
|
|
|
LogDirection GetPrintfDirection();
|
|
std::filesystem::path GetPrintfOutputFile();
|
|
|
|
bool ProfilerEnabled();
|
|
|
|
bool SpirvDebugPrintfEnabled();
|
|
|
|
bool GpuAssistedValidationEnabled();
|
|
|
|
bool RenderDocEnabled();
|
|
bool ReadbackLinearImagesEnabled();
|
|
bool TessellationEnabled();
|
|
bool PlayGoHackEnabled();
|
|
#if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS
|
|
bool RedZoneProtectionEnabled();
|
|
#endif
|
|
|
|
const Keymap& GetKeymap();
|
|
|
|
} // namespace Config
|
|
|
|
#endif /* KYTY_COMMON_EMULATOR_CONFIG_H_ */
|