ヘッド付きデバイス用のスクリーン キーボード
Windows 10 IoT Core バージョン 1809 では、スクリーン キーボード コンポーネントが大幅に変更され、より優れた機能が備わっています。 IoT Core では、Windows のデスクトップ版と同じタッチ キーボード コンポーネントが使用されるようになりました。
新機能
新しいキーボード実装では、ヘッド付きデバイスの開発に次のような利点があります。
- Windows キーボードの言語レイアウトのすべてのセットに対応
- 入力スコープのサポート (例: メール アドレス、数値 PIN、検索フィールドなど)
- Input Method Editor (IME)
- 隠れてしまうテキスト入力フィールドの改善
- ディクテーション モード
- 多数のユーザー インターフェースの設定
機能パッケージ
プロトタイピング (開発) 用のイメージには、スクリーン キーボード機能がすでに含まれていますが、Windows デバイス ポータルのデバイス設定から有効にする必要があります。
製品化の際は、次のオプションの機能パッケージを使用すると、スクリーン キーボードがイメージに追加されます。
- IOT_SHELL_ONSCREEN_KEYBOARD
- IOT_SHELL_ONSCREEN_KEYBOARD_FOLLOWFOCUS
ヒント
IoT Core 機能の詳細については、IoT Core の機能一覧に関するページと、IoT Core の製造ガイドのページを参照してください。
Windows キーボードの言語レイアウト
今回のリリースでは、サポートされる言語レイアウトが拡張され、Windows デスクトップ版で利用可能な言語レイアウトがすべて含まれるようになりました。 ユーザーがさまざまな言語レイアウトを選択できるようにするには、通常、アプリケーションの設定画面に選択できる UI を含める必要があります。 以下の API は、スクリーン キーボードで使用されている言語をアプリケーションで設定するために提供されています:
Windows.Globalization.Language.TrySetInputMethodLanguageTag
この API の例は、LanguageManager.cs ファイルの IoTCoreDefaultApp サンプル アプリケーションで確認できます。
入力スコープのサポート
以前のリリースでは、EmailSmtpAddress の入力スコープのみが利用可能でした。 今回のリリースでは、すべての入力スコープを使用できるようになりました。 次のトピックでは、入力スコープと、アプリケーションでの使用方法について説明します:
Input Method Editor (IME)
本リリースでは、中国語、日本語、韓国語など、キーボードのキー数よりも文字数が多い言語で必要な Input Method Editor が提供されています。
隠れてしまうテキスト入力フィールドの改善
以前のリリースでは、フォーカスされたテキスト フィールドにタッチ キーボードが重なってしまい、入力中の文字が見えなくなることがありました。 このリリースでは、テキスト フィールドがタッチ キーボードによって隠されないよう、自動的に見える位置にスクロールすることで、この問題を修正しました。
ディクテーション モード
入力言語が OS の既定の言語に設定されている場合は、音声認識による入力機能を使用できます。 キーボードにディクテーション ボタンを表示するには、次の「ユーザー インターフェースの構成」を参照してください。
ユーザー インターフェイスの構成
スクリーン キーボードには、ユーザー インターフェイスを構成できるオプションがいくつか備わっています。 これらは、レジストリを使用して構成できます。
開発時には、PowerShell または Secure Shell (SSH) を使用することができます。 OEM イメージを作成する場合、レジストリ値を設定するには、ここで説明する OEMInput.xml
ファイルを使用することをお勧めします。
Note
ここに記載されているレジストリ設定のほとんどは、スクリーン キーボードが表示されている間に有効になります。 これにより、開発中にさまざまな設定値の組み合わせを簡単に試すことができ、その結果の変化をリアルタイムに確認できます。 設定がすぐに反映されない場合は、キーボード UI の変更を確認するためにデバイスを再起動する必要があります。
キーボードの高さ
既定では、タッチ キーボードは画面の下部 45% の高さを使用します。 しかし、デバイスのサイズと解像度によっては、これが大きすぎたり小さすぎたりする場合があります。 この高さは、画面の高さの最大 3 分の 2 まで調整できます。 範囲外の値は、範囲内に固定されます。 これは浮動小数点値で指定されているため、ピクセル レベルの精度で指定できます。 パーセンテージを算出するには、以下の式を適用します。
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
) である必要があります。
decimal_point DWord (REG_DWORD
) を使用すると、パーセンテージが整数の場合でも動作しません。
その他の基本設定
残りの基本設定は、Preferences サブキーにある String 値です。
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 | 「広い; 狭い; フル」 | モード ドロップダウン メニューに表示されるモードの順序 (左から右へ) (有効な場合) |
SettingsMenuKey_Collapsed | "0" | モードのドロップダウン メニューを非表示にします。 モードが 1 つしか有効になっていない場合は、これを「1」に設定します。 |
Paste_Disabled | "0" | 「0」を指定すると、[貼り付け] ボタンが表示されます。「1」を指定すると、非表示になります。 変更は再起動後に有効になります。 |
CloseButton_Disabled | "0" | "0" は [閉じる] ボタンを示します。"1" は [閉じる] ボタンを非表示にします。 変更は再起動後に有効になります。 |
EmojiKeyEnabled | "0" | 「0」を指定すると、絵文字キーが非表示になります。「1」を指定すると表示され、ユーザーが絵文字を入力できるようになります。 |
注意
ディクテーション モードを使用するには、音声入力デバイスだけでなく、選択した入力言語の音声パッケージがインストールされている必要があります。 一致する音声パッケージがインストールされていない場合、ディクテーション ボタンは表示されません。
すべてのイメージには、en-US の音声言語が含まれています。 その他の音声パッケージは、オプション機能としてインストールします。 IoT 機能の詳細は、IoT Core の機能一覧に関するページと、IoT Core の製造ガイドのページを参照してください。
たとえば、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"