Отключить взаимодействие с клавиатурой с приложением UWP - PullRequest
0 голосов
/ 09 февраля 2019

Я создаю приложение UWP и хочу отключить взаимодействие клавиатуры с моим приложением.Это означает, что мое приложение не должно никоим образом реагировать при нажатии любой клавиши на клавиатуре.

Это достижимо?Можно ли выборочно отключить взаимодействие с некоторыми клавишами, такими как клавиша Tab и т. Д.

1 Ответ

0 голосов
/ 09 февраля 2019

Да, для этого вы можете использовать класс KeyboardDeliveryInterceptor .Несколько вещей, на которые следует обратить внимание:

  1. Вам необходимо объявить ограниченную возможность 'inputForegroundObservation' в файле appxmanifest:
<Capabilities>
  <Capability Name="internetClient" />
  <rescap:Capability xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" Name="inputForegroundObservation"/>
</Capabilities>
Вы не можете выборочно перехватывать клавиши, но вы можете реагировать на определенные перехваченные клавиши в вашем коде и отвечать желаемым действием (например, перемещать фокус при нажатии клавиши табуляции):
KeyboardDeliveryInterceptor interceptor = KeyboardDeliveryInterceptor.GetForCurrentView();
interceptor.IsInterceptionEnabledWhenInForeground = true;
interceptor.KeyUp += delegate(KeyboardDeliveryInterceptor sender, KeyEventArgs args)
{
    if (args.VirtualKey == Windows.System.VirtualKey.Tab)
    {
        // perform desired tab key action
    }
};
...