Merge pull request #11670 from sonninnos/nowinkey-option
(DINPUT+WINRAW) Option for disabling Windows hotkeys
This commit is contained in:
commit
70feaebc91
|
@ -1724,6 +1724,9 @@ static struct config_bool_setting *populate_settings_bool(
|
||||||
SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, DEFAULT_CONFIG_SAVE_ON_EXIT, false);
|
SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, DEFAULT_CONFIG_SAVE_ON_EXIT, false);
|
||||||
SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, DEFAULT_SHOW_HIDDEN_FILES, false);
|
SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, DEFAULT_SHOW_HIDDEN_FILES, false);
|
||||||
SETTING_BOOL("input_autodetect_enable", &settings->bools.input_autodetect_enable, true, input_autodetect_enable, false);
|
SETTING_BOOL("input_autodetect_enable", &settings->bools.input_autodetect_enable, true, input_autodetect_enable, false);
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
SETTING_BOOL("input_nowinkey_enable", &settings->bools.input_nowinkey_enable, true, false, false);
|
||||||
|
#endif
|
||||||
SETTING_BOOL("input_sensors_enable", &settings->bools.input_sensors_enable, true, DEFAULT_INPUT_SENSORS_ENABLE, false);
|
SETTING_BOOL("input_sensors_enable", &settings->bools.input_sensors_enable, true, DEFAULT_INPUT_SENSORS_ENABLE, false);
|
||||||
SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, DEFAULT_RATE_CONTROL, false);
|
SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, DEFAULT_RATE_CONTROL, false);
|
||||||
#ifdef HAVE_WASAPI
|
#ifdef HAVE_WASAPI
|
||||||
|
|
|
@ -524,6 +524,9 @@ typedef struct settings
|
||||||
bool input_backtouch_toggle;
|
bool input_backtouch_toggle;
|
||||||
bool input_small_keyboard_enable;
|
bool input_small_keyboard_enable;
|
||||||
bool input_keyboard_gamepad_enable;
|
bool input_keyboard_gamepad_enable;
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
bool input_nowinkey_enable;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Frame time counter */
|
/* Frame time counter */
|
||||||
bool frame_time_counter_reset_after_fastforwarding;
|
bool frame_time_counter_reset_after_fastforwarding;
|
||||||
|
|
|
@ -159,9 +159,17 @@ static void *dinput_init(const char *joypad_driver)
|
||||||
|
|
||||||
if (di->keyboard)
|
if (di->keyboard)
|
||||||
{
|
{
|
||||||
|
DWORD flags;
|
||||||
|
settings_t *settings;
|
||||||
|
|
||||||
|
settings = config_get_ptr();
|
||||||
|
flags = DISCL_NONEXCLUSIVE | DISCL_FOREGROUND;
|
||||||
|
if (settings->bools.input_nowinkey_enable)
|
||||||
|
flags |= DISCL_NOWINKEY;
|
||||||
|
|
||||||
IDirectInputDevice8_SetDataFormat(di->keyboard, &c_dfDIKeyboard);
|
IDirectInputDevice8_SetDataFormat(di->keyboard, &c_dfDIKeyboard);
|
||||||
IDirectInputDevice8_SetCooperativeLevel(di->keyboard,
|
IDirectInputDevice8_SetCooperativeLevel(di->keyboard,
|
||||||
(HWND)video_driver_window_get(), DISCL_NONEXCLUSIVE | DISCL_FOREGROUND | DISCL_NOWINKEY);
|
(HWND)video_driver_window_get(), flags);
|
||||||
IDirectInputDevice8_Acquire(di->keyboard);
|
IDirectInputDevice8_Acquire(di->keyboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -100,11 +100,15 @@ static void winraw_destroy_window(HWND wnd)
|
||||||
static BOOL winraw_set_keyboard_input(HWND window)
|
static BOOL winraw_set_keyboard_input(HWND window)
|
||||||
{
|
{
|
||||||
RAWINPUTDEVICE rid;
|
RAWINPUTDEVICE rid;
|
||||||
|
settings_t *settings;
|
||||||
|
|
||||||
|
settings = config_get_ptr();
|
||||||
|
|
||||||
rid.dwFlags = window ? 0 : RIDEV_REMOVE;
|
rid.dwFlags = window ? 0 : RIDEV_REMOVE;
|
||||||
rid.hwndTarget = window;
|
rid.hwndTarget = window;
|
||||||
rid.usUsagePage = 0x01; /* generic desktop */
|
rid.usUsagePage = 0x01; /* generic desktop */
|
||||||
rid.usUsage = 0x06; /* keyboard */
|
rid.usUsage = 0x06; /* keyboard */
|
||||||
|
if (settings->bools.input_nowinkey_enable)
|
||||||
rid.dwFlags |= RIDEV_NOHOTKEYS; /* disable win keys while focused */
|
rid.dwFlags |= RIDEV_NOHOTKEYS; /* disable win keys while focused */
|
||||||
|
|
||||||
return RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE));
|
return RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE));
|
||||||
|
|
|
@ -1302,6 +1302,12 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE,
|
MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE,
|
||||||
"input_autodetect_enable"
|
"input_autodetect_enable"
|
||||||
)
|
)
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_INPUT_NOWINKEY_ENABLE,
|
||||||
|
"input_nowinkey_enable"
|
||||||
|
)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_INPUT_SENSORS_ENABLE,
|
MENU_ENUM_LABEL_INPUT_SENSORS_ENABLE,
|
||||||
"input_sensors_enable"
|
"input_sensors_enable"
|
||||||
|
|
|
@ -2058,6 +2058,16 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE,
|
MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE,
|
||||||
"Automatically configures controllers that have a profile, Plug-and-Play style."
|
"Automatically configures controllers that have a profile, Plug-and-Play style."
|
||||||
)
|
)
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_INPUT_NOWINKEY_ENABLE,
|
||||||
|
"Disable Windows Hotkeys"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_INPUT_NOWINKEY_ENABLE,
|
||||||
|
"Keeps Win-key combinations inside the application. (Restart Required)"
|
||||||
|
)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_SENSORS_ENABLE,
|
MENU_ENUM_LABEL_VALUE_INPUT_SENSORS_ENABLE,
|
||||||
"Auxiliary Sensor Input"
|
"Auxiliary Sensor Input"
|
||||||
|
|
|
@ -495,6 +495,9 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_savestate_max_keep, MENU_
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_autosave_interval, MENU_ENUM_SUBLABEL_AUTOSAVE_INTERVAL)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_autosave_interval, MENU_ENUM_SUBLABEL_AUTOSAVE_INTERVAL)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_remap_binds_enable, MENU_ENUM_SUBLABEL_INPUT_REMAP_BINDS_ENABLE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_remap_binds_enable, MENU_ENUM_SUBLABEL_INPUT_REMAP_BINDS_ENABLE)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_autodetect_enable, MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_autodetect_enable, MENU_ENUM_SUBLABEL_INPUT_AUTODETECT_ENABLE)
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_nowinkey_enable, MENU_ENUM_SUBLABEL_INPUT_NOWINKEY_ENABLE)
|
||||||
|
#endif
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_sensors_enable, MENU_ENUM_SUBLABEL_INPUT_SENSORS_ENABLE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_sensors_enable, MENU_ENUM_SUBLABEL_INPUT_SENSORS_ENABLE)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_swap_ok_cancel, MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_swap_ok_cancel, MENU_ENUM_SUBLABEL_MENU_INPUT_SWAP_OK_CANCEL)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_pause_libretro, MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_pause_libretro, MENU_ENUM_SUBLABEL_PAUSE_LIBRETRO)
|
||||||
|
@ -2869,6 +2872,11 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||||
case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE:
|
case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_autodetect_enable);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_autodetect_enable);
|
||||||
break;
|
break;
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
case MENU_ENUM_LABEL_INPUT_NOWINKEY_ENABLE:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_nowinkey_enable);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case MENU_ENUM_LABEL_INPUT_SENSORS_ENABLE:
|
case MENU_ENUM_LABEL_INPUT_SENSORS_ENABLE:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_sensors_enable);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_sensors_enable);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -6037,6 +6037,12 @@ unsigned menu_displaylist_build_list(
|
||||||
MENU_ENUM_LABEL_INPUT_BIND_MODE,
|
MENU_ENUM_LABEL_INPUT_BIND_MODE,
|
||||||
PARSE_ONLY_UINT, false) == 0)
|
PARSE_ONLY_UINT, false) == 0)
|
||||||
count++;
|
count++;
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
|
MENU_ENUM_LABEL_INPUT_NOWINKEY_ENABLE,
|
||||||
|
PARSE_ONLY_BOOL, false) == 0)
|
||||||
|
count++;
|
||||||
|
#endif
|
||||||
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
MENU_ENUM_LABEL_INPUT_SENSORS_ENABLE,
|
MENU_ENUM_LABEL_INPUT_SENSORS_ENABLE,
|
||||||
PARSE_ONLY_BOOL, false) == 0)
|
PARSE_ONLY_BOOL, false) == 0)
|
||||||
|
|
|
@ -12063,6 +12063,24 @@ static bool setting_append_list(
|
||||||
SD_FLAG_ADVANCED
|
SD_FLAG_ADVANCED
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
CONFIG_BOOL(
|
||||||
|
list, list_info,
|
||||||
|
&settings->bools.input_nowinkey_enable,
|
||||||
|
MENU_ENUM_LABEL_INPUT_NOWINKEY_ENABLE,
|
||||||
|
MENU_ENUM_LABEL_VALUE_INPUT_NOWINKEY_ENABLE,
|
||||||
|
false,
|
||||||
|
MENU_ENUM_LABEL_VALUE_OFF,
|
||||||
|
MENU_ENUM_LABEL_VALUE_ON,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler,
|
||||||
|
SD_FLAG_NONE
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
CONFIG_BOOL(
|
CONFIG_BOOL(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
&settings->bools.input_sensors_enable,
|
&settings->bools.input_sensors_enable,
|
||||||
|
|
|
@ -918,6 +918,9 @@ enum msg_hash_enums
|
||||||
MENU_LABEL(INPUT_USER_BINDS),
|
MENU_LABEL(INPUT_USER_BINDS),
|
||||||
MENU_LABEL(INPUT_DUTY_CYCLE),
|
MENU_LABEL(INPUT_DUTY_CYCLE),
|
||||||
MENU_LABEL(INPUT_AUTODETECT_ENABLE),
|
MENU_LABEL(INPUT_AUTODETECT_ENABLE),
|
||||||
|
#if defined(HAVE_DINPUT) || defined(HAVE_WINRAWINPUT)
|
||||||
|
MENU_LABEL(INPUT_NOWINKEY_ENABLE),
|
||||||
|
#endif
|
||||||
MENU_LABEL(INPUT_SENSORS_ENABLE),
|
MENU_LABEL(INPUT_SENSORS_ENABLE),
|
||||||
MENU_LABEL(INPUT_DESCRIPTOR_LABEL_SHOW),
|
MENU_LABEL(INPUT_DESCRIPTOR_LABEL_SHOW),
|
||||||
MENU_LABEL(INPUT_DESCRIPTOR_HIDE_UNBOUND),
|
MENU_LABEL(INPUT_DESCRIPTOR_HIDE_UNBOUND),
|
||||||
|
|
Loading…
Reference in New Issue