public static bool MetaReleased(MetaKey meta, InputLayer layer) { // FIXME: this is not precise enough for multiple meta combos. bool active = true; if ((meta & MetaKey.Shift) != 0 && !layer.GetKeyUp(KeyCode.LeftShift) && !layer.GetKeyUp(KeyCode.RightShift)) { active = false; } if ((meta & MetaKey.Alt) != 0 && !layer.GetKeyUp(KeyCode.LeftAlt) && !layer.GetKeyUp(KeyCode.RightAlt)) { active = false; } if ((meta & MetaKey.Control) != 0 && !layer.GetKeyUp(KeyCode.LeftControl) && !layer.GetKeyUp(KeyCode.RightControl)) { active = false; } if ((meta & MetaKey.Super) != 0 && !layer.GetKeyUp(KeyCode.LeftCommand) && !layer.GetKeyUp(KeyCode.RightCommand) && !layer.GetKeyUp(KeyCode.LeftWindows) && !layer.GetKeyUp(KeyCode.RightWindows)) { active = false; } return(active); }
/// <summary> /// Has the sequence been pressed this frame? /// </summary> public bool Released(InputLayer layer) { if (_keyCode != KeyCode.None && layer.GetKeyUp(_keyCode) || !string.IsNullOrEmpty(_keyName) && layer.GetButtonUp(_keyName)) { if (MetaActive(Meta, layer)) { return(true); } } else if (_keyCode != KeyCode.None && layer.GetKey(_keyCode) || !string.IsNullOrEmpty(_keyName) && layer.GetButton(_keyName)) { if (MetaReleased(Meta, layer)) { } } return(false); }