Handle more than 1 modifier key at once
This commit is contained in:
@@ -64,15 +64,15 @@ std::pair<uint32, uint32> GetEPM() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void UpdateModKeys(bool shift_pressed, bool ctrl_pressed, bool alt_pressed) {
|
void UpdateModKeys(bool shift_pressed, bool ctrl_pressed, bool alt_pressed) {
|
||||||
ModKey key = ModKey::NONE;
|
bool mod_pressed[(size_t)ModKey::END] = {false};
|
||||||
if (alt_pressed) key = ModKey::ALT;
|
if (shift_pressed) mod_pressed[(size_t)ModKey::SHIFT] = true;
|
||||||
if (ctrl_pressed) key = ModKey::CTRL;
|
if (ctrl_pressed) mod_pressed[(size_t)ModKey::CTRL] = true;
|
||||||
if (shift_pressed) key = ModKey::SHIFT;
|
if (alt_pressed) mod_pressed[(size_t)ModKey::ALT] = true;
|
||||||
bool fn_mod_prev = _fn_mod;
|
bool fn_mod_prev = _fn_mod;
|
||||||
bool remove_mod_prev = _remove_mod;
|
bool remove_mod_prev = _remove_mod;
|
||||||
_fn_mod = (_settings_client.gui.cm_fn_mod == key);
|
_fn_mod = mod_pressed[(size_t)_settings_client.gui.cm_fn_mod];
|
||||||
_remove_mod = (_settings_client.gui.cm_remove_mod == key);
|
_remove_mod = mod_pressed[(size_t)_settings_client.gui.cm_remove_mod];
|
||||||
_estimate_mod = (_settings_client.gui.cm_estimate_mod == key);
|
_estimate_mod = mod_pressed[(size_t)_settings_client.gui.cm_estimate_mod];
|
||||||
|
|
||||||
Window *w;
|
Window *w;
|
||||||
if (fn_mod_prev != _fn_mod) {
|
if (fn_mod_prev != _fn_mod) {
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ enum class ModKey : uint8 {
|
|||||||
NONE = 0,
|
NONE = 0,
|
||||||
SHIFT = 1,
|
SHIFT = 1,
|
||||||
CTRL = 2,
|
CTRL = 2,
|
||||||
ALT = 3
|
ALT = 3,
|
||||||
|
END,
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBRequirement {
|
class CBRequirement {
|
||||||
|
|||||||
Reference in New Issue
Block a user