UWP 键盘加速器 FN 问题
UWP Keyboard Accelerator FN issue
<Button
x:Name="PlayButton"
Click="PlayButton_Click"
Style="{StaticResource MediaControlButtonStyle}">
<Button.Content>
<FontIcon
x:Name="PlayButtonIcon"
FontSize="30"
Glyph="" />
</Button.Content>
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="F3" />
</Button.KeyboardAccelerators>
</Button>
我想使用 F3 play/pause 我的 UWP 应用程序中的音乐。但是,仅按 F3 在我的 Surface Book 2 上不起作用。我需要同时按下 FN 和 F3 才能使其正常工作。我应该怎么做才能只按F3? Microsoft 内置的 UWP 应用程序 Groove Music 仅通过按 F3 即可正常播放和暂停。
还有一个问题,UWP应用程序window最小化后,如何还能使用快捷键呢? Groove 的键盘控件在 window 最小化的情况下仍然有效。
貌似是需要按FN还是不按FN的行为,与安装app.When的设备有关,我运行在PC上,我只需要按F3,但是需要surface.If 上的 FN 你仍然想更改它,我在下面有一个解决方法,你可以在页面(例如 MainPage)上注册加速器事件。
public MainPage()
{
this.InitializeComponent();
Window.Current.Dispatcher.AcceleratorKeyActivated += AccelertorKeyActivedHandle;
}
private void AccelertorKeyActivedHandle(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if (args.EventType.ToString().Contains("Down"))
{
if (args.VirtualKey == Windows.System.VirtualKey.F3)
{
// do something you want
}
}
}
当UWP app的window最小化时,当前window没有焦点,所以设置的快捷键不会responded.But系统有默认的快捷键(如Fn + F11) 可以播放或暂停 media.If 要响应系统快捷键,需要允许 backgroundMediaPlayback.You 可以试试 official demo,也可以通过自带的媒体按钮控制键盘。
更新:
按照官方的例子,如果要使用MediaElement播放,需要设置MediaPlay和MediaPlaybackList绑定播放list.In这种情况,好像可以通过系统默认的快捷方式控制keys.What实际工作是MediaPlayer.For更详细的资料,还是要看官方demo。
XAML:
<MediaElement Name="mediaPlayerElement"
AreTransportControlsEnabled="True"
Stretch="UniformToFill" Height="100" Width="400">
代码隐藏:
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/xxx"));
// Create a configurable playback item backed by the media source
var playbackItem = new MediaPlaybackItem(source);
MediaPlayer player = new MediaPlayer();
MediaPlaybackList lists = new MediaPlaybackList();
lists.Items.Add(playbackItem);
player.Source = lists;
}
<Button
x:Name="PlayButton"
Click="PlayButton_Click"
Style="{StaticResource MediaControlButtonStyle}">
<Button.Content>
<FontIcon
x:Name="PlayButtonIcon"
FontSize="30"
Glyph="" />
</Button.Content>
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="F3" />
</Button.KeyboardAccelerators>
</Button>
我想使用 F3 play/pause 我的 UWP 应用程序中的音乐。但是,仅按 F3 在我的 Surface Book 2 上不起作用。我需要同时按下 FN 和 F3 才能使其正常工作。我应该怎么做才能只按F3? Microsoft 内置的 UWP 应用程序 Groove Music 仅通过按 F3 即可正常播放和暂停。
还有一个问题,UWP应用程序window最小化后,如何还能使用快捷键呢? Groove 的键盘控件在 window 最小化的情况下仍然有效。
貌似是需要按FN还是不按FN的行为,与安装app.When的设备有关,我运行在PC上,我只需要按F3,但是需要surface.If 上的 FN 你仍然想更改它,我在下面有一个解决方法,你可以在页面(例如 MainPage)上注册加速器事件。
public MainPage()
{
this.InitializeComponent();
Window.Current.Dispatcher.AcceleratorKeyActivated += AccelertorKeyActivedHandle;
}
private void AccelertorKeyActivedHandle(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if (args.EventType.ToString().Contains("Down"))
{
if (args.VirtualKey == Windows.System.VirtualKey.F3)
{
// do something you want
}
}
}
当UWP app的window最小化时,当前window没有焦点,所以设置的快捷键不会responded.But系统有默认的快捷键(如Fn + F11) 可以播放或暂停 media.If 要响应系统快捷键,需要允许 backgroundMediaPlayback.You 可以试试 official demo,也可以通过自带的媒体按钮控制键盘。
更新:
按照官方的例子,如果要使用MediaElement播放,需要设置MediaPlay和MediaPlaybackList绑定播放list.In这种情况,好像可以通过系统默认的快捷方式控制keys.What实际工作是MediaPlayer.For更详细的资料,还是要看官方demo。
XAML:
<MediaElement Name="mediaPlayerElement"
AreTransportControlsEnabled="True"
Stretch="UniformToFill" Height="100" Width="400">
代码隐藏:
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/xxx"));
// Create a configurable playback item backed by the media source
var playbackItem = new MediaPlaybackItem(source);
MediaPlayer player = new MediaPlayer();
MediaPlaybackList lists = new MediaPlaybackList();
lists.Items.Add(playbackItem);
player.Source = lists;
}