mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-02 06:40:42 -07:00
api: check for window focus when accepting input (#317)
## Link to GitHub Issue, if one exists Fixes #139 ## Description of change Add an option for detecting window focus when accepting input. The new default will be to have the following: * naive bindings will check for window focus * rawinput binds are not affected, will continue to be accepted regardless of focus Other options (always / never choices) can be picked by the user to tweak the behavior if needed. Clean up usage of `0xff` constant to represent invalid naive vkey. ## Testing Still in progress, especially in regards to performance. On a i7-9700 system, 10000 calls to `superexit::has_focus()` takes 250-350 microseconds, so this should not be a big deal at all.
This commit is contained in:
@@ -1077,6 +1077,17 @@ int main_implementation(int argc, char *argv[]) {
|
||||
if (options[launcher::Options::spice2x_EnableSMXDedicab].value_bool()) {
|
||||
rawinput::ENABLE_SMX_DEDICAB = true;
|
||||
}
|
||||
if (options[launcher::Options::InputRequiresFocus].is_active()) {
|
||||
const auto &text = options[launcher::Options::InputRequiresFocus].value_text();
|
||||
if (text == "always") {
|
||||
rawinput::NAIVE_REQUIRE_FOCUS = true;
|
||||
rawinput::RAWINPUT_REQUIRE_FOCUS = true;
|
||||
} else if (text == "never") {
|
||||
rawinput::NAIVE_REQUIRE_FOCUS = false;
|
||||
rawinput::RAWINPUT_REQUIRE_FOCUS = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (options[launcher::Options::MidiAlgoVer].is_active()) {
|
||||
if (options[launcher::Options::MidiAlgoVer].value_text() == "legacy") {
|
||||
midi_algo = rawinput::MidiNoteAlgorithm::LEGACY;
|
||||
|
||||
Reference in New Issue
Block a user