以编程方式在UWP中打开屏幕键盘

11

在UWP中,是否可以强制打开屏幕键盘(osk.exe)?

例如,在C#中可以使用System.Diagnostics.Process.Start("osk.exe");

但是在UWP中执行上述操作会导致编译错误,提示没有Process命名空间。

我知道在平板模式下,如果我以编程方式聚焦于文本框,它将显示屏幕键盘。

但在桌面模式下是否可能呢?


首先,在平板模式下,触摸键盘会出现,而不是屏幕上的键盘。(是的,有两个键盘) - ad1Dima
哦,我明白了。在桌面模式下有让触摸键盘出现的方法吗? - Water
嗨,Jay。我按照你给的链接,使用了BrokeredComponents。对我们的应用程序起作用了,谢谢。 - Water
2个回答

7

有没有办法让触摸键盘在桌面模式下出现?

请参考键盘交互中的文档

根据设备不同,当文本字段或其他可编辑文本控件获得焦点时,触摸键盘会出现,或者用户通过通知中心手动启用:
touch keyboard icon in the notification center
(来源:s-msft.com)

注意:用户可能需要前往“设置”>“系统”,并打开“将 Windows 设备更改为触摸友好型平板电脑”的“平板电脑模式”屏幕,以启用触摸键盘的自动出现。

在平板模式下,当用户使用触摸输入将焦点设置到文本控件时,触摸键盘可以自动出现。然而,在桌面模式下,这种情况不会发生,并且在 UWP 中,目前没有 API 可以编程方式打开它。
要在桌面模式下显示触摸键盘,我们需要用户通过单击触摸键盘按钮手动启用它。用户可以在任务栏中勾选“显示触摸键盘按钮”来查看此按钮。 enter image description here 欢迎您通过UserVoiceWindows反馈中心应用程序提交此功能请求。

所以应用程序没有办法打开和关闭桌面的屏幕键盘吗?当使用遥控器在距离12英尺的4K电视上导航全屏应用时,要到达任务栏可能有点麻烦。 - dynamichael

3

我可以使用以下方法在桌面模式下显示/隐藏屏幕键盘:

CoreInputView.GetForCurrentView().TryShow(CoreInputViewKind.Keyboard)

代码示例:

.xaml文件:

    <TextBox GotFocus="TextBox_OnGotFocus" LostFocus="TextBox_OnLostFocus" InputScope="Number"/>

.xaml.cs:

    private void TextBox_OnGotFocus(object _, RoutedEventArgs __)
    {
        CoreInputView.GetForCurrentView().TryShow(CoreInputViewKind.Keyboard);
    }

    private void TextBox_OnLostFocus(object _, RoutedEventArgs __)
    {
        CoreInputView.GetForCurrentView().TryHide();
    }

此外,您可以通过设置InputScope的值来控制键盘类型,例如:数字、数字密码、文本或其他类型:https://learn.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Input.InputScopeNameValue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接