Block CTRL + ESC

This commit is contained in:
Lucas A 2020-07-05 18:52:27 +02:00
parent 8869979599
commit ce5da5c51b
2 changed files with 8 additions and 4 deletions

View File

@ -11,7 +11,7 @@ namespace osu.Desktop.Windows
{
public class GameplayWinKeyHandler : Component
{
private Bindable<bool> winKeyEnabled;
private Bindable<bool> allowScreenSuspension;
private Bindable<bool> disableWinKey;
private GameHost host;
@ -21,11 +21,11 @@ namespace osu.Desktop.Windows
{
this.host = host;
winKeyEnabled = host.AllowScreenSuspension.GetBoundCopy();
winKeyEnabled.ValueChanged += toggleWinKey;
allowScreenSuspension = host.AllowScreenSuspension.GetBoundCopy();
allowScreenSuspension.ValueChanged += toggleWinKey;
disableWinKey = config.GetBindable<bool>(OsuSetting.GameplayDisableWinKey);
disableWinKey.BindValueChanged(t => winKeyEnabled.TriggerChange(), true);
disableWinKey.BindValueChanged(t => allowScreenSuspension.TriggerChange(), true);
}
private void toggleWinKey(ValueChangedEvent<bool> e)

View File

@ -38,6 +38,7 @@ namespace osu.Desktop.Windows
{
case 0x09 when lParam.Flags == 32: // alt + tab
case 0x1b when lParam.Flags == 32: // alt + esc
case 0x1b when (getKeyState(0x11) & 0x8000) != 0: //ctrl + esc
case 0x5B: // left windows key
case 0x5C: // right windows key
return 1;
@ -78,5 +79,8 @@ namespace osu.Desktop.Windows
[DllImport(@"user32.dll", EntryPoint = @"CallNextHookEx")]
private static extern int callNextHookEx(int hHook, int nCode, int wParam, ref KdDllHookStruct lParam);
[DllImport(@"user32.dll", EntryPoint = @"GetKeyState")]
private static extern int getKeyState(int vkey);
}
}