gpt4 book ai didi

c# - 如何检测 Control + 不是 VirtualKey 键盘组合?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:34 24 4
gpt4 key购买 nike

我正在设置一个在单个页面上工作的全局键盘快捷键,比如 Ctrl + someKey 来做一些事情,Ctrl + Alt + otherKey 来激活一些其他的事情等等在。我或多或少有 Ctrl + VirtualKey 的工作代码(字母,数字,......)但我还需要一些 VirtualKey 中没有的键,比如点,逗号、加号、减号、...

这些是注册的事件:

public Planner()
{
this.InitializeComponent();

CoreWindow.GetForCurrentThread().KeyDown += CoreWindow_KeyDown;
CoreWindow.GetForCurrentThread().CharacterReceived += Planner_CharacterReceived;
Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated;
}

我将 KeyDown 用作 Ctrl + KCtrl + Shift + A 等快捷方式。

CharacterReceived 捕获逗号、点、加号、减号等字符,但它们不适用于 Ctrl 和 Alt。

最后,Dispatcher_AcceleratorKey 检查是否按下了 Alt 键。

最佳答案

目前UWP不支持注册全局热键,但是你可以像下面这样在应用内部响应windows快捷键。

首先,注册用于按钮热键的加速键事件。

public MainPage()
{
this.InitializeComponent();
// Register for accelerator key events used for button hotkeys
Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated;
}

检测 Ctrl + VCtrl + n

private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if (args.EventType.ToString().Contains("Down"))
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down))
{
switch (args.VirtualKey)
{
case VirtualKey.V:
ViewOrders_Tapped(this, null);
break;
case VirtualKey.N:
NewOrder_Tapped(this, null);
break;
}
}
}
}

对于三个键如Ctrl + Shift + V

private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if (args.EventType.ToString().Contains("Down"))
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
var shift = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && shift.HasFlag(CoreVirtualKeyStates.Down))
{
switch (args.VirtualKey)
{
case VirtualKey.V:

break;
case VirtualKey.N:

break;
}
}
}
}

关于c# - 如何检测 Control + 不是 VirtualKey 键盘组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com