有外设设备的屏幕键盘

在 Windows 10 IoT 核心版版本 1809 中,屏幕键盘组件已发生显著更改,并且效果更好! IoT 核心版现在使用与桌面版 Windows 相同的触摸键盘。

新增功能

新的键盘实现为有外设设备开发提供了以下优势:

功能包

对于原型制作(开发)图像,屏幕键盘功能已包含在内,但需要从 Windows 设备门户中的“设备设置”启用它。

为了进行商业化,以下可选功能包会将屏幕键盘添加到映像中:

  • IOT_SHELL_ONSCREEN_KEYBOARD
  • IOT_SHELL_ONSCREEN_KEYBOARD_FOLLOWFOCUS

提示

有关 IoT 核心版功能的详细信息,请参阅 IoT 核心版功能列表IoT 核心版制造指南

Windows 键盘语言布局

在此版本中,支持的语言布局已扩展为包括桌面 Windows 版本中可用的全套语言布局。 若要让用户可以在不同的语言布局之间进行选择,通常会在应用程序的“设置”区域中包含选择 UI。 提供以下 API,使应用程序能够设置屏幕键盘将使用的语言:

Windows.Globalization.Language.TrySetInputMethodLanguageTag

可以在 LanguageManager.cs 文件的 IoTCoreDefaultApp 示例应用程序中看到此 API 的示例。

支持输入范围

在以前的版本中,仅提供了 EmailSmtpAddress 输入范围。 在此版本中,提供了全套输入范围。 以下主题介绍了输入范围及其在应用程序中的使用方式:

使用输入范围更改触摸键盘

输入法编辑器 (IME)

此版本提供了输入法编辑器,对于任何字符数多于键盘键数的语言(例如中文、日语和韩语),都需要该编辑器。

未遮挡的文本输入字段

在以前的版本中,触摸键盘可能会遮挡聚焦的文本字段,使用户无法看到他们正在键入的内容。 此版本通过自动将文本字段滚动到视图中来解决此问题,这样它就不会再被触摸键盘遮挡。

听写模式

如果输入语言设置为默认的 OS 语言,则可使用语音识别输入功能。 若要显示键盘中的听写按钮,请参阅以下有关用户界面配置的部分。

用户界面配置

屏幕键盘为其用户界面提供了多个可配置的选项。 这些选项是通过注册表配置的。 在开发过程中,可以使用 PowerShell安全外壳 (SSH)。 对于创建 OEM 映像,设置注册表值的首选机制是此处介绍的 OEMInput.xml 文件:

运行时自定义项

注意

此处所述的大多数注册表设置将在屏幕键盘可见时生效。 这样在开发过程中便可轻松尝试不同的设置值组合,立即实时查看所生成的更改。 如果设置没有立即生效,则将需要重新启动设备才能看到对键盘 UI 的更改。

键盘高度

默认情况下,触摸键盘将使用屏幕高度的 45%(靠近底部)。 这可能会在设备上显得太大或太小,具体取决于其大小和分辨率。 键盘高度最多可调整为屏幕高度的三分之二。 任何不在范围内的值都将被限制在范围内。 因为此值指定为浮点值,所以它可以使用像素级精度。 只需应用以下公式来计算百分比:

percentage = (100 * <desired_pixel_height>) / <screen_height>

例如,要将高度更改为 56.783%,需要设置以下注册表值:

set OskRootKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK
reg.exe ADD "%OskRootKey%" /v MaxHeightPercentage /t REG_SZ /d "56.783" /f

或者,通过 PowerShell 进行更改:

set OskRootKey "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK"
cd $OskRootKey
Set-ItemProperty -Path . -Name MaxHeightPercentage -Type String -Value 56.783

注意

注册表值类型必须是字符串 (REG_SZ),以便小数值可以用 小数点 (.) 表示。 即使对于整数百分比,使用 DWord (REG_DWORD) 也 不起作用

其他首选项

其余首选项集是“首选项”子项中的字符串值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK\Preferences
注册表值 默认值 说明
AudioFeedback_Disabled "0" “0”启用键点击音频反馈;“1”禁用它。
Dictation_Disabled "1" “0”显示听写(语音识别)按钮;“1”隐藏它。 (参阅以下说明)
KeyboardModeEnabled_full "0" “0”禁用全键盘模式;“1”启用它。
KeyboardModeEnabled_narrow "1" “0”禁用窄键盘模式;“1”启用它。
KeyboardModeEnabled_wide "1" “0”禁用宽键盘模式;“1”启用它。
ModeOrder "wide;narrow;full" 在模式下拉菜单中列出模式的顺序(从左到右)(如果启用)
SettingsMenuKey_Collapsed "0" 隐藏模式下拉菜单。 如果仅启用一种模式,则将此值设置为“1”。
Paste_Disabled "0" “0”显示“粘贴”按钮;“1”隐藏它。 更改在重新启动后生效。
CloseButton_Disabled "0" “0”显示“关闭”按钮;“1”隐藏“关闭”按钮。 更改在重新启动后生效。
EmojiKeyEnabled "0" “0”隐藏“表情符号”键;“1”显示它,允许用户输入表情符号字符。

注意

听写模式需要为所选输入语言安装语音包,以及音频输入设备。 如果未安装匹配的语音包,则不会显示“听写”按钮。

所有映像都包含 en-US 语音语言。 其他语音包作为可选功能安装。 有关 IoT 功能的详细信息,请参阅 IoT 核心版功能列表IoT 核心版制造指南

例如,要仅启用 wide 键盘模式,可以在 PowerShell 中运行以下命令:

set OskRootKey "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\IoTShellExtension\OSK"
cd $OskRootKey
mkdir Preferences
cd Preferences
Set-ItemProperty . -Name KeyboardModeEnabled_full -Value "0"      # Optional, since the default is "0"
Set-ItemProperty . -Name KeyboardModeEnabled_narrow -Value "0"
Set-ItemProperty . -Name KeyboardModeEnabled_wide -Value "1"      # Optional, since the default is "1"
Set-ItemProperty . -Name SettingsMenuKey_Collapsed -Value "1"