【问题标题】:How do I remap keyboard shortcuts in UWP C# app?如何在 UWP C# 应用程序中重新映射键盘快捷键?
【发布时间】:2020-09-18 03:08:30
【问题描述】:

例如,假设我想切换 Ctrl+CCtrl+V 以便 Ctrl+C 将粘贴并 Ctrl+V 将复制。我需要先覆盖Ctrl+Ccopying 然后使Ctrl+C 粘贴。我也必须对Ctrl + V 做同样的事情,除了我需要覆盖粘贴并使其复制。

我该怎么做呢?这在使用 C# 的 UWP 应用程序中是否可行?每当我按照“在 c# 中重新映射键盘快捷键”的方式查找某些内容时,它都会显示在 Visual Studio 中重新映射键盘快捷键的结果,而不是在我的应用程序中。

【问题讨论】:

    标签: c# .net windows .net-core uwp


    【解决方案1】:

    >如何在 UWP C# 应用中重新映射键盘快捷键?

    这有点复杂,但您可以在您的应用程序中完成。您需要先处理键盘输入事件 - CoreWindow.KeyDown Event。在输入事件中,检查是否按下了控制键和是否按下了 C 键。当它们都被按下时,您可以在事件处理程序中执行您自己的逻辑。

    这是一个关于如何处理 keydown 事件的示例代码。

      Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
    
    
     private void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
        {
            var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
            if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && args.VirtualKey == VirtualKey.V)
            {
                //clean the data in the clipboard. 
                Windows.ApplicationModel.DataTransfer.Clipboard.Clear();
                // do your stuff
                Debug.WriteLine("Ctr+V");
                return;
            } else if(ctrl.HasFlag(CoreVirtualKeyStates.Down) && args.VirtualKey == VirtualKey.C)
            {
                //clean the data in the clipboard. 
                Windows.ApplicationModel.DataTransfer.Clipboard.Clear();
                // do your stuff
                Debug.WriteLine("Ctr+C");
                return;
            }
        }
    

    【讨论】:

    • 这是否适用于我的应用程序以外的应用程序?例如,如果我的应用程序正在运行并且我在 Microsoft Word、记事本、Chrome 等中运行,它是否也可以在其他应用程序中运行或仅在我的应用程序的文本框中运行。
    • 仅在您的应用中。 UWP 应用无法捕获自身外部的系统事件。
    • 即使我的应用程序正在运行?太糟糕了。还是谢谢
    • 是的,这是 UWP 应用的限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多