Win32 keybinds

pull/337/head^2
FlightlessMango 4 years ago
parent dd741cdda3
commit 86703ee364

@ -15,14 +15,14 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
auto keyPressDelay = 500ms;
if (elapsedF2 >= keyPressDelay){
#ifdef HAVE_X11
#if defined(HAVE_X11) || defined(_WIN32)
pressed = keys_are_pressed(params.toggle_logging);
#else
pressed = false;
#endif
if (pressed && (now - logger->last_log_end() > 11s)) {
last_f2_press = now;
printf("pressed\n");
if (logger->is_active()) {
logger->stop_logging();
} else {
@ -36,7 +36,7 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
}
if (elapsedF12 >= keyPressDelay){
#ifdef HAVE_X11
#if defined(HAVE_X11) || defined(_WIN32)
pressed = keys_are_pressed(params.toggle_hud);
#else
pressed = false;
@ -48,7 +48,7 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
}
if (elapsedReloadCfg >= keyPressDelay){
#ifdef HAVE_X11
#if defined(HAVE_X11) || defined(_WIN32)
pressed = keys_are_pressed(params.reload_cfg);
#else
pressed = false;
@ -60,7 +60,7 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
}
if (params.permit_upload && elapsedUpload >= keyPressDelay){
#ifdef HAVE_X11
#if defined(HAVE_X11) || defined(_WIN32)
pressed = keys_are_pressed(params.upload_log);
#else
pressed = false;
@ -71,7 +71,7 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
}
}
if (params.permit_upload && elapsedUpload >= keyPressDelay){
#ifdef HAVE_X11
#if defined(HAVE_X11) || defined(_WIN32)
pressed = keys_are_pressed(params.upload_logs);
#else
pressed = false;

@ -41,4 +41,22 @@ bool keys_are_pressed(const std::vector<KeySym>& keys) {
}
#endif //HAVE_X11
#ifdef _WIN32
#include <windows.h>
bool keys_are_pressed(const std::vector<KeySym>& keys) {
size_t pressed = 0;
for (KeySym ks : keys) {
if (GetAsyncKeyState(ks) & 0x8000)
pressed++;
}
if (pressed > 0 && pressed == keys.size()) {
return true;
}
return false;
}
#endif
#endif //MANGOHUD_KEYBINDS_H

@ -1,3 +1,6 @@
#ifdef _WIN32
#include <windows.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@ -498,6 +501,21 @@ parse_overlay_config(struct overlay_params *params,
params->upload_logs = { XK_Control_L, XK_F3 };
#endif
#ifdef _WIN32
params->toggle_hud = { VK_F12 };
params->toggle_logging = { VK_F2 };
params->reload_cfg = { VK_F4 };
#undef parse_toggle_hud
#undef parse_toggle_logging
#undef parse_reload_cfg
#define parse_toggle_hud(x) params->toggle_hud
#define parse_toggle_logging(x) params->toggle_logging
#define parse_reload_cfg(x) params->reload_cfg
#endif
// first pass with env var
if (env)
parse_overlay_env(params, env);

@ -9,6 +9,7 @@ typedef long(__fastcall* PresentD3D12) (IDXGISwapChain* pSwapChain, UINT SyncInt
PresentD3D12 oPresentD3D12;
long __fastcall hkPresent12(IDXGISwapChain3* pSwapChain, UINT SyncInterval, UINT Flags){
check_keybinds(sw_stats, params, vendorID);
update_hud_info(sw_stats, params, vendorID);
return oPresentD3D12(pSwapChain, SyncInterval, Flags);
}

Loading…
Cancel
Save